大数跨境
0
0

Ingress NGINX停服倒计时4个月!你的业务还扛得住吗?

Ingress NGINX停服倒计时4个月!你的业务还扛得住吗? 云原生SRE
2025-12-04
7

欢迎点击下方👇关注我,记得星标哟~

文末会有重磅福利赠送

 

2025 年 11 月,Kubernetes SIG Network 与 Security Response Committee 宣布社区维护的 Ingress NGINX 将在 2026 年 3 月退休。届时将不再发布新版本、修复缺陷或提供安全更新。现有部署不会立即中断,相关安装包(镜像、Helm Chart)也将保留,但继续在生产中使用将面临无法修复的安全风险。

本文基于社区公告与多方技术文章,系统梳理 Ingress NGINX 退休的背景、对组织的影响、可选迁移路径与实操建议,并给出示例配置与检查命令,帮助平台团队制定可靠的迁移方案。


1. 为什么要退休 Ingress NGINX

  • • 维护人力长期不足:多年仅 1–2 位维护者依靠业余时间支撑,难以匹配其广泛使用带来的维护负荷。
  • • 技术债与安全风险:历史上为灵活性提供的“snippets”等特性在今天被视为严重安全隐患,形成难以消解的技术债。
  • • 替代方向清晰:社区推动 Gateway API 作为 Ingress 的现代替代,具备更明确的职责分离、更丰富的原生特性、更好的可扩展治理。

结论是:为保障用户安全与生态可持续性,必须明确终止维护时间表,并引导迁移。


2. 对组织的实际影响

  • • 安全合规风险提升:2026 年 3 月后新披露的漏洞将不再修复,互联网暴露型业务风险不可接受。
  • • 运营负担增加:继续使用意味着需要额外外层安全防护(WAF、隔离、流量限制)与应急预案,成本显著。
  • • 隐性迁移工作量:大量团队将从“黑盒”使用转向理解与重构路由与策略,跨团队协同与变更治理成为主体工作。
  • • 生态变化:厂商与社区提供多条替代路径(Gateway API、HAProxy、NGINX OSS 等),但需要结合现有特性依赖做兼容性评估。

建议:尽快评估现状、制定迁移路线,并预留充足的联调与验收窗口。


3. 可选迁移路径与适用场景

路线 A:迁移至 Gateway API(长期架构升级)

  • • 适用:愿意进行架构现代化、需要更强的策略表达与协议支持(HTTP/HTTPS/TCP/UDP/gRPC)、多团队职责分离的中大型平台。
  • • 优势:资源模型清晰(Gateway/GatewayClass/HTTPRoute 等)、原生支持流量分配与高阶匹配、减少注解耦合。
  • • 成本:学习曲线较高;需要新运维流程与监控审计体系;多租户隔离与治理需重新设计。

路线 B:平滑替换为其他 Ingress 控制器(短期降低风险)

  • • 适用:时间紧、特性依赖重、希望最小改动维持现有 Ingress 资源与注解模式。
  • • 常见选项与特点:
    • • NGINX Ingress Controller(F5 维护的 OSS):Apache 2.0 许可、活跃维护、与 Ingress NGINX 注解映射完善,支持 CRD(VirtualServer/Policy/TransportServer),有明确迁移文档与社区支持。
    • • HAProxy Kubernetes Ingress:高性能、注解等价能力强,提供从 NGINX 注解的直接映射与迁移助手工具;对“snippets”这类不安全能力有更稳健替代。
    • • Traefik(Nginx Ingress Provider,实验性):宣称支持约 80% 常用注解,可低改动迁移,但全局行为与部分能力有限制,需要仔细对齐。
    • • 云厂商控制器(AWS/GCP/Azure):与云负载均衡深度集成,适合单云策略,但存在锁定与混合云限制。
    • • 其他企业级控制器(Kong、Emissary 等):功能丰富(认证、限流、API 网关能力),适合有现成栈或需要高阶策略的组织。

建议:对特性依赖和运维约束做矩阵评估后选择,避免仅凭“熟悉度”或“单一指标”。


4. 迁移准备与盘点清单

  • • 识别是否使用 Ingress NGINX
    • • 运行命令:kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
  • • 全量收集 Ingress 与注解使用:
    • • 目的:建立注解使用的基线,识别不可替代或需要改造的部分(如 snippets、复杂 URL 重写、WAF 集成)。
  • • 关联的运维项:
    • • 证书管理(cert-manager、默认 cipher 与 TLS 行为)、监控与日志、变更与回滚流程、域名/DNS 切换策略。
  • • 风险点重点关注:
    • • 限流算法一致性、TLS 双向认证与链处理、URL 重写与正则、WAF(ModSecurity/CRS)规则迁移与等效性。

