【问题标题】:Helm: "Template" keywordHelm:“模板”关键字
【发布时间】:2021-06-15 08:39:50
【问题描述】:

谁能给我解释一下关键字“模板”在这段代码中的作用:

apiVersion: v1
kind: Secret
metadata:
  name: {{ template "identity-openidconnect" . }}
  namespace: {{ .Release.Namespace }}
  labels:
    app: {{ template "microService.name" . }}
    release: "{{ .Release.Name }}"
    xxxx
xxxxxxxxxxxx

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    关键字“template”的意思是,Helm 会找到之前创建的模板,并根据模板中的模板完成 yaml 文件。它必须提前创建。这种类型的构造允许您多次引用相同的方案。

    例如,我们可以定义一个模板来封装一个 Kubernetes 的标签块:

    {{- define "mychart.labels" }}
      labels:
        generator: helm
        date: {{ now | htmlDate }}
    {{- end }}
    

    现在我们可以将此模板嵌入到我们现有的 ConfigMap 中,然后将其包含在 template 操作中:

    {{- define "mychart.labels" }}
      labels:
        generator: helm
        date: {{ now | htmlDate }}
    {{- end }}
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Release.Name }}-configmap
      {{- template "mychart.labels" }}
    data:
      myvalue: "Hello World"
      {{- range $key, $val := .Values.favorite }}
      {{ $key }}: {{ $val | quote }}
      {{- end }}
    

    当模板引擎读取此文件时,它将存储对mychart.labels 的引用,直到调用template "mychart.labels"。然后它将内联渲染该模板。所以结果会是这样的:

    # Source: mychart/templates/configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: running-panda-configmap
      labels:
        generator: helm
        date: 2016-11-02
    data:
      myvalue: "Hello World"
      drink: "coffee"
      food: "pizza"
    

    注意:define 不会产生输出,除非使用模板调用它,如本例所示。

    有关templates 的更多信息,您可以阅读this page

    【讨论】:

    猜你喜欢
    • 2022-12-08
    • 1970-01-01
    • 2020-01-12
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2021-01-26
    • 1970-01-01
    相关资源
    最近更新 更多