北京时间1月30日,Kubernetes指导委员会和安全响应委员会在kubernetes.io发布重要公告,宣布Ingress NGINX将于2026年3月正式退役。这则公告通过CNCF官方微信公众号同步发布中文版本,在云原生社区引发广泛关注。
作为Kubernetes生态中使用最广泛的Ingress控制器之一,Ingress NGINX目前支撑着约50%的云原生环境流量管理需求。公告明确指出,项目将进入"维护模式"直至2026年3月,期间仅提供有限支持,之后将完全停止维护。这意味着:
重要提示:公告特别强调这不是普通的版本弃用通知,而是关系到生产环境安全的重要警告。继续使用退役后的Ingress NGINX将使系统面临被攻击风险。
根据Datadog的内部研究数据,尽管Ingress NGINX被各种规模的企业广泛采用,但项目近年来实际上仅由1-2名维护者利用业余时间支撑。这种维护资源与使用规模的严重不匹配,导致项目难以持续健康发展。
Ingress NGINX最初设计的灵活性曾是其最大优势,但随着Kubernetes生态发展,这种设计逐渐演变为沉重的技术债务:
Kubernetes社区正在推动Gateway API作为下一代Ingress标准,它具有:
根据现有数据,约50%的Kubernetes集群正在使用Ingress NGINX。这些环境都需要在2026年3月前完成迁移。
执行以下命令可检查集群是否使用了Ingress NGINX:
bash复制kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
输出示例:
code复制NAMESPACE NAME READY STATUS RESTARTS AGE
ingress-nginx ingress-nginx-controller-7c489dc6b5-2xgx4 1/1 Running 0 15d
| 风险维度 | 短期(现在-2026.3) | 长期(2026.3后) |
|---|---|---|
| 安全漏洞 | 可能延迟修复 | 完全不修复 |
| 功能缺陷 | 有限修复 | 完全不修复 |
| 兼容性 | 逐步降低 | 无法保证 |
Gateway API是Kubernetes社区推出的下一代Ingress标准,具有以下优势:
迁移步骤概览:
| 方案 | 成熟度 | 学习曲线 | 功能覆盖 | 社区支持 |
|---|---|---|---|---|
| Gateway API | ★★★☆ | 中 | ★★★★ | ★★★★★ |
| Contour | ★★★★ | 低 | ★★★★ | ★★★☆ |
| Traefik | ★★★★ | 中 | ★★★★☆ | ★★★★ |
| Kong Ingress | ★★★☆ | 高 | ★★★★★ | ★★★☆ |
作为阿里云开源的Ingress控制器,Higress提供了专门的迁移支持:
注解兼容模式:
分阶段迁移方案:
mermaid复制graph TD
A[评估现状] --> B[并行部署]
B --> C[流量比对]
C --> D[逐步切量]
D --> E[完整迁移]
企业级支持:
环境审计:
测试策略:
阶段1:并行部署
bash复制# 安装Higress控制器
helm install higress higress/higress -n higress-system --create-namespace
阶段2:流量镜像
yaml复制apiVersion: networking.higress.io/v1
kind: Mirror
metadata:
name: canary-mirror
spec:
source:
host: example.com
path: /api/*
target:
host: example-new.com
percentage: 20
阶段3:全量切换
bash复制# 停用旧Ingress控制器
kubectl scale deployment ingress-nginx-controller --replicas=0 -n ingress-nginx
关键监控指标:
验证命令示例:
bash复制# 对比新旧环境路由结果
diff <(curl http://old-ingress/api/v1) <(curl http://new-ingress/api/v1)
问题1:特殊注解不支持
解决方案:
问题2:自定义Lua脚本
解决方案:
| 参数 | 默认值 | 生产建议 | 说明 |
|---|---|---|---|
| worker进程数 | auto | CPU核数×2 | 平衡并发与上下文切换成本 |
| 保持连接超时 | 60s | 30s | 根据业务特点调整 |
| 缓冲区大小 | 4k | 8k-16k | 大文件传输场景需要增加 |
TLS配置升级:
yaml复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
higress.io/tls-min-version: "1.3"
higress.io/cipher-suites: "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"
WAF集成:
bash复制# 启用内置WAF模块
helm upgrade higress higress/higress -n higress-system --set waf.enabled=true
推荐监控栈配置:
yaml复制apiVersion: higress.io/v1
kind: MonitorConfig
spec:
metrics:
enabled: true
port: 10254
path: /metrics
logging:
accessLog: true
format: |
$remote_addr - $remote_user [$time_local] "$request"
$status $body_bytes_sent "$http_referer"
"$http_user_agent" "$http_x_forwarded_for"
GitOps流水线配置片段:
yaml复制apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: higress-config
spec:
source:
repoURL: git@github.com:myteam/higress-config.git
path: production/
targetRevision: HEAD
destination:
server: https://kubernetes.default.svc
namespace: higress-system
syncPolicy:
automated:
prune: true
selfHeal: true
迁移过程中最大的体会是:看似简单的Ingress配置背后往往隐藏着复杂的业务逻辑依赖。建议团队尽早开始评估工作,留出充足的时间处理意外情况。在实际迁移中,我们发现有约30%的配置需要特殊处理,主要集中在对Ingress NGINX非标准扩展的使用上。