# NGINX Ingress控制器插件
#### 插件简介
Kubernetes通过kube-proxy服务实现了Service的对外发布及负载均衡，它的各种方式都是基于传输层实现的。在实际的互联网应用场景中，不仅要实现单纯的转发，还有更加细致的策略需求，如果使用真正的负载均衡器更会增加操作的灵活性和转发性能。
基于以上需求，Kubernetes引入了资源对象Ingress，Ingress为Service提供了可直接被集群外部访问的虚拟主机、负载均衡、SSL代理、HTTP路由等应用层转发功能。
Kubernetes官方发布了基于Nginx的Ingress控制器，CCE的NGINX Ingress控制器插件直接使用社区模板与镜像。Nginx Ingress控制器会将Ingress生成一段Nginx的配置，并将Nginx配置通过ConfigMap进行储存，这个配置会通过Kubernetes API写到Nginx的Pod中，然后完成Nginx的配置修改和更新，详细工作原理请参见[工作原理]。
开源社区地址：<https://github.com/kubernetes/ingress-nginx>
![](https://support.huaweicloud.com/usermanual-cce-autopilot/public_sys-resources/note_3.0-zh-cn.png)
- 安装该插件时，您可以通过"nginx配置参数"添加配置，此处的设置将会全局生效，该参数直接通过配置nginx.conf生成，将影响管理的全部Ingress，相关参数可通过[ConfigMaps](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/)查找，如果您配置的参数不包含在[ConfigMaps](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/)所列出的选项中将不会生效。
- 安装该插件后，您在CCE控制台[创建Ingress](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0390.html#cce_11_0390__zh-cn_topic_0000001199181202_section13728162710151)时可以选择对接Nginx控制器，并通过"注解"设置Nginx Ingress功能，支持的注解字段详情请参见[Annotations](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/)。
- 请勿手动修改和删除CCE自动创建的ELB和监听器，否则将出现工作负载异常；若您已经误修改或删除，请卸载Nginx Ingress插件后重装。
 
 #### 工作原理
Nginx Ingress由资源对象Ingress、Ingress控制器、Nginx三部分组成，Ingress控制器用以将Ingress资源实例组装成Nginx配置文件（nginx.conf），并重新加载Nginx使变更的配置生效。当它监听到Service中Pod变化时通过动态变更的方式实现Nginx上游服务器组配置的变更，无须重新加载Nginx进程。工作原理如[图1]所示。
- Ingress：一组基于域名或URL把请求转发到指定Service实例的访问规则，是Kubernetes的一种资源对象，Ingress实例被存储在对象存储服务etcd中，通过接口服务被实现增、删、改、查的操作。
- Ingress控制器（Ingress Controller）：用以实时监控资源对象Ingress、Service、End-point、Secret（主要是TLS证书和Key）、Node、ConfigMap的变化，自动对Nginx进行相应的操作。
- Nginx：实现具体的应用层负载均衡及访问控制。
图1Nginx Ingress工作原理   
![](https://support.huaweicloud.com/usermanual-cce-autopilot/zh-cn_image_0000001833098941.png "点击放大")
#### 使用约束
- 独享型ELB规格必须支持网络型（TCP/UDP），且网络类型必须支持私网（有私有IP地址）。
- nginx-ingress在升级时会预留10s的宽限时间，用于删除ELB后端的nginx-ingress控制器。
- nginx-ingress-controller的优雅退出时间为300s，若nginx-ingress升级时存在超过300s的长连接，长连接会被断开，出现服务短暂中断。
 
#### 前提条件
在创建容器工作负载前，您需要存在一个可用集群。若没有可用集群 ，请参照[购买CCE Autopilot集群](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0028.html)中的步骤创建。
 #### 安装插件
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"插件中心"，在右侧找到**NGINX Ingress控制器**插件，单击"安装"。
3. 在安装插件页面，设置"规格配置"。 
   您可根据需求调整插件实例数和资源配额。实例数为1时插件不具备高可用能力，当插件实例异常时可能导致插件功能无法正常使用，请谨慎选择。
   
   
4. 设置插件支持的"参数配置"。 
   - **负载均衡器**：支持对接独享型负载均衡实例，如果无可用实例，请先创建。负载均衡器需要拥有至少两个监听器配额，且端口 80 和 443 没有被监听器占用。
   
   - **开启准入校验** ：针对Ingress资源的准入控制，以确保控制器能够生成有效的配置。开启后将会对Nginx类型的Ingress资源配置做准入校验，若校验失败，请求将被拦截。关于准入校验详情，请参见[准入控制](https://kubernetes.github.io/ingress-nginx/e2e-tests/#admission-admission-controller)。
     ![](https://support.huaweicloud.com/usermanual-cce-autopilot/public_sys-resources/note_3.0-zh-cn.png)
     - 开启准入校验后，会在一定程度上影响Ingress资源的请求响应速度。
     
     - 仅2.4.1及以上版本的插件支持开启准入校验。
       
   
   - **nginx配置参数** ：配置nginx.conf文件，将影响管理的全部Ingress，相关参数可通过[ConfigMaps](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/)查找，如果您配置的参数不包含在[ConfigMaps](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/)所列出的选项中将不会生效。
     此处以设置keep-alive-requests参数为例，设置保持活动连接的最大请求数为100。
     ```
     {
         "keep-alive-requests": "100"
     }
     ```
     
   
   - **404服务**：默认使用插件自带的404服务。支持自定义404服务，填写"命名空间/服务名称"，如果服务不存在，插件会安装失败。
   
   
   
   
5. 单击"安装"。
 
#### 组件说明
表1nginx-ingress组件 
| 容器组件                                   | 说明                                     | 资源类型      |
|:---|:---|:---|
| cceaddon-nginx-ingress-controller        | 基于Nginx的Ingress控制器，为集群提供灵活的路由转发能力。    | Deployment |
| cceaddon-nginx-ingress-default-backend | Nginx的默认后端。返回"default backend - 404"。 | Deployment  |
| cceaddon-nginx-ingress-admission-create                               | 开启webhook功能后，创建证书用于webhook验证。                                     | Job                                   |
| cceaddon-nginx-ingress-admission-patch                              | 开启webhook功能后，将创建出的证书更新到webhook配置中。                                  | Job                                     |
   
#### 版本记录
表2NGINX Ingress控制器插件4.0.x版本发布记录 
| 插件版本   | 支持的集群版本                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 更新特性                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 社区版本                                                                                   |
|:---|:---|:---|:---|
| 4.0.12  | - v1.36  - v1.35  - v1.34  - v1.32  - v1.31   | - 支持Autopilot 1.36集群  - 修复CVE-2026-42055漏洞                                                                                                                                                                                                              | [1.14.5](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.14.5) |
| 4.0.10 | - v1.35  - v1.34  - v1.32  - v1.31                                                                                                                              | - 支持Autopilot 1.35集群  - 支持Autopilot 1.34集群；升级Nginx-ingress controller版本为v1.14.5  - 解决CVE-2026-42945、CVE-2026-9256、CVE-2026-49975漏洞   | [1.14.5](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.14.5) |
| 4.0.1  | - v1.32                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 支持Autopilot 1.32集群；升级Nginx-ingress controller版本为v1.12.1                                                                                                                                                                                                                                                                                                                                                                                                                                                     | [1.12.1](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.12.1)  |
   
表3NGINX Ingress控制器插件2.4.x版本发布记录 
| 插件版本    | 支持的集群版本                                                                                                                                                                                                                                                                                                                                                                                                | 更新特性                                                                                                                                                                                                                                                                                                                                                              | 社区版本                                                                                |
|:---|:---|:---|:---|
| 2.4.28 | - v1.31  - v1.28  - v1.27             | 升级Nginx-ingress controller版本为v1.11.5                                                                                                                                                                                                                                                                                                                             | [1.11.5](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.11.5) |
| 2.4.14    | - v1.31  - v1.28  - v1.27   | - 适配CCE Autopilot v1.31集群  - 解决[CVE-2024-7646](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-7646)漏洞   | [1.11.2](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.11.2) |
| 2.4.13    | - v1.28  - v1.27                                                                                                                                      | 基于社区版本v1.9.6                                                                                                                                                                                                                                                                                                                                                      | [1.9.6](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.9.6)   |
| 2.4.12  | - v1.28  - v1.27                                                                                                                                             | 修复部分问题                                                                                                                                                                                                                                                                                                                                                             | [1.9.3](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.9.3)   |
| 2.4.11   | - v1.28  - v1.27                                                                                                                                        | 修复部分问题                                                                                                                                                                                                                                                                                                                                                              | [1.9.3](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.9.3)   |
| 2.4.10 | - v1.28  - v1.27                                                                                                                                     | 修复部分问题                                                                                                                                                                                                                                                                                                                                                             | [1.9.3](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.9.3)   |
   
