Nginx Ingress Controller

本文介绍Nginx Ingress Controller组件的信息、使用说明和变更记录。

组件介绍

Ingress基本概念

在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,几乎承载着集群内服务访问的所有流量。Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式。您可以通过Ingress资源来配置不同的转发规则,从而实现根据不同的规则设置访问集群内不同的Service所对应的后端Pod。

Nginx Ingress Controller工作原理

为了使得Nginx Ingress资源正常工作,集群中必须要有一个Nginx Ingress Controller来解析Nginx Ingress的转发规则。Nginx Ingress Controller收到请求,匹配Nginx Ingress转发规则转发到后端Service所对应的Pod,由Pod处理请求。Kubernetes中的Service、Nginx Ingress与Nginx Ingress Controller有着以下关系:

  • Service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。

  • Nginx Ingress是反向代理规则,用来规定HTTP/HTTPS请求应该被转发到哪个Service所对应的Pod上。例如根据请求中不同的Host和URL路径,让请求落到不同的Service所对应的Pod上。

  • Nginx Ingress Controller是Kubernetes集群中的一个组件,负责解析Nginx Ingress的反向代理规则。如果Nginx Ingress有增删改的变动,Nginx Ingress Controller会及时更新自己相应的转发规则,当Nginx Ingress Controller收到请求后就会根据这些规则将请求转发到对应Service的Pod上。

使用说明

变更记录

2024年08月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.10.4-aliyun.1

registry-cn-hangzhou.ack.aliyuncs.com/acs/aliyun-ingress-controller:v1.10.4-aliyun.1

2024年08月20日

更新至社区版本v1.10.4,修复CVE-2024-7646漏洞。关于漏洞详细信息,请参见Security issue

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生短暂中断。

2024年07月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.10.2-aliyun.1

registry-cn-hangzhou.ack.aliyuncs.com/acs/aliyun-ingress-controller:v1.10.2-aliyun.1

2024年07月24日

  • 支持通过OpenTelemetry的方式对接ARMS,不再支持OpenTracing。

  • 组件管理页面,支持配置--shutdown-grace-period--exclude-socket-metrics--default-ssl-certificate参数。

  • 支持使用NLB作为四层转发。

  • 镜像安全加固,修复CVE-2023-5363、CVE-2023-5678、CVE-2024-25062、CVE-2024-2511。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生短暂中断。

2023年10月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.9.3-aliyun.1

registry-cn-hangzhou.ack.aliyuncs.com/acs/aliyun-ingress-controller:v1.9.3-aliyun.1

2023年10月24日

重要

由于安全原因,自该版本起,组件将会默认禁用所有snippet注解(如nginx.ingress.kubernetes.io/configuration-snippet等)。

出于安全和稳定性风险考量,不建议您开启snippet注解功能。如需使用,请在充分评估风险后,通过在ConfigMapkube-system/nginx-configuration中添加allow-snippet-annotations: "true"手动开启。

  • 默认关闭在注解中添加snippet的功能。

  • 加入--enable-annotation-validation参数,默认开启注解内容校验,缓解CVE-2023-5044。

  • 修复CVE-2023-44487。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生短暂中断。

2023年09月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.8.2-aliyun.1

registry-cn-hangzhou.ack.aliyuncs.com/acs/aliyun-ingress-controller:v1.8.2-aliyun.1

2023年09月20日

  • 升级Golang版本为1.21.1。

  • 按Hostname反亲和调度由preferred改成required,即强制按节点反亲和调度。

  • 支持启用OpenTelemetry,具体操作请参见社区配置指导

  • 修复CVE-2022-48174、CVE-2023-2975、CVE-2023-3446、CVE-2023-3817等漏洞。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2023年06月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.8.0-aliyun.1

registry-cn-hangzhou.ack.aliyuncs.com/acs/aliyun-ingress-controller:v1.8.0-aliyun.1

2023年06月20日

  • 升级Alpine镜像版本为1.18。

  • 添加strict-validate-path-type配置项,进行严格路径校验(当前默认关闭)。更多信息,请参见社区ConfigMap配置说明

  • 修复CVE-2023-28322、CVE-2023-2650等漏洞。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2023年05月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.7.0-aliyun.1

registry-cn-hangzhou.ack.aliyuncs.com/acs/aliyun-ingress-controller:v1.7.0-aliyun.1

2023年05月05日

重要

