Ingress Nginx Operator
TOC
Overview
The Ingress Nginx Operator is provided to facilitate advanced management of Ingress-Nginx deployments.
This Operator streamlines the deployment, configuration, and maintenance processes of Ingress-Nginx instances. The operational architecture functions as follows: The Ingress-Nginx Operator continuously monitors Custom Resource of type ingressnginxes.ingress-nginx.alauda.io (IngressNginx) and automatically provisions corresponding Ingress-Nginx instances for each defined IngressNginx resource. This architecture enables direct manipulation of IngressNginx custom resources to govern Ingress-Nginx functionality and behavior.
Installation
- Navigate to
Administrator -> Marketplace -> OperatorHub - Locate the
Alauda build of Ingress NGINX Controllerand clickInstall
Configuration Via Web Console
We provide basic configuration options through the user interface, which will generate the corresponding YAML for you. For more complex configurations, you can edit the YAML directly.
After completing the Installation of Ingress Nginx Operator:
- Navigate to the
All Instancestab - Click
Create, then in the displayed dialog box, locate the IngressNginx Instance Type section and clickCreate
Configuration Via YAML
By default, the Ingress Nginx Operator deploys Ingress Nginx instances within the same namespace as the corresponding IngressNginx custom resource.
Ingress Sharding
By default, Ingress Nginx processes Ingress resources across all namespaces for ingresses that either explicitly specify its IngressClass name or do not specify any IngressClass. You can use .controller.scope.namespaceSelector to restrict an instance to specific namespaces. For example, the following IngressNginx resource demo-scope only processes ingresses in namespaces labeled cpaas.io/project=demo.
Creating IngressNginx Which Processes Ingress In All NS
Creating IngressNginx Which Processes Ingress In Specific NS
- format like
$LABLE_KEY=$LABLE_VALUE
Exposing via LoadBalancer
By default, the Ingress Controller is configured with a ClusterIP service type. To expose the Ingress Controller externally using a LoadBalancer service, apply the following configuration:
LoadBalancer Services require an external load balancer integration (cloud provider LB or MetalLB) to provision an external IP.
To specify LoadBalancer VIP when using MetalLB:
Advanced Controller Deployment Settings
Configure network mode, replicas, resource limits, and node selection:
SSL Passthrough
Enable SSL passthrough functionality:
With SSL passthrough, TLS terminates on the backend, so L7 features (e.g., request/response header manipulation, WAF, HTTP-to-HTTPS redirect, some auth flows) will not apply to that traffic at the controller.
IPv4 and IPv6 Dual-Stack Support
Additional Resources
The .spec field of the IngressNginx resource directly corresponds to the Helm chart values for Ingress Nginx. For additional configuration options, please refer to the official Ingress NGINX documentation.
Default Value Differences Compared to Official Chart
- By default, each IngressNginx instance creates an IngressClass with the name
$ns-$nameand controllerValueingress-nginx.cpaas.io/$ns-$name. These values can be customized using the.spec.ingressClassResource.nameand.spec.ingressClassResource.controllerValueparameters. - By default, the
.spec.controller.service.typeis set toClusterIP. - By default,
.spec.controller.watchIngressWithoutClassis set totrue, which means the controller will process Ingress resources that do not specify an IngressClass.