Skip to main content

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

Related Topics