【问题标题】:False "Map keys must be unique" error for k8s values.yaml on VS codeVS 代码上的 k8s values.yaml 错误“映射键必须是唯一的”错误
【发布时间】:2022-07-09 22:35:03
【问题描述】:

我正在使用 VS Code 开发掌舵图。我已经安装了YAML extension

图表通常包含这样的 sn-ps:

 annotations:
     kubernetes.io/ingress.class: "internal-nginx"
     nginx.ingress.kubernetes.io/use-regex: "true"
     nginx.ingress.kubernetes.io/use-regex: "true"

上面的sn-p定义了两个key相同的注解,这在k8s世界中是完全有效的,但是编辑器抱怨key重复:

[{
    "resource": "/home/junowong/Sentry/uet-tracker-15.0.0/configuration.yaml",
    "owner": "_generated_diagnostic_collection_name_#0",
    "severity": 8,
    "message": "Map keys must be unique",
    "source": "YAML",
    "startLineNumber": 95,
    "startColumn": 15,
    "endLineNumber": 95,
    "endColumn": 58
}]

如何在存储库/文件夹/文件级别关闭此错误消息?

【问题讨论】:

    标签: kubernetes visual-studio-code yaml kubernetes-helm


    【解决方案1】:

    您不应该在 Kubernetes 对象上使用重复的注解。这将导致难以调试的未定义行为。

    我建议您不要关闭 linting 规则,而应该删除重复的注释。

    理解注解

    Kubernetes API 不会验证注解,因为它们是由外部实体处理的。这意味着您很有可能错误配置注释,并且它们将按设计透明地通过 Kubernetes API 服务器传递到外部对象控制器。

    它们将由此控制器处理。在您的情况下,它是Nginx Ingress Controller。入口控制器将:

    1. 告诉您删除重复条目。
    2. 行为不端,您不知道问题出在哪里。

    但是,labels 也是键/值对,是 Kubernetes API 元素,它们由 API 服务器验证。它们也由 API 服务器处理。这就是它们在功能上与annotations 的区别。

    最重要的是,您不应该使用重复的注释。

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 2012-09-10
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 2019-05-23
      • 2017-11-22
      • 2015-07-28
      • 2012-11-01
      相关资源
      最近更新 更多