Ingress Nginx Operator 用于简化对 Ingress-Nginx 部署的高级管理。
该 Operator 简化了 Ingress-Nginx 实例的部署、配置和维护流程。其运行架构如下:Ingress-Nginx Operator 持续监控类型为 ingressnginxes.ingress-nginx.alauda.io(IngressNginx)的自定义资源,并自动为每个定义的 IngressNginx 资源创建对应的 Ingress-Nginx 实例。该架构允许直接操作 IngressNginx 自定义资源,以管理 Ingress-Nginx 的功能和行为。
Administrator -> Marketplace -> OperatorHubAlauda build of Ingress NGINX Controller 并点击 Install我们通过用户界面提供基础配置选项,会为您生成对应的 YAML。对于更复杂的配置,您可以直接编辑 YAML。
完成 Ingress Nginx Operator 安装后:
All Instances 标签页Create,在弹出的对话框中找到 IngressNginx 实例类型部分,点击 Create| 字段 | 说明 | YAML 路径 |
|---|---|---|
| Name | Ingress Nginx 实例名称 | .metadata.name |
| Namespace | Ingress Nginx 实例所在命名空间 | .metadata.namespace |
| Replica | Ingress Nginx 部署的副本数 | .spec.controller.replicaCount |
| Resources | Ingress Nginx 部署的资源请求和限制 | .spec.controller.resources |
| Service Type | Ingress Nginx 的服务类型 | .spec.controller.service.type |
| Ingress Scope | 控制处理哪些命名空间的 Ingress 资源 | .spec.controller.scope.namespaceSelector,详见 ingress-sharding |
默认情况下,Ingress Nginx Operator 会在与对应 IngressNginx 自定义资源相同的命名空间中部署 Ingress Nginx 实例。
默认情况下,Ingress Nginx 会处理所有命名空间中显式指定其 IngressClass 名称或未指定任何 IngressClass 的 Ingress 资源。您可以使用 .controller.scope.namespaceSelector 限制实例只处理特定命名空间。例如,下面的 IngressNginx 资源 demo-scope 只处理带有标签 cpaas.io/project=demo 的命名空间中的 ingress。
$LABLE_KEY=$LABLE_VALUE默认情况下,Ingress Controller 配置为 ClusterIP 服务类型。若需通过 LoadBalancer 服务将 Ingress Controller 暴露到外部,请应用以下配置:
LoadBalancer 服务需要外部负载均衡器集成(云提供商 LB 或 MetalLB)以分配外部 IP。
使用 MetalLB 指定 LoadBalancer 虚拟 IP:
配置网络模式、副本数、资源限制和节点选择:
启用 SSL 透传功能:
启用 SSL 透传后,TLS 会在后端终止,因此 L7 功能(如请求/响应头操作、WAF、HTTP 到 HTTPS 重定向、部分认证流程)不会应用于该流量。
IngressNginx 资源的 .spec 字段直接对应 Ingress Nginx 的 Helm chart 值。更多配置选项请参考 官方 Ingress NGINX 文档。
$ns-$name,controllerValue 为 ingress-nginx.cpaas.io/$ns-$name 的 IngressClass。可通过 .spec.ingressClassResource.name 和 .spec.ingressClassResource.controllerValue 参数自定义这些值。.spec.controller.service.type 设置为 ClusterIP。.spec.controller.watchIngressWithoutClass 设置为 true,表示控制器会处理未指定 IngressClass 的 Ingress 资源。