ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ingress-nginx v1.8.1 发布解读:Helm loadBalancerClass、KEDA fallback 与镜像变更全解析

ingress-nginx v1.8.1 发布解读:Helm loadBalancerClass、KEDA fallback 与镜像变更全解析 ingress-nginx v1.8.1 发布解读Helm loadBalancerClass、KEDA fallback 与镜像变更全解析【免费下载链接】ingress-nginxIngress NGINX Controller for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx导读本篇文章基于 ingress-nginx 官方仓库的 controller-1.8.1 变更日志对 v1.8.1 这个补丁版本进行深度解读。v1.8.1 是继 v1.8.0 之后的一个小版本迭代主要包含两个对用户有实际影响的 Helm 功能增强controller.service.loadBalancerClass与controller.service.internal.loadBalancerClass支持、KEDA ScaledObject fallback 配置、一处 gRPC:authority请求头修复、镜像 tag 回退修正以及一批 Go 依赖与 CI 依赖升级。读完本文你将掌握如何在 v1.8.1 及后续版本中通过 Helm values 为云厂商自定义负载均衡器实现、为 KEDA 弹性伸缩配置降级保护以及如何理解镜像摘要digest与 tag 之间的关系。v1.8.1 版本概览与镜像清单v1.8.1 属于补丁版本Patch Release对应的 Helm Chart 版本为 4.7.1可在 helm-chart-4.7.1.md 中核对。该版本随附两个正式发布的控制器镜像镜像完整引用含 SHA256 摘要标准控制器registry.k8s.io/ingress-nginx/controller:v1.8.1sha256:e5c4824e7375fcf2a393e1c03c293b69759af37a9ca6abdb91b13d78a93da8bdchroot 控制器registry.k8s.io/ingress-nginx/controller-chroot:v1.8.1sha256:e0d4121e3c5e39de9122e55e331a32d5ebf8d4d257227cb93ab54a1b912a7627关于 digest 的使用说明上述sha256:...形式的镜像引用将镜像与内容摘要强绑定。只要镜像内容发生变化即使 tag 仍为v1.8.1digest 也会改变。在变更日志中同时给出 tag 与 digest便于复现环境、保证供应链可审计性。仓库根目录下的 TAG 文件记录了当前代码库所对应的发布版本可作为版本核对依据。核心功能变更解析1. Helm新增 loadBalancerClass 支持#9562v1.8.1 中最值得关注的用户侧功能是feat(helm): Add loadBalancerClass (#9562)。该特性为控制器对外与对内的两类 Service 均新增了loadBalancerClass字段使控制器 Service 可以使用 Kubernetes 1.24 引入的spec.loadBalancerClass机制选择云厂商默认实现之外的自定义负载均衡器。该变更在 Helm Chart 中的落地体现在两处模板controller-service.yaml对外 Service{{- if .Values.controller.service.loadBalancerClass }} loadBalancerClass: {{ .Values.controller.service.loadBalancerClass }} {{- end }}controller-service-internal.yaml内部 Service通过--enable-*-internal-service或对应 values 开启{{- if .Values.controller.service.internal.loadBalancerClass }} loadBalancerClass: {{ .Values.controller.service.internal.loadBalancerClass }} {{- end }}对应的 values 默认值在 values.yaml对外与 values.yaml对内中均为空字符串即默认不启用保持与云厂商默认负载均衡行为一致。Helm Chart 的 README 参数表README.md 与 README.md对两个参数的定义是用于让云厂商选择非默认的负载均衡器实现。典型使用场景在 AWS 上使用自建或第三方 Load Balancer Controller如 AWS Load Balancer Controller 的 Gateway/自定义 LB 场景或在支持loadBalancerClass的多 LB 实现的云环境中通过以下 values 指定实现类controller: service: loadBalancerClass: example.com/my-lb-class internal: loadBalancerClass: example.com/my-internal-lb-class关联修复Fix loadBalancerClass value (#10139)与文档修正Update typo in docs for lb scheme (#10117)说明该特性在上线过程中同步修正了 values 取值与文档拼写问题使用时应以 Chart 4.7.1 及以后版本的 values.yaml 为准。2. KEDA 弹性伸缩新增 fallback 配置支持#9993另一项对弹性伸缩用户有实际意义的新增是add support for keda fallback settings (#9993)。KEDA 的fallback机制用于在指标触发器失效如指标服务不可达时将副本数回退到指定的兜底值避免缩容到 0 导致服务中断。该特性落地于 controller-keda.yaml{{- with .Values.controller.keda.fallback }} fallback: failureThreshold: {{ .failureThreshold | default 3 }} replicas: {{ .replicas | default $.Values.controller.keda.maxReplicas }} {{- end }}默认值在 values.yaml 中以注释形式给出示范# fallback: # failureThreshold: 3 # replicas: 11配置要点failureThreshold触发器连续失败多少次后触发 fallback默认 3replicasfallback 时的目标副本数默认取controller.keda.maxReplicas。同时注意模板头部条件controller-keda.yamlKEDA ScaledObject 仅在controller.kind为Deployment、controller.keda.enabled为 true 且未启用controller.autoscaling时渲染三者互斥配置时需确保不会同时开启 HPA 与 KEDA。启用示例controller: kind: Deployment keda: enabled: true apiVersion: keda.sh/v1alpha1 minReplicas: 1 maxReplicas: 11 pollingInterval: 30 cooldownPeriod: 300 fallback: failureThreshold: 3 replicas: 3 triggers: - type: prometheus metadata: serverAddress: http://prometheus:9090 metricName: http_requests_total threshold: 100 query: sum(rate(http_requests_total{deploymentingress-nginx-controller}[2m]))3. gRPC从请求头设置 :authority#8912变更Set grpc :authority header from request header (#8912)修复了 gRPC 转发时的:authority伪头pseudo-header设置问题。在 nginx 中gRPC 上游转发使用grpc_set_header而非普通的proxy_set_header二者语法不同。这一区分在源码中有明确实现internal/ingress/controller/template/template.go中的proxySetHeader函数template.go会根据 location 的BackendProtocol判断协议if location.BackendProtocol grpcProtocol || location.BackendProtocol grpcsProtocol { return grpc_set_header } return proxy_set_header对应的模板测试 template_test.go 也验证了 gRPC 场景下应输出grpc_set_header。该修复确保在backend-protocol: GRPC/GRPCS的 Ingress 上请求的:authority能正确从原始请求头继承避免 gRPC 路由或服务端校验失败。使用 gRPC 服务的用户升级到 v1.8.1 后应关注此行为变化可参考 gRPC 使用示例。4. 镜像与构建baseimage 回退、distroless OTEL initchanged to updated baseimage and reverted tag (#10143)更新了控制器基础镜像base image并将镜像 tag 回退以匹配 baseimage 的版本保证镜像 digest 与 tag 语义一致。add distroless otel init (#10035)为 distroless非 chroot镜像形态补充 OpenTelemetryOTel初始化逻辑配合 opentelemetry 使用指南 使用。行为修正与其他变更v1.8.1 还包含若干行为修正其中有两处涉及 nginx 配置生成值得说明Mirror 注解相关的修复#9889 与 #10089Fix mirror-target values without path separator and port (#9889)修正了nginx.ingress.kubernetes.io/mirror-target注解中「无路径分隔符 带端口」组合的解析问题。镜像注解的解析逻辑位于 internal/ingress/annotations/mirror/main.go当未显式设置mirror-host时会从mirror-target拆解出主机名作为 Host 头此次修复保证形如https://mirror.example.com:8443无路径但有端口的目标地址能被正确解析。镜像功能涉及mirror-request-body、mirror-target、mirror-host三个注解main.go其中mirror-target与mirror-host被标注为高风险AnnotationRiskHigh见 main.go在开启注解风险分级annotations-risk-level的环境下需注意。chore: remove echo from canary tests (#10089)与chore: remove echo from snippet tests (#10110)则是测试框架层面的清理将 canary 与 snippet 的 e2e 测试从临时 echo 容器迁移到httpbun框架chore: move httpbun to be part of framework (#9955)。其他功能与文档变更feat: Oracle Cloud Infrastructure Flexible Load Balancer 配置升级 (#9961)针对 Oracle 云部署清单 更新了 Flexible Load Balancer 的创建与健康检查配置。fix: obsolete warnings (#10029)、unnecessary use of fmt.Sprint (S1039) (#10049)、chore: pkg imported more than once (#10048)代码静态检查与 lint 清理。ensured hpa mem spec before cpu spec (#10043)调整 HPA 模板中内存与 CPU 指标声明顺序。文档类docs: add lua testing documentation (#10060)新增 lua_tests.md 测试文档、docs: canary weighted deployments example (#10067)canary 加权部署示例、Update Internal Load Balancer Docs (#10062)、docs: add netlify configuration (#10073)、netlify: Only trigger preview when there are changes in docs (#10144)仅当文档目录变更时才触发 Netlify 预览构建、fix broken kubernetes.io/user-guide/ docs links (#10055)、docs: Updated the content of deploy/rbac.md (#10054)RBAC 文档、docs: change Dockerfile url ref main (#10087)。其他fix: add canary to sidebar in examples (#10068)、added note on dns for localtesting (#10021)、added helm show values example (#10019)、update test runner (#10125)。依赖升级清单v1.8.1 的 Go 依赖升级重点是 Golang 工具链的两次推进Upgrade to Golang 1.20.4 (#10016)与bump pinned golang to 1.20.5 (#10127)/golang 1.20.5 bump (#10120)最终固定到 Go 1.20.5。仓库根目录的 GOLANG_VERSION 文件记录了构建所用 Go 版本可用于复现构建环境。关键依赖升级汇总依赖升级内容google.golang.org/grpc1.55.0 → 1.56.0 → 1.56.1#10103 / #10134github.com/prometheus/client_golang1.15.1 → 1.16.0#10106golang.org/x/crypto0.9.0 → 0.10.0#10105github.com/stretchr/testify1.8.2 → 1.8.3 → 1.8.4#10005 / #10041github.com/emicklei/go-restful/v3升级到 3.10#10028dd-opentracing-cppDatadog tracing升级到 v1.3.7#10031CI 与供应链相关依赖同样有批量升级ossf/scorecard-action 2.1.3 → 2.2.0#10133OpenSSF Scorecard 安全评分、goreleaser/goreleaser-action 4.2.0 → 4.3.0#10101、docker/setup-buildx-action#10077 / #10102、docker/setup-qemu-action 2.1.0 → 2.2.0#10075、actions/checkout 3.5.2 → 3.5.3#10076、aquasecurity/trivy-action 0.10.0 → 0.11.2#10078Trivy 镜像漏洞扫描、actions/dependency-review-action#10042。升级建议与验证方法镜像升级生产环境建议使用带 digest 的完整镜像引用见上文镜像清单避免 tag 漂移带来的不可复现问题chroot 形态使用controller-chroot镜像。新功能验证启用loadBalancerClass后可通过kubectl get svc -n ingress-nginx -o yaml检查 Service 的spec.loadBalancerClass字段启用 KEDA fallback 后检查ScaledObject的spec.fallback字段并可通过临时停用指标源观察副本数是否回退到兜底值。gRPC 行为核对若生产环境存在 gRPC 流量升级后建议回归验证:authority头的透传确保后端按 host 路由的服务不受影响相关 e2e 覆盖可参见 e2e 测试框架。依赖与安全本版本将 Go 固定到 1.20.5并升级了 Trivy、Scorecard 等安全扫描工具链配合 SECURITY.md 中的漏洞报告流程可整体提升镜像供应链的可审计性。参考资源版本变更日志原文controller-1.8.1.md对应 Helm Chart 变更日志helm-chart-4.7.1.mdHelm 参数总表values.yaml 与 Chart README相关源码controller-keda.yaml、controller-service.yaml、mirror 注解解析、gRPC 头设置实现【免费下载链接】ingress-nginxIngress NGINX Controller for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表