Skip to main content

NGINX Ingress Controller

Purpose: HTTP/HTTPS ingress controller for Kubernetes

Version: v1.11.0 (Helm chart: ingress-nginx 4.10.0)

Namespace: ingress-nginx

Description

Routes external traffic to services based on ingress rules. Handles SSL termination, path-based routing, and load balancing.

Installation

Installed via ArgoCD from Helm chart: ingress-nginx/ingress-nginx

Configuration

Configuration file: config/dev/applications/nginx-ingress-values.yaml

controller:
service:
type: LoadBalancer
externalTrafficPolicy: Local
publishService:
enabled: false
metrics:
enabled: true
serviceMonitor:
enabled: true
release: kube-prometheus-stack
admissionWebhooks:
enabled: true
resources:
requests:
cpu: 100m
memory: 90Mi

defaultBackend:
enabled: false

IP Address

  • External IP: 10.0.0.211 (via MetalLB)
  • Service: ingress-nginx-controller
kubectl get svc -n ingress-nginx
# NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
# ingress-nginx-controller LoadBalancer 10.96.89.123 10.0.0.211 80:30081/TCP,443:30080/TCP

DNS

All ingress resources use domain: ssdk8s.xyz

Example Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-app
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- app.ssdk8s.xyz
secretName: app-tls
rules:
- host: app.ssdk8s.xyz
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80

Ports

PortService
80HTTP
443HTTPS
8443Admission Webhook

Metrics

Prometheus metrics enabled via ServiceMonitor:

  • Endpoint: ingress-nginx-controller-metrics:10254/metrics