示例命令(提取注解清单并审计):


   
    
   # 列出所有 Ingress 的注解(按命名空间与名称)
kubectl get ingress -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.metadata.annotations}{"\n"}{end}'

# 快速检索是否使用不安全的 snippets 注解
kubectl get ingress -A -o json | jq -r '
  [.items[] | {
    ns: .metadata.namespace,
    name: .metadata.name,
    hasSnippets: ( (.metadata.annotations // {}) | has("nginx.ingress.kubernetes.io/configuration-snippet") )
  }] | map(select(.hasSnippets)) | .[] | "\(.ns)\t\(.name)"'

5. 分阶段迁移策略(建议流程)

  • • Phase 1:并行部署新控制器
    • • 在独立命名空间安装目标控制器(例如 NGINX OSS 或 HAProxy),不要立即替换生产流量。
  • • Phase 2:配置映射与等价性验证
    • • 为注解建立映射清单;必要时采用目标控制器的 CRD(如 VirtualServer、Policy)替代注解堆叠。
  • • Phase 3:功能与性能测试
    • • 双运行(双控制器)+ 指定 ingressClassName 控制路由归属;使用测试应用验证路由、SSL、CORS、认证、限流、重写、可观测性。
  • • Phase 4:灰度迁移与回滚预
    • • 从低风险业务开始逐步切换,DNS/流量分级迁移,监控关键指标并保留快速回退路径。
  • • Phase 5:收尾与治理更新
    • • 完成迁移后卸载 Ingress NGINX,清理旧 ConfigMap/注解,更新运维手册、监控与告警。

6. 配置示例与参考

下列片段展示从 Ingress NGINX 迁移到两类常见替代方案的配置思路。请根据自身控制器版本与官方文档校验细节。

6.1 NGINX Ingress Controller(F5 OSS)并行部署与最小改动迁移

  • • 并行安装(Helm 示例,独立命名空间):

   
    
   helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
helm install nginx-oss nginx-stable/nginx-ingress \
  --namespace nginx-oss --create-namespace \
  --set controller.allowSnippetAnnotations=false
  • • 最小改动迁移示例(更新 ingressClassName 指向新控制器):

   
    
   apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web
  namespace: demo
  annotations:
    # 原有 NGINX 注解通常在迁移指南中有映射;尽量避免使用 snippets
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  ingressClassName: nginx-oss # 指向新控制器的 IngressClass
  rules:
  - host: www.example.com
    http:
      paths:
      - path: /app/(.*)
        pathType: Prefix
        backend:
          service:
            name: web-svc
            port:
              number: 80
  • • 使用 CRD(VirtualServer)提升可读性与校验:

   
    
   apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
  name: web
  namespace: demo
spec:
  host: www.example.com
  routes:
  -
 path: /app
    route:
      path: /app
    action:
      pass: web-svc
  policies:
  - name: rate-limit-policy

6.2 HAProxy Ingress Controller 注解映射示例

  • • 常见注解映射(示意):
    • • nginx.ingress.kubernetes.io/load-balance -> haproxy.org/load-balance
    • • nginx.ingress.kubernetes.io/backend-protocol -> haproxy.org/backend-protocol
    • • nginx.ingress.kubernetes.io/proxy-connect-timeout -> haproxy.org/proxy-connect-timeout
    • • nginx.ingress.kubernetes.io/cors-allow-origin -> haproxy.org/cors-allow-origin
  • • 示例 Ingress(指向 HAProxy 控制器):

   
    
   apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web
  namespace: demo
  annotations:
    haproxy.org/load-balance: "leastconn"
    haproxy.org/backend-protocol: "HTTP"
    haproxy.org/proxy-connect-timeout: "5s"
    haproxy.org/cors-allow-origin: "https://www.example.com"
spec:
  ingressClassName: haproxy
  rules:
  - host: www.example.com
    http:
      paths:
      - path: /app
        pathType: Prefix
        backend:
          service:
            name: web-svc
            port:
              number: 80

6.3 Gateway API 基本示例(HTTPRoute)

  • • 资源模型:GatewayClass -> Gateway -> HTTPRoute
  • • 示例(以 HTTPRoute 为例,聚焦路由配置):

   
    
   apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: web-gw
  namespace: gateway
spec:
  gatewayClassName: my-gateway-class
  listeners:
  -
 name: https
    protocol: HTTPS
    port: 443
    tls:
      certificateRefs:
      - kind: Secret
        name: web-cert
    allowedRoutes:
      namespaces:
        from: All
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: web-route
  namespace: demo
spec:
  parentRefs:
  - name: web-gw
    namespace: gateway
  hostnames:
  - "www.example.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /app
    filters:
    - type: URLRewrite
      urlRewrite:
        path:
          type: ReplacePrefixMatch
          replacePrefixMatch: /
    backendRefs:
    - name: web-svc
      port: 80

7. 测试与验证要点

  • • 功能一致性:路由匹配、重写、CORS、认证、会话亲和、WAF 规则等逐项验证。
  • • 性能与稳定性:吞吐、延迟、CPU/内存占用、零停机热更新能力。
  • • 安全性:TLS 配置、证书链、双向认证、限流与防护策略;审查是否移除不安全能力(如 snippets)。
  • • 可观测性:原生指标(Prometheus)、日志结构、故障定位手册更新。
  • • 变更与回滚:灰度策略、双控并行、DNS/流量切换与快速回退预案。

8. 结论与建议

Ingress NGINX 的落幕不是失败,而是生态演进的必然阶段。平台团队应将其视作契机,借助更现代的接口与治理模型提升网络层的安全性、可维护性与可观测性。路线选择上,“Gateway API 作为长期目标 + 近期选择一个与现状贴近的控制器平滑替换”是多数组织的务实策略。

关键在于:尽快盘点特性依赖、做好并行验证、建立稳健的灰度与回滚方案,以工程化的方式降低迁移风险,避免在 2026 年前后被动应对。


参考与延伸阅读

• Kubernetes 官方公告:Ingress NGINX Retirement: What You Need to Know https://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/

• NGINX 社区博客:The Ingress NGINX Alternative: Open Source NGINX Ingress Controller for the Long Term https://www.nginx.com/blog/ingress-nginx-alternative-open-source-nginx-ingress-controller

• HAProxy 博客与迁移资源:Ingress NGINX Is Retiring- https://www.haproxy.com/blog/ingress-nginx-is-retiring-heres-your-path-forward-with-haproxy

• LiveWyer 技术文章:Ingress-Nginx Retirement: Migration Guidance for Kubernetes Platform Teams https://medium.com/@livewyer/ingress-nginx-retirement-migration-guidance-for-kubernetes-platform-teams-74f44c5d21ee

• InfoQ 报道:Kubernetes Community Retires Popular Ingress NGINX Controller https://www.infoq.com/news/2025/11/kubernetes-ingress-nginx-retirement/


加入知识星球,共同探索云原生学习之旅!


重磅!!

公众号配套学习网站已经上线,欢迎大家访问:https://k8s.sredevops.top/



往期回顾

K8S工具推荐,Kargo:下一代 GitOps 持续交付工具

K8S工具推荐:Bufstream-唯一通过 Jepsen 验证的云原生 Kafka 实现

K8S工具推荐: 使用 Kubemark 进行 Kubernetes 大规模集群模拟实践

K8S工具推荐:使用Argo Rollouts实现GitOps自动化测试与回滚

K8S工具推荐:资源编排新利器:三大云厂商联合推出 KRO

K8S工具推荐:告别复杂认证!Kubernetes登录神器kubelogin指南

K8S工具推荐:Kubernetes资源优化神器KRR:一键诊断集群资源浪费

Kubernetes工具推荐:使用 k8s-pod-restart-info-collector简化故障排查

K8S工具推荐:动态无缝的Kubernetes多集群解决方案-Liqo

K8S学习路线2025

𝙺̲𝚞̲𝚋̲𝚎̲𝚛̲𝚗̲𝚎̲𝚝̲𝚎̲𝚜̲ 管理的最佳实践(2025)

如何落地一个企业级PaaS容器云平台:从规划到实施全流程指南


【声明】内容源于网络
0
0
云原生SRE
懂点K8S的SRE,关注云原生、DevOps、AI&ChatGPT等技术热点
内容 313
粉丝 0
云原生SRE 懂点K8S的SRE,关注云原生、DevOps、AI&ChatGPT等技术热点
总阅读89
粉丝0
内容313