Skip to main content

NGINX Ingress Deployment

Edge mode for Azure. Uses the cluster ingress-nginx controller and a single Ingress resource (bh-ingress).

Reference release: controller v1.15.1 · Helm chart 4.15.1kubernetes/ingress-nginx releases

note

On Azure, BigHammer reference deployments use nginx Ingress. Gateway API with Envoy is documented for GCP; Azure customers may adopt Gateway API separately if required by policy.

When to use

  • Standard BigHammer on AKS
  • Simpler single-Ingress pattern (no Gateway API CRDs)
  • Migration path from on-premises nginx-based setups

Install ingress-nginx on AKS

Install from the official Helm repository. Pin chart version 4.15.1 (deploys controller v1.15.1).

1. Add the Helm repository

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

Upstream install guide: ingress-nginx deploy documentation.

2. AKS values overlay

Create a values file (for example values-azure-ingress-nginx.yaml):

# values-azure-ingress-nginx.yaml — AKS LoadBalancer annotations

controller:
service:
annotations:
service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: /healthz
# service.beta.kubernetes.io/azure-load-balancer-internal: "true" # internal LB only
SettingPurpose
azure-load-balancer-health-probe-request-pathAzure LB health probe path for nginx /healthz
azure-load-balancer-internalSet "true" for internal-only ingress (private cluster pattern)

3. Install or upgrade

helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \
--version 4.15.1 \
--namespace ingress-nginx \
--create-namespace \
-f values-azure-ingress-nginx.yaml

4. Verify controller

kubectl get pods -n ingress-nginx
kubectl get svc -n ingress-nginx

Wait until the controller Service has an EXTERNAL-IP (or internal IP for private LB) before pointing DNS or deploying the platform chart.


Network security

Ensure NSG / firewall rules allow:

PortSource
TCP 80, 443Your corporate CIDR or 0.0.0.0/0 per policy
TCP 10254 (health)Azure load balancer probe ranges

Without health probe configuration, the load balancer may show unhealthy backends.


Deploy platform chart (ingress mode)

After ingress-nginx is running, deploy bighammer with ingress enabled:

global:
ingress:
enabled: true

Full deploy steps: Platform Deployment.


TLS

Ingress uses global.ingress.tlsSecretName (default pattern: <env>-az-bighammer-tls). SSL/TLS options: TLS Options.


DNS

Point global.ingress.*HostName A records to the nginx Service EXTERNAL-IP:

kubectl get svc -n ingress-nginx
Hostname patternExample
UIui.<env>.<domain>
Catalog APIcatalog.<env>.<domain>
Keycloakkc.<env>.<domain>

Align hostnames with certificate SANs from TLS Options.


Troubleshooting

SymptomCheck
502 / no healthy backendsLB health probe path; pod readiness on /healthz
Certificate errorkubectl get secret <tlsSecretName> -n bh-control-plane
Wrong backendkubectl describe ingress bh-ingress -n bh-control-plane

TopicLink
TLSTLS Options
Cluster prep orderCluster preparation
GCP equivalentGCP NGINX Ingress
Azure equivalentAzure NGINX Ingress