如何禁用Kubernetes Ingress的外部身份验证弹窗
问题解决步骤
你遇到的弹出登录框的问题本质是请求返回了401 Unauthorized状态码,按以下步骤排查处理即可:
1. 确认访问端口是否正确
你开启了hostNetwork: true配置后,Nginx Ingress Controller的业务端口默认为80(HTTP)和443(HTTPS),其自带的10254等管理端口默认开启基础认证,如果你误访问了管理端口就会触发登录弹窗。请确认你访问的地址为http://my-url.com/testpath(80端口)或者https://my-url.com/testpath(443端口),没有携带其他端口号。
2. 检查Ingress Controller全局配置是否默认开启认证
Nginx Ingress Controller的全局配置存储在ConfigMap中,执行以下命令查看配置:
kubectl get configmap -n <Ingress Controller所在命名空间> <Ingress Controller对应的ConfigMap名称> -o yaml
如果配置中存在以下两个字段,直接删除后重启Ingress Controller Pod即可:
nginx.ingress.kubernetes.io/auth-type: basic nginx.ingress.kubernetes.io/auth-secret: <任意Secret名称>
3. 检查当前Ingress资源是否配置了认证规则
执行以下命令确认你创建的Ingress资源没有配置认证相关注解:
kubectl get ingress minimal-ingress -o yaml
如果返回结果的Annotations中存在auth相关的配置,直接删除后重新Apply该Ingress资源即可。
4. 排查后端服务本身是否自带认证
你可以直接在集群内部访问后端Service验证是否为服务本身的认证逻辑:
# 启动一个临时curl容器 kubectl run -it --rm curl --image=curlimages/curl -- sh # 访问你的后端服务 curl http://my-service:80
如果该请求返回401状态码,说明认证逻辑是后端服务自带的,和Ingress无关,调整后端服务配置即可。
补充说明
你使用的安装命令存在错误,重复了helm install参数,正确的旧版stable仓库安装命令为:
helm install my-ingress stable/nginx-ingress
注意stable仓库的nginx-ingress chart早已停止维护,建议后续替换为官方维护的ingress-nginx仓库使用。
内容的提问来源于stack exchange,提问作者Herry
相关产品推荐
相关产品推荐

