Skip to main content

Installation

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.

Table of Contents

  1. Quick Start - Get running fast
  2. Authentication & Registry Setup - Required first steps
  3. Standard Installation - Most common deployment
  4. Configuration Options - Customization
  5. Advanced Scenarios - Complex deployments
  6. Installation Verification - Confirm success
  7. Platform-Specific Notes - Cloud provider details
  8. Next Steps - What to do after installation

This guide covers the complete installation process for NetBox Enterprise using Helm on Kubernetes.

Installation Methods

Choose the installation method that best fits your environment:

Need help with configuration? See Values Guide for detailed configuration examples and patterns.

Quick Start

For a quick installation in a clean Kubernetes cluster, the chart's default values often work without modification:

# After authentication and pulling the values file (see steps below)
helm install netbox-enterprise \
oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise \
--namespace netbox-enterprise \
--create-namespace \
--values netbox-enterprise-values.yaml \
${CHART_VERSION:+--version $CHART_VERSION}

The chart includes everything needed for a functional deployment, including an NGINX Ingress Controller, databases, and all required components.

⚠️ Important: Before starting, ensure you meet all prerequisites.

  1. Verify deployment:
    kubectl get pods -n netbox-enterprise
    kubectl get ingress -n netbox-enterprise

Installation problems? See Troubleshooting - Installation Issues for common deployment problems.

Authentication & Registry Setup

NetBox Enterprise requires authentication to access the container registry and Helm chart. You'll need your USERNAME and LICENSE_ID provided by NetBox Labs.

Step 1: Set Authentication Variables

# Set your credentials
export USERNAME="your-email@company.com"
export LICENSE_ID="your-license-id-here"

# Optional: Set specific Helm chart version (leave empty for latest)
export CHART_VERSION="1.11.4" # or export CHART_VERSION="" for latest

# Verify they are set
echo "Username: $USERNAME"
echo "License ID: $LICENSE_ID"
echo "Chart Version: $CHART_VERSION"

Step 2: Log in to the Registries

# Log in to the Docker registry (for image pulls)
docker login proxy.enterprise.netboxlabs.com -u $USERNAME -p $LICENSE_ID

# Log in to the OCI registry for Helm charts
helm registry login registry.enterprise.netboxlabs.com -u $USERNAME -p $LICENSE_ID

Note: Docker images are pulled from proxy.enterprise.netboxlabs.com but authentication uses your LICENSE_ID

Step 3: Pull the Values File

You must pull the existing values file from the registry, which contains your license information and required configurations:

# Get default values
helm show values oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise \
${CHART_VERSION:+--version $CHART_VERSION} > netbox-enterprise-values.yaml

Important: Do not create a values file from scratch. The pulled values file contains critical license signatures and configurations required for the application to function correctly.

Standard Installation

This is the recommended approach for production deployments with custom configuration.

Step 1: Complete Authentication Setup

Follow the Authentication & Registry Setup steps above.

Step 2: Download Configuration Template

Download the configuration template for customization:

curl -O https://netboxlabs.com/docs/files/values-extra.yaml
vim values-extra.yaml

Step 3: Configure Your Values

Create a values-extra.yaml file with your customizations:

# Example production configuration
netbox:
ingress:
enabled: true
hosts:
- host: netbox.company.com
paths: [{ path: '/', pathType: 'Prefix' }]

For complete configuration examples, see Values Guide - Quick Configuration Reference.

Step 4: Install NetBox Enterprise

helm install netbox-enterprise \
oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise \
--values netbox-enterprise-values.yaml \
--values values-extra.yaml \
${CHART_VERSION:+--version $CHART_VERSION} \
--create-namespace \
--namespace netbox-enterprise

Installation failing? Check Troubleshooting - Installation Issues for common problems and solutions.

Installation Options

  • --wait: Wait until deployment is ready
  • --timeout 10m: Set timeout for installation
  • --dry-run: Preview without installing
  • --debug: Show debug information

Configuration Options

Basic Ingress Configuration

Configure ingress for your environment:

# Add to your values file
ingress:
enabled: true
className: 'nginx'
annotations:
cert-manager.io/cluster-issuer: 'letsencrypt-prod'
hosts:
- host: netbox.company.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: netbox-tls
hosts:
- netbox.company.com

Resource Configuration

For production deployments, configure appropriate resources:

netbox:
resources:
requests:
cpu: '1000m'
memory: '4Gi'
limits:
cpu: '4000m'
memory: '8Gi'

Advanced Scenarios

External Database Configuration

For production environments, you may want to use an external PostgreSQL database:

# External database configuration
netbox:
externalDatabase:
enabled: true
secretName: 'nbe-external-database-secret-netbox'
postgresql:
enabled: false

Preflight Checks

Before installation, you can run preflight checks:

# Run preflight checks
helm template ./netbox-enterprise-1.11.4.tgz | kubectl preflight -

Standard Installation with Custom Values

# Standard installation with custom values
helm install netbox-enterprise \
oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise \
--values netbox-enterprise-values.yaml \
--values values-extra.yaml \
--version 1.11.4 \
--create-namespace \
--namespace netbox-enterprise \
--wait \
--timeout 10m

Installation Verification

After installation, verify the deployment:

Check Pod Status

