Helm - 非常不寻常且不规则的 Kubernetes YAML 格式的文档规范

问题描述

在 microsoft docs 上,我发现我应该定义这个 Helm YAML 文件来创建 Kubernetes Ingress Controller:

controller:
  service:
    loadBalancerIP: 10.240.0.42
    annotations:
      service.beta.kubernetes.io/azure-load-balancer-internal: "true"

所以你可以很容易地注意到它没有通常的 Kubernetes apiVersion 和 kind 规范。 之后,在我需要执行 helm 命令以创建 Ingress 的同一链接上:

helm install nginx-ingress ingress-Nginx/ingress-Nginx \
    -f internal-ingress.yaml \
..............

如您所见 - 建议的 Helm 文件不是很常见,但我想坚持那些官方的 Microsoft 说明! 同样,它没有使用常规 apiVersion 和种类符号创建 Ingress Controller 的规范,就像在互联网上可以找到的许多链接和示例一样。

https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/controller-service.yaml https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/

Can I set custom ports for a Kubernetes ingress to listen on besides 80 / 443?

所以我真的觉得非常非常迷茫!!!你能帮我解决这个问题吗 - 我需要设置它的端口,但我真的找不到这个 YAML Microsoft 示例的规范文档和示例,它实际上有效!!!

controller:
  service:
    loadBalancerIP: 10.240.0.42
    annotations:
      service.beta.kubernetes.io/azure-load-balancer-internal: "true"

在哪里以及如何找到正确的语法,如何将常规的“apiVersion”和“kind”规范“翻译”成这个?

为什么他们用这种不同的格式以这种方式混淆??? 请帮忙!谢谢

解决方法

-f 未设置 Microsoft 文档中所述的“清单”。根据{{​​1}}:

helm install --help,-f 字符串指定 YAML 文件中的值 或者一个网址(可以指定多个)

默认 values file 包含要传递到图表中的值。

用户提供的带有 --values 的值与默认值文件合并以生成最终清单。优先顺序是:

  • 图表中的 values.yaml 文件
  • 如果这是一个子图表,父图表的 values.yaml 文件
  • 一个值文件,如果使用 -f 标志传递到 helm install 或 helm upgrade 中 (helm install -f myvals.yaml ./mychart)
  • 用--set传递的个别参数(如helm install --set foo=bar ./mychart)

上面的列表是按特殊性顺序排列的:values.yaml 是默认值,可以被父图表的 values.yaml 覆盖,而后者又可以被用户提供的值文件覆盖,而后者又可以是被 --set 参数覆盖。

您在做什么是覆盖默认值文件顶部的 -f 值。您可以找到 ingress-nginx 图表 here 的原始/默认值。