Selenium 网格中的 YAML 锚点和别名 helm chat 在 helm install dry run 中逐字显示

问题描述 投票:0回答:1

我正在研究为 selenium 网格提供的舵图。我可以看到这里使用了 YAML 锚点和别名。

https://github.com/SeleniumHQ/docker-selenium/blob/trunk/charts/selenium-grid/templates/chrome-node-deployment.yaml#L7

https://github.com/SeleniumHQ/docker-selenium/blob/trunk/charts/selenium-grid/templates/chrome-node-deployment.yaml#L25

然而,当我使用 helm install dry run 时,这些锚点会逐字显示在生成的清单中:

-helm install --namespace selenium-spot --debug --dry-run guava ./charts/selenium-grid/
metadata:
  name: selenium-chrome-node
  namespace: selenium-spot
  **labels: &chrome_node_labels**
    app: selenium-chrome-node
    app.kubernetes.io/name: selenium-chrome-node
    app.kubernetes.io/managed-by: helm
    app.kubernetes.io/instance: guava
    app.kubernetes.io/version: 4.8.1-20230221
    app.kubernetes.io/component: selenium-grid-4.8.1-20230221
    helm.sh/chart: selenium-grid-0.15.3
spec:
  replicas: 1
  selector:
    matchLabels:
      app: selenium-chrome-node
      app.kubernetes.io/instance: guava
  template:
    metadata:
      **labels: *chrome_node_labels**

是否有任何我在这里看不到的二次渲染?我在这里遗漏了什么我期待锚

"&"
复制它下面的所有值和别名
"*"
将它插入到任何使用它的地方。

kubernetes-helm selenium-grid
1个回答
0
投票

Helm 图表的输出是纯文本,恰好解析为 YAML。除了验证生成的文档实际上是有效的 YAML 之外,Helm 不会解析和重新序列化它;您得到的是模板的实际输出。即使不使用 YAML 锚点,您也可以看到内联 vs. 块列表、缩进和额外空行的差异,即使它们对 YAML 序列化无关紧要,这些也会在输出中忠实地再现。

根据我的经验,YAML 锚点在 Helm 图表中并不是真正惯用的,特别是因为同一个块可以在多个文件中重复。写个helper template比较常见

{{/* _helpers.tpl */}}

{{- define "mychart.labels" -}}
app: selenium-chrome-node
app.kubernetes.io/name: selenium-chrome-node
et: cetera
{{ end -}}

然后你可以在它出现的任何地方包含该模板,即使它在多个文件中。

{{/* deployment.yaml */}}
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
{{ include "mychart.labels" . | indent 4 }}
spec:
  template:
    metadata:
      labels:
{{ include "mychart.labels" . | indent 8 }}
© www.soinside.com 2019 - 2024. All rights reserved.