【问题标题】:how to use multiple variables with same name in helm chart?如何在掌舵图中使用多个同名变量?
【发布时间】:2022-03-17 22:14:02
【问题描述】:

我有舵图,需要像这样定义多个相同的变量名称

      containers:
      - name: APP_NAME
        image: CONTAINER_IMAGE
        envFrom:
        - secretRef:
            name: secret1
        - secretRef:
            name: secret2
        - configMapRef:
            name: configmap1
        - secretRef:
            name: secret3

我像这样添加了 nonproduction.yaml 图表

envFrom:
  secretRef:
    name1: secret1
  secretRef:
    name2: secret2
  configmapRef:
    name3: configmap1
  secretRef:
    name4: secret3

并定义deployment.yaml

      containers:
      - name: {{ .Values.appName }}
        image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
        envFrom:
        - secretRef:
            name: {{ .Values.envFrom.secretRef.name1 }}
        - secretRef:
            name: {{ .Values.envFrom.secretRef.name2 }}
        - configMapRef:
            name: {{ .Values.envFrom.configmapRef.name3 }}
        - secretRef:
            name: {{ .Values.envFrom.secretRef.name4 }}

但它在终端上重复键,我如何在舵图上使用同名变量而不更改名称?

编辑:添加数字,这样我们就不会被“名字”弄晕了

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    YAML 支持一组基本数据结构,例如 JSON(事实上,有效的 JSON 文件通常是有效的 YAML)。在 YAML 的术语中,有 scalars(字符串、数字、布尔值)、sequences(列表、数组)和 mappings(字典)。

    在您显示的values.yaml 文件中,envFrom: 是一个映射,但其中三个键是相同的;你说过属性secretRef 有映射值{name1: value1},而且属性secretRef 有映射值{name2: value2},这就是Helm 感到困惑的地方。

    您可以将 values.yaml 文件更改为 YAML 序列,而不是在每个项目前添加一个连字符 -

    envFrom:
      - secretRef:
          name1: secret1
      - secretRef:
          name2: secret2
      - et: cetera
    # ^ add "-" before each item
    

    此时,您可以使用@karthik's answer 中的方法将该结构原样复制到 YAML 输出中,因为序列形式与 Kubernetes 在这里所期望的相符。

    envFrom: {{- toYaml .Values.envFrom | nindent 12 }}
    

    如果您确实需要在这里遍历单个值,因为它现在是一个序列,您不能按名称引用单个项目(并且在 Helm 中很难在具有某些属性的映射序列中找到一个项目) 但只能通过索引或通过 range 迭代关键字。

    【讨论】:

      【解决方案2】:

      您可以一次调用所有秘密和配置映射,而不是调用它们。

        env:
          {{- toYaml .Values.envs | nindent 12 }}
        envFrom:
          {{- toYaml .Values.envFrom | nindent 12 }}
      

      【讨论】:

        猜你喜欢
        • 2019-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-14
        • 2021-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多