Ingress Controller禁用snippet,如何通过Helm开启该功能?
解决NGINX Ingress Controller启用Server Snippet的问题
错误原因
你遇到的报错是因为NGINX Ingress Controller默认禁用了snippet类注解的使用,准入Webhook会拦截包含nginx.ingress.kubernetes.io/server-snippet的Ingress配置。
正确的Helm升级命令
你之前的命令错误地将allow-snippet-annotations配置到了Service注解中,这个参数应该作为Ingress Controller自身的配置项来设置。正确的Helm升级命令如下:
helm upgrade --namespace ingress-nginx ingress-nginx ingress-nginx/ingress-nginx \ --set controller.config.allow-snippet-annotations=true \ --wait
操作步骤
- 执行上述Helm命令,更新Ingress Controller的配置,允许使用snippet注解
- 等待Ingress Controller的Pod重启完成(通过
kubectl get pods -n ingress-nginx查看状态) - 重新应用你的Ingress配置文件:
kubectl apply -f app-ingress.yml
非Helm安装的补充说明
如果你的Ingress Controller不是通过Helm安装的,直接修改对应的ConfigMap(默认名称为ingress-nginx-controller):
apiVersion: v1 kind: ConfigMap metadata: name: ingress-nginx-controller namespace: ingress-nginx data: allow-snippet-annotations: "true" # 保留其他已有配置...
修改后执行kubectl apply -f <configmap-file.yml>,然后重启Ingress Controller的Pod:
kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx
内容的提问来源于stack exchange,提问作者ossentoo
相关产品推荐
相关产品推荐