# Check all pods are running
kubectl get pods -n netbox-enterprise

# Check specific deployments
kubectl get deployment -n netbox-enterprise
kubectl get statefulset -n netbox-enterprise

Check Services and Ingress

# Check services
kubectl get svc -n netbox-enterprise

# Check ingress
kubectl get ingress -n netbox-enterprise

# Check endpoints
kubectl get endpoints -n netbox-enterprise

Access NetBox Enterprise

Retrieve the admin password:

kubectl -n netbox-enterprise get secret netbox-enterprise-secret-config -o jsonpath='{.data.password}' | base64 -d

Access the application:

# Port forward to access NetBox
kubectl port-forward -n netbox-enterprise svc/netbox-enterprise 8080:80

# Then visit http://your-netbox-instance:8080

Platform-Specific Notes

AWS EKS

For AWS EKS deployments:

# EKS-specific configuration
netbox:
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: 'nlb'

Azure AKS

For Azure AKS deployments:

# AKS-specific configuration
netbox:
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: 'true'

Google GKE

For Google GKE deployments:

# GKE-specific configuration
netbox:
service:
type: LoadBalancer
annotations:
cloud.google.com/load-balancer-type: 'Internal'

Default Login

Use the credentials configured in your values file:

  • Username: As configured in superuserUsername (default: admin)
  • Password: Retrieved from the secret

To retrieve the admin password:

kubectl -n netbox-enterprise get secret netbox-enterprise-secret-config -o jsonpath='{.data.password}' | base64 -d

Private Registry Installation

For environments with restricted internet access, follow these steps:

Step 1: Mirror Images to Private Registry

Download the image mirroring script (optional):

curl -O https://netboxlabs.com/docs/files/private-registry.sh
chmod +x private-registry.sh

Manual Process (Complete Command List)

Set your private registry URL:

export MY_REGISTRY="mycompany.jfrog.io/nbe"

Pull all required images from NetBox Labs registries:

# Core NetBox Enterprise images
docker pull proxy.enterprise.netboxlabs.com/proxy/netbox-enterprise/ghcr.io/netboxlabs/nbe-core:4.2.9_main-191
docker pull proxy.enterprise.netboxlabs.com/proxy/netbox-enterprise/ghcr.io/netboxlabs/nbe-worker:4.2.9_main-191

# Additional required images would be listed here...

Tag and push all images to your private registry:

# Core NetBox Enterprise images
docker tag proxy.enterprise.netboxlabs.com/proxy/netbox-enterprise/ghcr.io/netboxlabs/nbe-core:4.2.9_main-191 $MY_REGISTRY/netbox-enterprise/nbe-core:4.2.9_main-191
docker push $MY_REGISTRY/netbox-enterprise/nbe-core:4.2.9_main-191

# Additional tagging and pushing commands would be listed here...

Alternative: Using the Script

For automated processing, you can use the provided script:

# Use the script to automate the mirroring process
./private-registry.sh $MY_REGISTRY > image-mirror-commands.sh
chmod +x image-mirror-commands.sh
./image-mirror-commands.sh

Step 2: Configure Private Registry Values

global:
imageRegistry: 'registry.company.com/netbox'
imagePullSecrets:
- name: 'registry-credentials'

For complete private registry setup, see Prerequisites - Private Registry Requirements.

Step 3: Install with Private Registry

# Download Helm charts for offline installation
# Option 1: Set version variable (leave empty for latest)
export CHART_VERSION="1.11.4" # or export CHART_VERSION="" for latest

helm pull oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise ${CHART_VERSION:+--version $CHART_VERSION}

# Install with private registry configuration
helm install netbox-enterprise ./netbox-enterprise-${CHART_VERSION:-latest}.tgz \
--values netbox-enterprise-values.yaml \
--values values-extra.yaml \
--values my-private-registry.yaml \
--create-namespace \
--namespace netbox-enterprise

Conditional Version Usage Explained

The ${CHART_VERSION:+--version $CHART_VERSION} syntax works as follows:

# When CHART_VERSION is set and non-empty:
export CHART_VERSION="1.11.4"
# Expands to: helm pull oci://registry... --version 1.11.4

# When CHART_VERSION is empty or unset:
export CHART_VERSION=""
# Expands to: helm pull oci://registry... (no --version flag)

Alternative approaches:

# Using a function
pull_chart() {
local version="$1"
if [[ -n "$version" ]]; then
helm pull oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise --version "$version"
else
helm pull oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise
fi
}

# Usage: pull_chart "1.11.4" or pull_chart ""

# Using conditional command construction
VERSION_ARG=""
if [[ -n "$CHART_VERSION" ]]; then
VERSION_ARG="--version $CHART_VERSION"
fi
helm pull oci://registry.enterprise.netboxlabs.com/netbox-enterprise/beta/netbox-enterprise $VERSION_ARG

Next Steps

After successful installation, continue with:

  1. Values Guide - Configuration reference
  2. Operations - Backup, upgrade, and scaling procedures
  3. Troubleshooting - Common issues and solutions

Complete Installation Guide

  1. Overview - Architecture and approach
  2. Prerequisites - System requirements
  3. Installation - Installation procedures
  4. Values Guide - Configuration reference
  5. Operations - Backup and maintenance
  6. Troubleshooting - Problem resolution
Related Topics