该版本不再默认支持TLS v1.1和TLS v1.0的加密方式。如果Nginx Ingress Controller升级到此版本,请注意对自身业务的影响。关于该问题产生的更多影响,请参见set ssl-protocols config not working after v1.6.4。若您需要强制使用旧版本的TLS加密方式,请参见Ingress支持哪些SSL/TLS版本?进行配置。

  • Golang版本升级为1.20,Alpine镜像版本升级为1.17。

  • 修复nginx.ingress.kubernetes.io/canary-weight-total不生效的问题。

  • 修复当EndpointSlice中缺少就绪状态时发生Panic的问题。

  • 修复CVE-2023-27536、CVE-2023-0464等漏洞。

  • 去除EndpointSlice中以服务名称作为前缀检查的逻辑。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2023年03月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.6.4-aliyun.1

registry-cn-hangzhou.ack.aliyuncs.com/acs/aliyun-ingress-controller:v1.6.4-aliyun.1

2023年03月17日

  • 支持通过nginx.ingress.kubernetes.io/denylist-source-range设置IP黑名单。

  • 支持添加注解cluster-autoscaler.kubernetes.io/safe-to-evict: "false",阻止Pod所在节点被自动缩容。

  • 支持在组件管理页面开启或关闭日志。

  • 修复若干稳定性问题。

  • 修复CVE-2023-0286、CVE-2022-4450、CVE-2023-0215等漏洞。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2023年02月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.5.1-aliyun.1

registry-cn-hangzhou.ack.aliyuncs.com/acs/aliyun-ingress-controller:v1.5.1-aliyun.1

2023年02月10日

  • 1.5.1及以上版本的Nginx Ingress Controller仅支持1.22.0及以上版本的ACK集群。

  • 升级Nginx版本为1.21.6,升级Golang版本为1.19.2。

  • 更新AHAS Sentinel插件,支持use-mse开关。

  • 使用coordination.k8s.io/leases资源进行选主。

  • 使用EndpointSlice代替Endpoint进行端点发现。

  • 添加多个Prometheus metrics,弃用_ingress_upstream_latency_seconds。更多信息,请参见ingress-nginx

  • 支持使用debug-connections为IP范围开启Nginx Debug日志。

  • 修复CVE-2022-32149、CVE-2022-27664、CVE-2022-1996等漏洞。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2022年06月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.2.1-aliyun.1

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v1.2.1-aliyun.1

2022年06月28日

  • 删除Nginx中的aliasroot指令,减少安全风险。

  • 修复若干稳定性问题。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2022年05月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.2.0-aliyun.1

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v1.2.0-aliyun.1

2022年05月10日

  • 添加并默认开启Ingress对象深度检测功能,阻止包含敏感字段的Ingress的配置写入。该功能修复了CVE-2021-25745问题。

  • 修复若干稳定性问题。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2022年04月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.44.0.12-27ae67262-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.44.0.12-27ae67262-aliyun

2022年04月29日

  • 优化调度亲和性配置,允许集群所有节点作为弹性伸缩节点。

  • 修复启用AHAS Sentinel功能时,已知的安全漏洞问题。

  • 修复若干基础镜像漏洞。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2022年03月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.1.2-aliyun.2

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v1.1.2-aliyun.2

2022年03月21日

  • Nginx版本降级为1.19.9,与社区版本保持同步,以增强稳定性。

  • 修复cors-allow-origin配置错误时会导致Controller崩溃的问题。

  • 修复Webhook检查不属于同一IngressClass的Ingress资源时,导致同路径的Ingress资源冲突的问题。

  • 修复使用hostNetwork时,initContainer会更改节点内核参数的问题。

  • 修复CVE-2022-0778CVE-2022-23308

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2022年01月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.1.0-aliyun.2

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v1.1.0-aliyun.2

2022年01月12日

  • 升级AHAS Sentinel插件,由Java切换为C++模块,性能大幅优化与提升。

  • 使用Protobuf协议与API Server通信,以提升性能。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2021年12月

版本号

镜像地址

变更时间

变更内容

变更影响

v1.1.0-aliyun.1

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v1.1.0-aliyun.1

2021年12月17日

  • 1.X.X版本的Nginx Ingress Controller仅支持v1.20.0及以上的ACK集群,在旧版本集群上请使用0.X.X版本的Nginx Ingress Controller。

  • 使用networking v1 Ingress资源,以支持1.22及以上集群。

  • cors-allow-origin支持配置多个值,并在访问网站时根据Origin自动返回请求。

  • 支持Canary配置session affinity,且切换为默认行为。

  • 支持在没有指定Host的情况下配置Canary。

  • 加快Admission Webhook的执行速度。

  • 修复稳定性。

更多内容,请参见社区Changelog

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2021年10月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.44.0.9-7b9e93e7e-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.44.0.9-7b9e93e7e-aliyun

2021年10月28日

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2021年09月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.44.0.5-e66e17ee3-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.44.0.5-e66e17ee3-aliyun

