Ingress NGINX Controller v1.11.6 版本发布详解:镜像清单、变更全览与源码级解析
2026/9/13 4:35:09 网站建设 项目流程

Ingress NGINX Controller v1.11.6 版本发布详解:镜像清单、变更全览与源码级解析

【免费下载链接】ingress-nginxIngress NGINX Controller for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx

本指南围绕 Ingress NGINX Controller for Kubernetes 官方变更日志 controller-1.11.6.md 展开,系统梳理 v1.11.6 补丁版本的镜像发布信息、全部代码变更(含注解校验、文档、CI 与依赖升级)及其底层实现依据。读者将掌握该版本的确切镜像与摘要值、理解 "ssl-ciphers 注解放开下划线" 背后的正则校验逻辑,并了解变更日志的自动化生成机制,可用于后续版本升级评估与故障排查。

版本概览与镜像发布信息

controller-v1.11.6 是 ingress-nginx 1.11 稳定分支上的一个补丁版本(patch release),没有引入新的功能特性,核心目标是重建镜像、同步依赖、修正文档与 CI 流程。与所有 Controller 发布一样,本次同时提供两套镜像:

镜像完整引用(registry + tag + digest)
标准 Controllerregistry.k8s.io/ingress-nginx/controller:v1.11.6@sha256:4f04fad99f00e604ab488cf0945b4eaa2a93f603f97d2a45fc610ff0f3cad0f9
Chroot 版 Controllerregistry.k8s.io/ingress-nginx/controller-chroot:v1.11.6@sha256:596f8b9ae4773d3b00dfd65855561419c7e70ecb23569a7a2998b47e160b4f85

其中controller-chroot镜像对应于仓库内 rootfs/Dockerfile-chroot 与 rootfs/chroot.sh 所构建的 chroot 隔离运行形态,用于对进程文件系统视图做进一步隔离。

说明:当前仓库 HEAD 的 TAG 已演进到v1.15.0,charts/ingress-nginx/Chart.yaml 中 Helm Chart 的appVersion1.15.1。本文所述 v1.11.6 属于历史稳定版本,引用其镜像时应以固定 digest 为准,避免使用浮动 tag。

镜像清单的完整还原

变更日志主体由模板 changelog/controller.md.gotmpl 自动渲染生成。对照模板可知,"All changes" 一节由 PR 标题逐条填充,以下为该模板渲染后 v1.11.6 的全部 30 项变更,按类别归类如下。

