Skip to main content

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

Related Topics