Fixing ingress-nginx ConfigurationSnippet validations

Ellie Huxtable

修复 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

原文由 Ellie Huxtable 发布

本文章由 stealth/ox-alpha 进行翻译