NetBox Enterprise Helm - Azure AKS Deployment
Beta Notice: These Helm charts are currently in beta. While stable for testing and development environments, please thoroughly test in your specific environment before production deployment. For the most up-to-date information, please refer to the main documentation.
This guide provides detailed instructions for deploying NetBox Enterprise using Helm on Azure Kubernetes Service (AKS).
Need the basics first? See Installation Guide for standard installation steps, or Prerequisites for system requirements.
Prerequisites
- Azure CLI installed and configured
- kubectl installed
- Helm 3.x installed
- Azure subscription with appropriate permissions
AKS Cluster Setup
# Install Azure CLI (if not already installed)
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# Login to Azure
az login
# Install kubectl
az aks install-cli
# Get cluster credentials
az aks get-credentials --resource-group your-resource-group --name your-cluster-name
# Install Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
NetBox Enterprise Installation
# Login to Replicated registry
echo "your-license-key" | docker login registry.replicated.com -u your-username --password-stdin
# Install NetBox Enterprise
helm install netbox-enterprise \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--version 1.11.4 \
--values values-azure.yaml
# Get external IP
kubectl get svc netbox-enterprise-nginx-ingress-controller -w
Azure-Specific Configuration
AKS Values File Example
Create a values-aks.yaml
file with AKS-specific configurations:
# AKS-specific values
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/ssl-redirect: "true"
appgw.ingress.kubernetes.io/backend-protocol: "http"
persistence:
storageClass: managed-premium
size: 20Gi
postgresql:
enabled: false
externalDatabase:
type: postgresql
host: your-azure-database.postgres.database.azure.com
port: 5432
database: netbox
username: netbox@your-azure-database
existingSecret: netbox-db-secret
existingSecretPasswordKey: password
Azure Database for PostgreSQL Integration
If using Azure Database for PostgreSQL:
# Create database secret
kubectl create secret generic netbox-db-secret \
--from-literal=password="your-db-password"
# Update values file to use Azure Database
helm upgrade netbox-enterprise \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--version 1.11.4 \
--values values-aks.yaml
Azure Container Registry Integration
If using Azure Container Registry (ACR):
# Login to ACR
az acr login --name your-registry
# Create image pull secret
kubectl create secret docker-registry acr-secret \
--docker-server=your-registry.azurecr.io \
--docker-username=your-service-principal-id \
--docker-password=your-service-principal-password
# Update values file to use ACR
cat <<EOF > values-aks-acr.yaml
global:
imageRegistry: your-registry.azurecr.io
imagePullSecrets:
- acr-secret
EOF
helm upgrade netbox-enterprise \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--version 1.11.4 \
--values values-aks-acr.yaml
Azure-Specific Troubleshooting
Storage Class Issues
If you encounter storage class issues:
# Check available storage classes
kubectl get storageclass
# Set default storage class
kubectl patch storageclass managed-premium -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Network Policy Configuration
For network policies in AKS:
# Network policy for NetBox Enterprise
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: netbox-enterprise-network-policy
spec:
podSelector:
matchLabels:
app: netbox-enterprise
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: nginx-ingress
ports:
- protocol: TCP
port: 8080
egress:
- to:
- podSelector:
matchLabels:
app: postgresql
ports:
- protocol: TCP
port: 5432
Next Steps
- Configure Private Registry if using Azure Container Registry
- Set up External Database for production deployments
- Configure High Availability for production environments
- Set up CI/CD Pipeline for automated deployments
- Validate your deployment to ensure everything is working correctly