NetBox Enterprise Helm - AWS EKS 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 Amazon EKS (Elastic Kubernetes Service).
Need the basics first? See Installation Guide for standard installation steps, or Prerequisites for system requirements.
Prerequisites
- AWS CLI configured with appropriate permissions
- kubectl installed and configured
- Helm 3.x installed
- jq for JSON processing
EKS Cluster Setup
# Install required tools
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Install Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Set default storage class
kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
NetBox Enterprise Installation
# Login to Replicated registry
echo "your-license-key" | docker login registry.replicated.com -u your-username --password-stdin
# Pull and push images to private registry (if using private registry)
docker pull registry.replicated.com/netbox-enterprise/beta/netbox-enterprise:1.11.4
docker tag registry.replicated.com/netbox-enterprise/beta/netbox-enterprise:1.11.4 your-registry.com/netbox-enterprise:1.11.4
docker push your-registry.com/netbox-enterprise:1.11.4
# Install NetBox Enterprise
helm install netbox-enterprise \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--version 1.11.4 \
--values values-production.yaml
# Get external IP
kubectl get svc netbox-enterprise-nginx-ingress-controller -w
AWS-Specific Configuration
EKS Values File Example
Create a values-eks.yaml
file with EKS-specific configurations:
# EKS-specific values
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/ssl-redirect: '443'
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-1:123456789012:certificate/abc123
persistence:
storageClass: gp2
size: 20Gi
postgresql:
enabled: false
externalDatabase:
type: postgresql
host: your-rds-endpoint.region.rds.amazonaws.com
port: 5432
database: netbox
username: netbox
existingSecret: netbox-db-secret
existingSecretPasswordKey: password
RDS Integration
If using AWS RDS for the database:
# Create database secret
kubectl create secret generic netbox-db-secret \
--from-literal=password="your-db-password"
# Update values file to use RDS
helm upgrade netbox-enterprise \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--version 1.11.4 \
--values values-eks.yaml
Next Steps
- Configure Private Registry if using a private 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