2021年09月06日

  • 升级AHAS Sentinel插件。

    • 优化插件性能和稳定性。

    • 支持集群流控。

  • 修复CVE-2021-36159漏洞。更多信息,请参见CVE-2021-36159

  • 默认关闭kernel.core_uses_pid内核参数,防止coredump占用大量磁盘空间。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2021年06月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.44.0.3-8e83e7dc6-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.44.0.3-8e83e7dc6-aliyun

2021年06月01日

修复CVE-2021-23017漏洞。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2021年04月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.44.0.2-abf1c6fe4-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.44.0.2-abf1c6fe4-aliyun

2021年04月01日

兼容老版本(0.30及之前的版本)log_format中配置的the_real_ip字段。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2021年03月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.44.0.1-5e842447b-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.44.0.1-5e842447b-aliyun

2021年03月08日

  • 默认开启Validating Admission Webhook。更多信息,请参见How the NGINX Ingress controller works

  • 针对service-weight这个注解配置的值进行合法性检查。

  • 长连接和短连接性能提升20%~50%。

  • 支持OCSP stapling。

  • 升级LuaJIT到2.1.0版本。

  • 升级Nginx到1.19.6版本。

  • 升级Alpine镜像到3.13版本。

  • 修复OpenSSL CVE。

  • 默认启用TLS 1.3版本。

    说明

    HTTPS默认只支持TLS 1.2和TLS 1.3版本。如果需要支持TLS 1.0和TLS 1.1版本,请参见Ingress支持哪些SSL/TLS版本?

  • 要求Kubernetes版本为v1.16及以上。

  • 同步更新到社区0.44.0版本。更多信息,请参见社区Changelog

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2020年04月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.30.0.1-5f89cb606-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.30.0.1-5f89cb606-aliyun

2020年04月02日

  • 新增FastCGI Backend支持。

  • 默认启用Dynamic SSL Cert Update模式。

  • 新增流量Mirror配置支持。

  • 升级Nginx版本到1.17.8,OpenResty版本到1.15.8,更新基础镜像为Alpine。

  • 新增Ingress Validating Webhook支持。

  • 修复CVE-2018-16843、CVE-2018-16844、CVE-2019-9511、CVE-2019-9513和CVE-2019-9516漏洞。

  • 重大更新如下:

    • lua-resty-waf、session-cookie-hash、force-namespace-isolation等配置被废弃。

    • x-forwarded-prefix类型从boolean转换为string类型。

    • log-format中的the_real_ip变量在下个版本将被废弃,统一采用remote_addr替代。

  • 同步更新到社区0.30.0版本,更多详细变更记录请参见社区Changelog

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2019年10月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.22.0.5-552e0db-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.22.0.5-552e0db-aliyun

2019年10月24日

开启Server动态更新时支持泛域名、白名单和重定向配置。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2019年07月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.22.0.4-5a14d4b-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.22.0.4-5a14d4b-aliyun

2019年07月18日

优化灰度发布规则,支持Perl正则匹配方式。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2019年04月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.22.0.3-da10b7f-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.22.0.3-da10b7f-aliyun

2019年04月25日

  • 同步更新到社区0.22.0版本,变更记录请参见Ingress-Nginx

  • 开启动态更新时支持蓝绿发布和灰度发布机制。

  • 默认开启Nginx Upstream的动态更新特性。

  • 重大更新如下:rewrite-target注释采用capture group配置形式,配置方式请参见rewrite-target,平滑升级方式请参见Github

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2019年01月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.20.0.2-cc39f1b-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.20.0.2-cc39f1b-aliyun

2019年01月17日

  • 优化默认的Nginx Worker进程数量配置,防止过多Nginx进程占用宿主机资源。

  • 优化蓝绿发布和灰度发布时允许新老版本服务配置不同的服务端口号。

  • 解决灰度发布过程中,新版本服务后端无Active Pod时,Nginx配置测试失败的问题。

  • 修复因K8s API Server连接异常而导致Ingress Address端点不更新的问题。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。

2018年11月

版本号

镜像地址

变更时间

变更内容

变更影响

v0.20.0.1-4597ce2-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.20.0.1-4597ce2-aliyun

2018年11月29日

  • 同步更新到社区0.20.0版本,变更记录请参见社区

  • 升级Nginx版本到1.15.6,修复HTTP/2相关安全漏洞。

  • Path支持正则表达式配置。

  • 移除默认的default-http-backend服务,同时支持配置自定义默认后端服务。

  • 支持基于IP、User-Agent和Referer的黑名单配置。

  • 优化默认运行权限,剔除privileges运行权限。

  • 支持AJP协议。

建议在业务低峰期升级,变更过程中可能会导致已经建立的连接发生瞬断。