Ingress NGINX Controller v1.12.5 版本解析:SSL 会话票据修复、NGINX 升级与工程化改进全览
Ingress NGINX Controller v1.12.5 版本解析SSL 会话票据修复、NGINX 升级与工程化改进全览【免费下载链接】ingress-nginxIngress NGINX Controller for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx本篇以 controller-1.12.5.md 变更清单为主线逐项拆解 Ingress NGINX Controller 补丁版本 v1.12.5 的核心修复、依赖升级与 CI/CD 改进并结合本仓库源码给出关键变更的实现依据。读完本文你将完整掌握该版本的安全与稳定性修复要点、镜像变更明细以及升级到 v1.12.5 前需要关注的配置与兼容性影响。版本概览与镜像信息controller-v1.12.5 是 Ingress NGINX Controller v1.12 系列中的一个补丁版本patch release紧随 controller-v1.12.4 发布主要包含 Bug 修复、镜像重建、依赖升级与工程化改进不引入破坏性的 API 变更适合 v1.12 系列用户平滑升级。该版本发布的官方镜像与 digest 如下镜像托管于registry.k8s.io镜像完整引用含 SHA256 digestController 主镜像registry.k8s.io/ingress-nginx/controller:v1.12.5sha256:f4a204a39ce99e7d297c54b02e64e421d872675c5ee29ab1b6edb62d4d69be5cController Chroot 镜像registry.k8s.io/ingress-nginx/controller-chroot:v1.12.5sha256:5bee417e81f5478b166e35b66b62824275fba150cb737adf665ba05c61ff4632controller-chroot镜像对应仓库根目录下的 rootfs/Dockerfile-chroot 构建产物其运行方式由 rootfs/chroot.sh 与 rootfs/nginx-chroot-wrapper.sh 支撑用于将 NGINX 进程限制在 chroot 环境中以强化隔离。本仓库当前目录下的镜像构建逻辑位于 images/控制器主程序版本信息可在 version/version.go 中查看。核心功能修复从源码看实现细节v1.12.5 包含两类值得重点关注的功能修复均与 HTTPS/TLS 场景和路由校验密切相关。1. SSL 会话票据路径修复#13668变更条目Controller: Fix SSL session ticket path修复了 SSL 会话票据session ticket密钥文件路径的处理问题。会话票据是 TLS 1.2/1.3 中用于恢复会话的关键机制密钥路径配置错误会导致重启后会话无法跨进程/跨实例复用。从源码结构看该功能由 ConfigMap 中的一组ssl-session-*配置项驱动定义在 internal/ingress/controller/config/config.go 中SSLSessionCache bool json:ssl-session-cache,omitempty SSLSessionCacheSize string json:ssl-session-cache-size,omitempty SSLSessionTickets bool json:ssl-session-tickets,omitempty SSLSessionTicketKey string json:ssl-session-ticket-key,omitempty SSLSessionTimeout string json:ssl-session-timeout,omitempty其默认值在同文件NewDefault()中给出SSLSessionCache默认为trueSSLSessionTickets默认为falseSSLSessionTimeout有默认时长SSLSessionTicketKey默认指向一个固定路径。这些配置最终渲染到 NGINX 配置模板 rootfs/etc/nginx/template/nginx.tmpl 中ssl_session_tickets {{ if $cfg.SSLSessionTickets }}on{{ else }}off{{ end }}; ssl_session_ticket_key /etc/ingress-controller/tickets.key;本次修复正是确保ssl_session_ticket_key解析出的路径正确、可读写避免因路径拼接或文件挂载问题导致 NGINX 启动失败或会话票据失效。v1.12.5 同时新增了ssl-session-*配置值的单元测试#13746Tests: Add ssl-session-* config values tests相关测试逻辑可参考 internal/ingress/controller/config/config.go 及 internal/ingress/controller/store/store_test.go 中对这些字段的断言。升级提示如果你在 ConfigMap 中自定义了ssl-session-ticket-key升级前请确认该路径对应的 Secret/挂载仍然有效如果使用默认配置则无需额外操作。2. 路径校验空指针修复#13682变更条目Controller: Fix nil pointer in path validation修复了 Ingress 路径校验过程中可能触发的空指针 panic。路径校验逻辑位于 internal/ingress/controller/controller.go、internal/ingress/controller/location.go 以及 internal/ingress/inspector/ 目录下如 rules.go、ingress.go。该修复针对某些缺失path字段或 path 列表为空的异常 Ingress 对象避免在校验阶段直接解引用空指针导致控制器崩溃。同类问题的防御性处理也体现在 internal/ingress/controller/checker.go 的配置校验流程中。如果你在生产环境中遇到过控制器周期性重启但日志中无明确报错的现象可优先关注此类边界输入问题。注解Annotations改进引用 auth proxy 请求头变更条目Annotations: Quote auth proxy headers#13709修复了外部认证代理external auth相关注解中请求头值的引用问题。该改动属于注解层对应源码位于 internal/ingress/annotations/authreq/ 与 internal/ingress/annotations/authreqglobal/。在 NGINX 配置模板中auth_request_set等指令生成的变量值若未加引号当值中包含空格或特殊字符时会被 NGINX 解释器误解析。该修复通过为 auth proxy 相关请求头值加引号避免生成非法配置。使用nginx.ingress.kubernetes.io/auth-url、nginx.ingress.kubernetes.io/auth-response-headers等注解的用户升级后应重新验证外部认证返回头的传递行为确保首尾空白与特殊字符处理符合预期。镜像与运行时升级NGINX、Go 与内存分配器Go 版本升级至 1.24.6#13720v1.12.5 将 Go 构建工具链从 1.24.5#13631升级到 1.24.6。当前仓库 GOLANG_VERSION 文件记录了控制器构建使用的 Go 版本控制器编译入口可参考 cmd/nginx/main.go 与 Makefile。Go 补丁版本主要包含编译器与标准库的 bug 修复和安全更新对使用者透明但建议在 CI 中同步锁定该版本。NGINX 基础镜像升级#13717、#13712变更条目Images: Bump NGINX to v1.3.1将控制器内置的 NGINX 构建升级到 v1.3.1。这里的 v1.3.1 是 ingress-nginx 自定义构建的 NGINX基于 OpenResty镜像版本号其构建脚本位于 images/nginx/rootfs/build.sh补丁位于 images/nginx/rootfs/patches/基础镜像信息记录在 images/nginx/TAG。NGINX 升级伴随 Lua 模块与 OpenSSL 等依赖的重新编译建议在升级后执行一轮 TLS 握手与 WebSocket 场景的回归测试。禁用 mimalloc 架构特定优化#13670变更条目NGINX: Disable mimallocs architecture specific optimizations涉及内存分配器 mimalloc 的构建配置。mimalloc 是微软开源的分配器被引入 NGINX 构建以优化内存分配性能。其版本与下载逻辑定义在 images/nginx/rootfs/build.sh 中# Check for recent changes: https://github.com/microsoft/mimalloc/compare/v2.2.4...main export MIMALOC_VERSIONv2.2.4本次修改禁用了 mimalloc 针对特定 CPU 架构如 AVX2 等指令集的优化编译选项原因通常是这些优化在部分容器运行时或非预期 CPU 环境下会触发非法指令illegal instruction导致 NGINX 崩溃。该改动提高了镜像在不同硬件平台上的兼容性属于稳健性修复。工程化与 CI/CD 改进Helm 单元测试目标helm-test#13660变更条目Make: Add helm-test target在根目录 Makefile 中新增了helm-test目标.PHONY: helm-test helm-test: ## Run helm unit tests. helm unittest charts/ingress-nginx --file tests/**/*_test.yaml该目标基于helm-unittest插件对 charts/ingress-nginx/tests/ 下的*_test.yaml断言文件执行渲染校验用于验证 Chart 模板在给定 values 下渲染出的 YAML 是否符合预期。这意味着提交 Chart 改动前可以在本地直接运行make helm-test完成快速回归无需启动真实集群。测试用例仓库中已有大量示例例如 controller-deployment_test.yaml、controller-configmap_test.yaml 等。Chart 推送 OCI 仓库#13696变更条目Chart: Push to OCI registry完善了 Helm Chart 的发布流程支持将 charts/ingress-nginx 推送至 OCI 兼容的镜像仓库。OCI 分发规范让 Helm Chart 可以像容器镜像一样通过helm pull oci://...拉取这在离线环境与私有仓库场景下尤其实用。Chart 元数据版本号、appVersion 等在 charts/ingress-nginx/Chart.yaml 中维护。Kube Webhook CertGen 升级与测试镜像刷新Chart: Bump Kube Webhook CertGen#13764升级了 admission webhook 证书生成工具 images/kube-webhook-certgen/该工具用于自动生成和轮换 internal/admission/controller/server.go 所需的 TLS 证书。Tests: Bump Test Runner to v1.4.1#13728与Tests Docs: Bump images#13763刷新了 e2e 测试运行镜像与测试依赖镜像相关脚本见 test/run-e2e-suite.sh 与 test/e2e/framework/。CI 基础设施与 Kubernetes 版本对齐CI: Update Kubernetes to v1.33.3#13632将 e2e 测试集群的 Kubernetes 版本对齐到 v1.33.3。CI: Update KIND to v1.33.2#13648同步更新 KINDKubernetes IN Docker对应配置文件 test/e2e/kind.yaml。Hack: Bump golangci-lint to v2.3.0#13656静态检查工具 golangci-lint 升级到 v2.3.0与 hack/verify-all.sh、hack/verify-golint.sh 等校验脚本配套使用。CI: Fix typo#13699与Images: Remove redundant ModSecurity-nginx patch#13748前者为 CI 脚本笔误修复后者移除了 ModSecurity 构建中冗余的补丁简化了 images/nginx/rootfs/patches/ 的维护。版本生命周期告别 v1.11#13616变更条目Bye bye, v1.11宣告 Ingress NGINX Controller v1.11 系列退出支持范围。这意味着后续安全修复与 backport 将只覆盖 v1.12 及更高版本。仍在运行 v1.11 的用户应规划升级到 v1.12.x或更新版本升级路径与注意事项可参考 docs/deploy/upgrade.md。文档质量与安全性改进Docs: Remove X-XSS-Protection header from hardening guide#13687从安全加固指南 docs/deploy/hardening-guide.md 中移除了X-XSS-Protection响应头建议。该头已被主流浏览器废弃继续设置不仅无效在某些场景下还可能引入安全风险如被用于 XSS 降级攻击。Docs: Use HTTPS for NGINX links#13664、Docs: Fix links and formatting in user guide#13662、Docs: Fix default config values and links#13739、Docs: Bump mkdocs to v9.6.16, fix links#13744集中修复了 docs/ 目录下的链接与格式问题并将文档构建工具链升级到 mkdocs v9.6.16见 mkdocs.yml 与 docs/requirements.txt同时修正了默认配置值的文档描述使其与 internal/ingress/controller/config/config.go 中的NewDefault()保持一致。Docs: Update prerequisites in getting-started.md#13658与Docs: Improve opentelemetry-trust-incoming-span#13637前者更新了开发者上手文档 docs/developer-guide/getting-started.md 的前置条件说明后者改进了 OpenTelemetrytrust-incoming-span配置项对应注解模块 internal/ingress/annotations/opentelemetry/的文档描述。依赖更新清单v1.12.5 同步合入了一批第三方依赖更新主要来自 Dependabot 自动 PRGitHub Actionsactions/download-artifact从 4.3.0 升至 5.0.0#13756github/codeql-action从 3.29.2 升至 3.29.5#13644、#13707另有 3 项 actions 组更新#13641、#13757。Go 依赖多个间接依赖通过Go: Update dependencies#13626、#13677、#13702、#13751批量升级涉及google.golang.org/grpc、golang.org/x/crypto等更早版本的具体升级明细见 controller-1.12.4.md。完整 Go 模块清单见仓库根目录 go.mod 与 go.sum。依赖更新均为向后兼容的补丁级升级不改变公开 API。但为稳妥起见建议升级后在测试环境运行一次 e2e 套件入口为 test/e2e.go再进入生产。升级建议与验证清单镜像替换将 Controller Deployment/DaemonSet 中的镜像更新为本文第一节列出的 v1.12.5 digest或使用registry.k8s.io/ingress-nginx/controller:v1.12.5标签。ConfigMap 检查若自定义了ssl-session-ticket-key、ssl-session-tickets等ssl-session-*配置字段定义见 config.go确认 Secret 与挂载路径仍然有效可结合make helm-testMakefile验证 Chart 渲染结果。功能回归重点回归外部认证auth-url相关注解、TLS 会话恢复、异常 Ingress 对象缺 path 字段等本次修复涉及的场景。版本对齐确认集群 Kubernetes 版本与 v1.33.x 兼容e2e 验证版本并将 Helm Chart 升级到与 v1.12.5 配套的 4.12.x 系列版本Chart 变更记录见 charts/ingress-nginx/changelog/。生命周期规划v1.11 已停止维护#13616仍在 v1.11 的集群应尽快按 docs/deploy/upgrade.md 升级。【免费下载链接】ingress-nginxIngress NGINX Controller for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →