# ingress-nginx

**注意**：该版本只适用于集群版本>=1.22.0。1.18.0及以下版本集群请使用`ack-ingress-nginx`。
使用时，请注意更改参数中的`controller.ingressClassResource.name`和`controller.ingressClassResource.controllerValue`为唯一值。

**注意**：如果您需要删除service携带的默认annotation（如`service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type`等），请将其设置为`null`，而不是直接从参数中删除。

## 发布日志

| 镜像版本              | Chart 版本 | 变更时间        | 变更内容                                                                                                                                                       |
|-------------------|----------|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `v1.9.3-aliyun.1` | `4.0.19` | 2024年7月24日  | 默认关闭在注解中添加snippet的功能;加入--enable-annotation-validation参数，默认开启注解内容校验，缓解CVE-2023-5044。               |
| `v1.8.0-aliyun.1` | `4.0.18` | 2023年10月24日 | 移除service默认参数中的`service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type`注解。                                                             |
| `v1.8.0-aliyun.1` | `4.0.17` | 2023年6月20日  | **仅支持1.22及以上集群。** 升级Alpine镜像版本为1.18；添加strict-validate-path-type配置项，进行严格路径校验（当前默认关闭；修复CVE-2023-28322、CVE-2023-2650等漏洞                                       |
| `v1.2.1-aliyun.1` | `4.0.16` | 2022年8月30日  | 部署到边缘节点池时，默认服务类型修改为`NodePort`                                                                                                                              |
| `v1.2.1-aliyun.1` | `4.0.15` | 2022年7月11日  | 删除Nginx中的`alias`和`root`指令，减少安全风险；修复若干稳定性问题。                                                                                                                |
| `v1.2.0-aliyun.1` | `4.0.14` | 2022年5月30日  | 添加并默认开启Ingress对象深度检测功能，阻止包含敏感字段的Ingress的配置写入。修复CVE-2021-25745；修复若干稳定性问题                                                                                    |
| `v1.1.2-aliyun.2` | `4.0.13` | 2022年4月15日  | 正式支持边缘集群                                                                                                                                                   |
| `v1.1.2-aliyun.2` | `4.0.12` | 2022年4月12日  | 修复 `cors-allow-origin` 配置错误时导致 controller 崩溃问题；修复Webhook检查不属于同一IngressClass的Ingress资源问题；修复使用hostNetwork时，initContainer会更改节点内核参数的问题; 删除 PodDisruptionBudget |
| `v1.1.0-aliyun.2` | `4.0.11` | 2022年3月18日  | 支持边缘集群；修复同一命名空间下多个Ingress Controller选主冲突的问题                                                                                                                |
| `v1.1.0-aliyun.2` | `4.0.10` | 2022年01月12日 | 升级AHAS Sentinel插件；使用 Protobuf 协议与 API Server 通信                                                                                                            |
| `v1.1.0-aliyun.1` | `4.0.10` | 2021年12月17日 | 使用 networking v1 Ingress 资源，支持 1.22 以上集群                                                                                                                   |

更多变更详情，请见 [Nginx Ingress Controller组件发布记录](https://help.aliyun.com/document_detail/160658.html)

## 主要参数说明

| **参数**                                          | **描述**                                                                                                                                                                           |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| controller.image.repository                     | ingress-nginx镜像地址。                                                                                                                                                               |
| controller.image.tag                            | ingress-nginx镜像版本，请参见[Nginx Ingress Controller](https://help.aliyun.com/document_detail/160658.html#concept-2461414)。                                                            |
| controller.ingressClassResource.name            | 设置Ingress Controller所对应的IngressClass的名称。**同一个集群中不同套Ingress Controller创建的IngressClass名称必须唯一，且不能设置为nginx关键字**（nginx是集群默认Ingress Controller的监听标识）。                                  |
| controller.ingressClassResource.controllerValue | 设置Ingress Controller所对应的Controller Class。**同一个集群中不同套Ingress Controller创建的Controller Class必须唯一，且不能设置为k8s.io/ingress-nginx关键字**（k8s.io/ingress-nginx是集群默认Ingress Controller的监听标识）。 |
| controller.replicaCount                         | 设置该Ingress Controller Pod的副本数。                                                                                                                                                   |
| controller.service.enabled                      | 是否启用SLB访问（包括公网和私网）。                                                                                                                                                              |
| controller.service.external.enabled             | 是否开启公网SLB访问，不需要开启则设置为false。                                                                                                                                                      |
| controller.service.internal.enabled             | 是否开启私网SLB访问，需要开启则设置为true。                                                                                                                                                        |
| controller.kind                                 | 设置IngressController部署形态，可选值：Deployment和DaemonSet。                                                                                                                                |
| controller.electionID                           | 选主时使用的ID，用于更新Ingress端点状态。若通过应用市场部署多套Nginx Ingress Controller至同一命名空间下，需要将electionID设置为不同的值，避免选主冲突。                                                                                |
| controller.metrics.enabled                      | 是否开启ingress-nginx的metrics。                                                                                                                                                       |
| controller.metrics.serviceMonitor.enabled       | 是否开启serviceMonitor，配置抓取规则。建议开启ingress-nginx的metrics后，同时开启此选项，以此来自动配置Prometheus的抓取规则。                                                                                             |

关于其它参数的说明，请见对应参数上方的注释。
