修复 ingress-nginx ConfigurationSnippet 校验问题
今天我需要配置 ingress-nginx。我得写一点 nginx 配置,为某些路由重写状态码。
大概像这样:
nginx.ingress.kubernetes.io/configuration-snippet: |-
location /metrics {
return 404;
}过去我已经这么做过很多次了,但今天却收到了如下错误:
Error: UPGRADE FAILED: cannot patch "xyz" with kind Ingress: admission webhook "validate.nginx.ingress.kubernetes.io" denied the request: annotation group ConfigurationSnippet contains risky annotation based on ingress configuration我已经设置了
allowSnippetAnnotations: true所以这让人一头雾水!
原来,在最近的版本(controller 1.12)中,注解会按风险等级被标记。这里有一张表格:annotations-risk(注解风险)
现在你需要在 configmap 中指定
annotations-risk-level: Critical如果你使用 helm chart,可以这样添加:
controller:
config:
annotations-risk-level: Critical请注意,这一变更是对某个安全问题的应对。如果你使用的是多租户集群,这个问题影响较大。
相关 issue:https://github.com/kubernetes/ingress-nginx/issues/12618、https://github.com/kubernetes/kubernetes/issues/126811
随机一篇博客