K8s Ingress Nginx漏洞升级修复教程

Kubernetes 集群中 Ingress Nginx 控制器是流量入口,其版本安全至关重要。
当上游发布安全公告时,你需要尽快升级到修复版本。
这篇教程从零开始,带你走完检查、升级、避坑和验证全过程。

升级前的环境确认

开始前,确认你拥有集群的 kubectl 权限,并能执行 helm list(如果通过 Helm 部署)。
查看当前 Ingress Nginx 控制器版本:

# 如果使用 Deployment 部署
kubectl get deployment -n ingress-nginx ingress-nginx-controller -o jsonpath='{.spec.template.spec.containers[0].image}'

# 或者查看 Pod 的镜像
kubectl get pods -n ingress-nginx -o custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[0].image

同时记录当前使用的 Helm release 名称和命名空间(如果有):

helm list -n ingress-nginx

如果未使用 Helm,后续操作可改用 kubectl set image 或编辑 Deployment。

选择目标版本并执行升级

访问 Ingress Nginx 官方 Release 页面(https://github.com/kubernetes/ingress-nginx/releases),查看最新稳定版以及对应的安全修复记录。
选择高于当前版本的修复版本,例如 v1.11.4。

方式一:Helm 升级(推荐)

更新 Helm 仓库并升级:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm upgrade ingress-nginx-controller ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --set controller.image.tag=v1.11.4 \
  --reuse-values

--reuse-values 会保留原有配置,只更新镜像标签。
如果你之前使用自定义 values 文件,建议改为 -f values.yaml

方式二:直接更新 Deployment 镜像

kubectl set image deployment/ingress-nginx-controller -n ingress-nginx \
  controller=registry.k8s.io/ingress-nginx/controller:v1.11.4

升级后 Pod 会自动滚动更新,可通过以下命令观察状态:

kubectl rollout status deployment/ingress-nginx-controller -n ingress-nginx

避坑指南:升级前后的常见问题

  1. 镜像拉取失败:确保集群能访问 registry.k8s.io 或你已配置镜像代理。如果内网环境,提前将目标镜像拉取到本地仓库。
  2. 配置不兼容:新版可能废弃某些 annotation 或 ConfigMap 字段。升级后检查 Ingress 日志是否有 unknown annotation 警告,必要时调整配置。
  3. Helm 升级失败:若提示 values not compatible,尝试不加 --reuse-values 而使用 --reset-values 并重新传入 values 文件。
  4. Ingress 规则未生效:升级后控制器需要重新加载配置,通常自动完成。若长时间未生效,手动重启 Pod:kubectl rollout restart deployment/ingress-nginx-controller -n ingress-nginx

验证升级效果与漏洞修复是否生效

升级完成后,按以下步骤确认漏洞已修复:

  1. 验证版本:通过 Pod 环境变量或日志查看镜像版本。
kubectl exec -n ingress-nginx deploy/ingress-nginx-controller -- /nginx-ingress-controller --version
  1. 检查 Ingress 是否正常服务:访问一个已存在的域名或 Service,确认返回 200。
curl -I http://your-domain.com
  1. 查看控制器日志:确认无异常错误。
kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx --tail=50
  1. 使用安全扫描工具(如 trivy)扫描新镜像,确认漏洞列表已更新。
trivy image registry.k8s.io/ingress-nginx/controller:v1.11.4

如果扫描结果无高危严重漏洞,说明升级成功。

高频问题解答

Q:升级会影响线上业务吗?
A:滚动更新期间会有短暂的连接中断(通常几秒),建议在低峰期操作,并适当增加副本数保持高可用。

Q:升级后部分自定义配置失效怎么办?
A:对照官方变更日志,将废弃字段替换为推荐新字段。也可先在测试集群验证。

Q:如何备份当前配置?
A:使用 helm get values ingress-nginx-controller -n ingress-nginx > backup-values.yaml 备份 Helm values;或通过 kubectl get deployment,configmap -n ingress-nginx -o yaml 导出资源定义。

升级 Ingress Nginx 是保障集群安全的基础操作,建议定期关注官方安全公告。
如果你在处理升级过程中遇到其他异常,欢迎留言交流。

分享到:
上一篇
静态代码压缩节省海外加载带宽:Nginx 开启 Gzip
下一篇
本地Ollama对接外贸独立站AI选品接口实战教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意