镜像构建与重建(Images / Tests)

  • Images: Trigger controller build. (#13314):本次发布直接触发 Controller 镜像重建,最终产出上文两张镜像。
  • Images: Trigger other builds (1/2). (#13291)Images: Trigger other builds (2/2). (#13294):分批触发其余镜像(如 custom-error-pages、kube-webhook-certgen 等)的构建。
  • Images: Trigger NGINX build. (#13263)Images: Trigger NGINX build. (#13220):触发基础 NGINX 镜像重建。
  • Images: Bump NGINX to v0.3.3. (#13267)Images: BumpNGINX_BASEto v0.3.2. (#13223):将 NGINX 基础镜像分别升级至 v0.3.3 与 v0.3.2。仓库 NGINX_BASE 记录了该类基础镜像的精确引用,其格式为registry.k8s.io/ingress-nginx/nginx:v2.2.8@sha256:...;而 images/nginx/TAG 表明随后的 NGINX 构建镜像已迭代到v2.2.9
  • Images: Fix FromAsCasing. (#13126):修正 Dockerfile 中FROM指令的大小写写法(Docker 构建告警级规范问题)。
  • Images: Extract modules. (#13124):将镜像构建中的模块提取逻辑拆分,改善构建层复用。
  • Tests: Bump Test Runner to v1.3.3. (#13288)Tests: Bump Test Runner to v1.3.2. (#13234)Images: Trigger Test Runner build. (#13270)Images: Trigger Test Runner build. (#13228):E2E 测试运行器镜像升级与重建。
  • Tests & Docs: Bump images. (#13309):同步更新测试与文档中引用的镜像版本。

依赖与工具链升级(Go / CI)

  • Go: Bump to v1.24.2. (#13150):Go 工具链升级到 1.24.2。注意当前仓库 GOLANG_VERSION 已为1.26.1,属于后续版本迭代结果。
  • Go: Update dependencies. (#13284 / #13260 / #13247 / #13211 / #13151):多轮 Go 依赖批量更新。
  • Go: Fix Mage. (#13080):修复基于 Mage(仓库 magefiles/ 使用的 Go 构建工具)的构建问题。
  • CI: Update Kubernetes to v1.32.4. (#13256):CI 环境中的 Kubernetes 版本升级到 v1.32.4。
  • CI: Do not fail fast. (#13131):调整 CI 矩阵策略,避免某一作业失败导致整组失败。
  • Tests: Fallback toyq. (#13091):测试脚本在缺少特定工具时回退到yq

注解行为修正(Annotations)

  • Annotations: Allow ciphers with underscores. (#13141):这是本版本中唯一直接影响运行时行为的代码变更,详见下文专节解析。
  • Plugin: Improve error handling. (#13113):改进 kubectl 插件(cmd/plugin/)的错误处理逻辑。

文档与修复(Docs)

  • Docs: How to modify NLB TCP timeout. (#13250):新增在 docs/deploy/baremetal.md 中如何调整云厂商 NLB(Network Load Balancer)TCP 空闲超时的说明。
  • Docs: Improve formatting inmonitoring.md. (#13240):优化 docs/user-guide/monitoring.md 排版。
  • Docs: Enable metrics in manifest-based deployments. (#13236):补充基于裸 manifest 部署时启用 Prometheus 指标采集的步骤。
  • Docs: Fix link in installation instructions. (#13193):修复安装指引中的失效链接。
  • Docs: Fix OpenTelemetry listing. (#13108):修正 docs/user-guide/third-party-addons/opentelemetry.md 中的项目清单。

核心代码变更深度解析:允许带下划线的 SSL 密码套件

PR #13141 "Annotations: Allow ciphers with underscores" 是 v1.11.6 中唯一的代码逻辑变更,对应nginx.ingress.kubernetes.io/ssl-ciphers注解的输入校验放宽。

背景:注解如何落到 NGINX 配置

ssl-ciphers注解由 internal/ingress/annotations/sslcipher/main.go 解析。其内部使用一条正则表达式对用户输入做白名单校验:

// Should cover something like "ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP" // (?:@STRENGTH) is included twice so it can appear before or after @SECLEVEL=n var regexValidSSLCipher = regexp.MustCompile(`^(?:(?:[A-Za-z0-9!:+\-_])*(?:@STRENGTH)*(?:@SECLEVEL=[0-5])*(?:@STRENGTH)*)*$`)
sslCipherAnnotation: { Validator: parser.ValidateRegex(regexValidSSLCipher, true), Scope: parser.AnnotationScopeIngress, Risk: parser.AnnotationRiskLow, Documentation: `Using this annotation will set the ssl_ciphers directive at the server level. This configuration is active for all the paths in the host.`, },

从源码结构看,该正则允许的字符集为[A-Za-z0-9!:+\-_],即此前不允许出现下划线_。而 OpenSSL 1.1.1 引入的 TLS 1.3 密码套件名(如TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256TLS_AES_128_GCM_SHA256)恰好大量使用下划线。这意味着在 v1.11.6 之前,用户若试图在ssl-ciphers注解中显式书写 TLS 1.3 套件名,会触发正则校验失败、注解被拒绝;v1.11.6 通过放开下划线字符,使得这类配置可以正常通过校验并写入 NGINX 的ssl_ciphers指令。

单元测试的印证

internal/ingress/annotations/sslcipher/main_test.go 的表驱动测试完整覆盖了该行为:

  • 合法输入:OpenSSL 传统格式ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP@SECLEVEL=2/@SECLEVEL=3/@SECLEVEL=5组合、@STRENGTH前缀或后缀写法均被接受;
  • TLS 1.3 套件名:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256校验通过(预期结果expectErr: false);
  • 非法输入:含分号与路径分隔符的ALL:SOMETHING:;locationXPTO被拒绝(expectErr: true),防止注解注入恶意 NGINX 指令。

此外,同文件的Config结构体表明解析结果最终会携带SSLCiphersSSLPreferServerCiphers两个字段,后者由nginx.ingress.kubernetes.io/ssl-prefer-server-ciphers注解解析为on/off(对应 NGINX 的ssl_prefer_server_ciphers指令),两者均在 server 级生效、对该 host 下所有 path 起作用。

实际配置用法

在 docs/user-guide/nginx-configuration/annotations.md 的 "SSL ciphers" 一节中,官方给出了与测试用例一致的示例:

nginx.ingress.kubernetes.io/ssl-ciphers: "ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP"
nginx.ingress.kubernetes.io/ssl-prefer-server-ciphers: "true"

升级到 v1.11.6 后,还可按需加入 TLS 1.3 套件:

nginx.ingress.kubernetes.io/ssl-ciphers: "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"

需要提醒的是:该注解只作用于server(host)级别;若需要控制 Controller 与上游后端之间连接的密码套件,应使用nginx.ingress.kubernetes.io/proxy-ssl-ciphers(同一文档 annotations.md 的 "Backend certificate authentication" 一节中可查)。

依赖更新一览

v1.11.6 同时收编了一批来自 GitHub 的自动化依赖升级 PR:

依赖版本变化
actions/download-artifact4.2.1 → 4.3.0
actions 组2 次批量更新(#13281、#13174)
github.com/onsi/ginkgo/v22.23.3 → 2.23.4
go 组2 次跨目录更新(#13206、#13180)
github.com/prometheus/client_golang1.21.1 → 1.22.0(根模块与 images/custom-error-pages/rootfs 两处)
github/codeql-action3.28.14 → 3.28.15
golang.org/x/oauth20.28.0 → 0.29.0
github.com/fsnotify/fsnotify1.8.0 → 1.9.0
golang.org/x/crypto0.36.0 → 0.37.0
goreleaser/goreleaser-action6.2.1 → 6.3.0
golangci/golangci-lint-action6.5.2 → 7.0.0

其中prometheus/client_golang的升级直接关系 Controller 暴露的指标端点(见 internal/ingress/metric/ 与 docs/user-guide/monitoring.md),升级后 Prometheus 采集兼容性保持不变,但建议在发布验证时顺带检查指标抓取。

版本对比与升级建议

  • 本版本对应 Git 比较区间为controller-v1.11.5...controller-v1.11.6(变更日志末尾的 Full Changelog 链接指向该区间),是 1.11.x 系列内的常规补丁升级。
  • 唯一运行时行为变化是 ssl-ciphers 注解允许下划线字符,对绝大多数存量配置无破坏性影响,属于向后兼容的放宽;升级前应重点回归 HTTPS 服务的 TLS 握手行为。
  • 建议操作:升级后执行kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx确认 Controller 全部滚动到v1.11.6镜像;对涉及自定义ssl-ciphers注解的 Ingress 资源,可参照上文测试用例中的合法/非法样例做一次注解校验;同时关注 changelog/ 目录中后续 1.11.7、1.12.x 的变更,评估继续升级的节奏。

【免费下载链接】ingress-nginxIngress NGINX Controller for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询