Administrator
发布于 2025-09-26 / 6 阅读
0
0

ingress 删除cookie

环境概述

 k8s-master01 节点上,通过执行以下命令获取了当前Kubernetes集群中 ingress-nginx 命名空间下的Helm部署状态及Kubernetes版本信息:

[root@k8s-master01 ~]# helm ls -n ingress-nginx
NAME         	NAMESPACE    	REVISION	UPDATED                               	STATUS  	CHART               	APP VERSION
ingress-nginx	ingress-nginx	1       	2025-07-21 11:54:27.64289018 +0800 CST	deployed	ingress-nginx-4.13.0	1.13.0     

Kubernetes客户端和服务端版本均为 v1.33.3 ,同时Kustomize版本为 v5.6.0 

[root@k8s-master01 ~]# kubectl version
Client Version: v1.33.3
Kustomize Version: v5.6.0
Server Version: v1.33.3

目标

目标是为位于 sc-microservice 命名空间中的 gateway-ingress  Ingress对象添加删除Cookie的配置。

解决方案

问题分析

先前尝试直接使用 nginx.ingress.kubernetes.io/configuration-snippet 注解来实现这一功能时遇到了阻碍。这是因为Nginx Ingress Controller的admission webhook出于安全考虑,默认阻止了该注解的应用。

实施步骤

针对上述挑战,采取了更为安全且符合最佳实践的方法来达成目的:

  1. 创建自定义请求头ConfigMap

  •  sc-microservice 命名空间内创建了一个名为 custom-headers 的ConfigMap。

  • 配置此ConfigMap以设置Cookie头部为空字符串( Cookie: "" )。

  1. 更新Ingress资源配置

  •  gateway-ingress  Ingress对象添加了 nginx.ingress.kubernetes.io/proxy-set-headers: "sc-microservice/custom-hea  ders" 注解。

  • 此方法避免了直接利用 configuration-snippet 可能引发的安全性问题,并且不会被admission webhook拦截。

  1. 重启Nginx Ingress Controller

  • 为了确保新设定能够正确加载并生效,对Nginx Ingress Controller进行了重启操作。

验证结果

  •  gateway-ingress 已成功配置 proxy-set-headers 注解。

  •  custom-headers  ConfigMap已被正确创建,其中包含将Cookie设为空的操作。

  • Nginx Ingress Controller服务已重新启动,新的配置得到了应用。 现在,当任何请求经过 gateway-ingress 时,其Cookie头部将被清除(即设置为空),从而满足了原始需求。这种方法不仅解决了具体问题,而且遵循了Kubernetes环境下的安全指南和建议。


评论