Skip to main content
Enterprise

NetBox Enterprise Helm Deployment Examples

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 deployment automation examples and validation procedures for NetBox Enterprise Helm installations.

Prerequisites: Complete the Installation Guide, Prerequisites, and review Advanced Configuration before using these automation examples.

Installation Options and Verification

Helm Installation Options

When deploying NetBox Enterprise, these installation options can enhance your deployment process:

# Standard installation with options
helm install netbox-enterprise \
oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise \
--values netbox-enterprise-values.yaml \
--version 1.11.5 \
--create-namespace \
--namespace netbox-enterprise \
--wait \ # Wait until deployment is ready
--timeout 10m \ # Set timeout for installation
--debug # Show debug information

# Preview installation without executing
helm install netbox-enterprise \
oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise \
--values netbox-enterprise-values.yaml \
--version 1.11.5 \
--dry-run \ # Preview without installing
--debug # Show what would be created

Preflight Checks

Before installation, validate your configuration and cluster readiness:

# Run preflight checks on your configuration
helm template netbox-enterprise \
oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise \
--values netbox-enterprise-values.yaml \
--version 1.11.5 | kubectl apply --dry-run=client -f -

# Check cluster resources
kubectl top nodes
kubectl describe nodes | grep -A 5 "Allocated resources"

# Verify storage classes
kubectl get storageclass

# Check required secrets exist
kubectl get secrets -n netbox-enterprise

Post-Installation Verification

After deployment, systematically verify all components:

# Check pod status and readiness
kubectl get pods -n netbox-enterprise
kubectl get deployments -n netbox-enterprise
kubectl get statefulsets -n netbox-enterprise

# Verify all pods are running and ready
kubectl wait --for=condition=ready pod -l app.kubernetes.io/instance=netbox-enterprise -n netbox-enterprise --timeout=600s

# Check services and networking
kubectl get svc -n netbox-enterprise
kubectl get ingress -n netbox-enterprise
kubectl get endpoints -n netbox-enterprise

# Test database connectivity
kubectl exec -n netbox-enterprise deployment/netbox-enterprise -- \
python manage.py check --database default

# Test application health endpoint (internal container check)
kubectl exec -n netbox-enterprise deployment/netbox-enterprise -- \
curl -f http://127.0.0.1:8080/login/ -I

# Get admin credentials
echo "Admin Password: $(kubectl -n netbox-enterprise get secret netbox-enterprise-secret-config -o jsonpath='{.data.password}' | base64 -d)"

Deployment Automation

⚠️ Testing Required: These CI/CD pipeline examples are provided as templates and must be tested and customized for your specific environment. Update registry URLs, credentials, and deployment configurations before use.

CI/CD Pipeline Example (GitLab CI)

# .gitlab-ci.yml
stages:
- validate
- deploy

variables:
HELM_VERSION: "3.14.0"
KUBECTL_VERSION: "1.29.0"

validate_deployment:
stage: validate
script:
- helm lint ./helm-values/
- helm template netbox-enterprise oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise --values values-production.yaml --version 1.11.5 > /tmp/manifests.yaml
- kubectl --dry-run=client apply -f /tmp/manifests.yaml

deploy_staging:
stage: deploy
script:
- helm upgrade --install netbox-enterprise-staging \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--values values-staging.yaml \
--version 1.11.5 \
--namespace netbox-staging \
--create-namespace
environment:
name: staging
url: https://netbox-staging.example.com

deploy_production:
stage: deploy
script:
- helm upgrade --install netbox-enterprise \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--values values-production.yaml \
--version 1.11.5 \
--namespace netbox \
--create-namespace
environment:
name: production
url: https://netbox.example.com
when: manual
only:
- main

GitHub Actions Example

# .github/workflows/deploy.yml
name: Deploy NetBox Enterprise

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Helm
uses: azure/setup-helm@v3
with:
version: '3.14.0'

- name: Configure kubectl
uses: azure/k8s-set-context@v3
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}

- name: Login to Replicated
run: |
echo "${{ secrets.REPLICATED_PASSWORD }}" | helm registry login registry.replicated.com -u ${{ secrets.REPLICATED_USERNAME }} --password-stdin

- name: Deploy to staging
if: github.event_name == 'pull_request'
run: |
helm upgrade --install netbox-enterprise-staging \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--values values-staging.yaml \
--version 1.11.5 \
--namespace netbox-staging \
--create-namespace

- name: Deploy to production
if: github.ref == 'refs/heads/main'
run: |
helm upgrade --install netbox-enterprise \
oci://registry.replicated.com/netbox-enterprise/beta/netbox-enterprise \
--values values-production.yaml \
--version 1.11.5 \
--namespace netbox \
--create-namespace

Validation and Testing

Deployment Validation Script

⚠️ Testing Required: This validation script should be tested in your environment before use. Commands may need adjustment based on your specific deployment configuration.

#!/bin/bash
# validate-deployment.sh

set -e

NAMESPACE="netbox"
RELEASE_NAME="netbox-enterprise"

echo "Validating NetBox Enterprise deployment..."

# Check pod status
echo "Checking pod status..."
kubectl get pods -n $NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME

# Wait for pods to be ready
echo "Waiting for pods to be ready..."
kubectl wait --for=condition=ready pod -l app.kubernetes.io/instance=$RELEASE_NAME -n $NAMESPACE --timeout=600s

# Check service endpoints
echo "Checking service endpoints..."
kubectl get svc -n $NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME

# Test HTTP connectivity
echo "Testing HTTP connectivity..."
SERVICE_IP=$(kubectl get svc ${RELEASE_NAME}-nginx-ingress-controller -n $NAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
if curl -s -o /dev/null -w "%{http_code}" http://$SERVICE_IP | grep -q "200"; then
echo "✓ HTTP connectivity successful"
else
echo "✗ HTTP connectivity failed"
exit 1
fi

# Check database connectivity
echo "Checking database connectivity..."
kubectl exec -n $NAMESPACE deployment/$RELEASE_NAME-netbox -- python manage.py check --database default

echo "✓ Deployment validation complete!"

Next Steps

After completing your deployment:

  1. Operations Guide - Backup procedures, maintenance tasks, and upgrade procedures
  2. Advanced Configuration - Configuration reference and customization options
  3. NetBox Enterprise Troubleshooting - Common issues and diagnostic procedures

This deployment guide focuses on automation and validation procedures while leveraging the detailed configuration information available in the dedicated Advanced Configuration, External Database, and Private Registry guides.