NGINX Ingress Controller

Deploy and manage NGINX Ingress Controller on your Kubernetes cluster with our production-ready Helm chart. Get advanced load balancing, SSL/TLS termination, and traffic management capabilities out of the box.

Enterprise Features

Advanced Load Balancing

Enterprise-grade load balancing with support for multiple algorithms, session persistence, and dynamic reconfiguration

SSL/TLS Management

Automated SSL/TLS certificate handling with support for multiple providers and custom certificates

Traffic Management

Sophisticated traffic routing with support for path-based routing, header-based routing, and canary deployments

Security Features

Built-in security features including WAF, rate limiting, and IP whitelisting

Monitoring & Metrics

Prometheus metrics integration for real-time monitoring and alerting

High Availability

Support for multiple replicas with leader election for high availability setups

Installation Options

Choose your preferred installation method to get started with NGINX Ingress Controller:

Install from ArtifactHub

# Add the official nginx-ingress repository
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

# Pull the chart
helm pull ingress-nginx/ingress-nginx --untar

Push to Helmbay

Store your customized version in a private repository:

# Package the chart
helm package ./ingress-nginx

# Push to Helmbay (requires authentication)
helm push nginx-ingress-*.tgz oci://registry.helmbay.com/your-repo

Install from Helmbay

Deploy your customized version:

# Add Helmbay repository
helm repo add helmbay https://charts.helmbay.com
helm repo update

# Install NGINX Ingress Controller
helm install nginx-ingress helmbay/nginx-ingress \
  --namespace ingress-nginx \
  --create-namespace

Production-Ready Configurations

Start with our battle-tested configurations for different environments:

Production Setup

Recommended configuration for production environments

controller:
  kind: Deployment
  replicaCount: 3
  minAvailable: 2
  service:
    type: LoadBalancer
  resources:
    requests:
      cpu: 200m
      memory: 256Mi
    limits:
      cpu: 500m
      memory: 512Mi
  metrics:
    enabled: true
  config:
    use-forwarded-headers: "true"
    use-proxy-protocol: "false"
    enable-modsecurity: "true"

Development Setup

Lightweight configuration for development and testing

controller:
  kind: Deployment
  replicaCount: 1
  service:
    type: LoadBalancer
  resources:
    requests:
      cpu: 100m
      memory: 128Mi
  metrics:
    enabled: false

Enterprise Use Cases

Multi-Tenant Cluster

Secure multi-tenant setup with namespace isolation

controller:
  ingressClassResource:
    enabled: true
    default: true
  admissionWebhooks:
    enabled: true
  rbac:
    create: true
  scope:
    enabled: true
    namespace: ingress-nginx
  config:
    use-proxy-protocol: "true"
    proxy-body-size: "50m"
    client-header-buffer-size: "64k"

High-Traffic Production

Optimized for high-traffic production workloads

controller:
  replicaCount: 5
  autoscaling:
    enabled: true
    minReplicas: 3
    maxReplicas: 10
    targetCPUUtilizationPercentage: 75
  resources:
    requests:
      cpu: 500m
      memory: 512Mi
  config:
    use-gzip: "true"
    enable-brotli: "true"
    proxy-buffer-size: "16k"
    proxy-body-size: "100m"

KEDA Autoscaling

Implement advanced autoscaling with KEDA:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: nginx-ingress-scaler
  namespace: ingress-nginx
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-ingress-controller
  minReplicaCount: 2
  maxReplicaCount: 20
  triggers:
  - type: cpu
    metadata:
      type: Utilization
      value: "75"
  - type: memory
    metadata:
      type: Utilization
      value: "75"
  - type: prometheus
    metadata:
      serverAddress: http://prometheus-server.monitoring.svc.cluster.local
      metricName: nginx_ingress_controller_requests
      threshold: '100'
      query: sum(rate(nginx_ingress_controller_requests{namespace="ingress-nginx"}[2m]))

Install KEDA first:

helm repo add kedacore https://kedacore.github.io/charts
helm repo update
helm install keda kedacore/keda --namespace keda --create-namespace

Frequently Asked Questions

What is NGINX Ingress Controller?

NGINX Ingress Controller is a Kubernetes ingress controller that uses NGINX as a reverse proxy and load balancer. It provides advanced traffic routing, SSL/TLS termination, and load balancing capabilities for Kubernetes services.

How does it compare to other ingress controllers?

NGINX Ingress Controller stands out with its extensive feature set, proven reliability, and excellent performance. It offers advanced capabilities like request routing, TLS termination, and load balancing while maintaining compatibility with standard Kubernetes Ingress resources.

Can I customize SSL/TLS settings?

Yes, NGINX Ingress Controller supports extensive SSL/TLS customization, including custom certificates, multiple certificate chains, and integration with cert-manager for automated certificate management.

How do I monitor the ingress controller?

NGINX Ingress Controller provides Prometheus metrics out of the box. Enable the metrics.enabled setting in the Helm chart to expose these metrics, which can be scraped by Prometheus and visualized in Grafana.

Ready to Deploy NGINX Ingress?

Get started with Helmbay to customize and manage your NGINX Ingress Controller deployment. Store your configurations securely, collaborate with your team, and maintain version control of your Helm charts.