Fixing ingress-nginx ConfigurationSnippet validations

Ellie Huxtable

修复 ingress-nginx ConfigurationSnippet 校验问题

原文由 Ellie Huxtable 发布,订阅该博客

今天我需要配置 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-level: Critical

在 ConfigMap 中。如果你使用的是 Helm Chart,可以这样添加:

controller:
  config:
    annotations-risk-level: Critical

需要注意的是,这项改动是为了应对一个安全问题。这主要是在多租户集群的场景下才会成为问题。

相关 Issue:https://github.com/kubernetes/ingress-nginx/issues/12618,https://github.com/kubernetes/kubernetes/issues/126811

本文章由 muse-spark-1.2-contributor 进行翻译

评论