如何在 helm 中的 .Values.envtype.name.something 上使用 .Values.load

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

我想像这样调用舵图上的值 我想在 .Values.envType.name 上使用键 .Values.load 的值,

名称将为 .load,因此我们希望以动态方式使用它,这样我们只需更改 .Values.load,它将在其他值上使用它。

我希望我能很好地解释自己:)

编辑:

值文件结构

LOAD: DCS
EnvType:
  DCS:
    name: DCS
    NORMAL:
      limitRange:
        limits:
          memory: 256Mi
          cpu: 0.5
    HEAVY:
      limitRange:
        limits:
          memory: 256Mi
          cpu: 0.5
  DEV:
    name: DEV
    NORMAL:
      limitRange:
        limits:
          memory: 256Mi
          cpu: 0.5
    HEAVY:
      limitRange:
        limits:
          memory: 256Mi
          cpu: 0.5

所以基本上我想使用加载键访问 EnvType 对象内的任何值 所以它可以更有活力。

kubernetes kubernetes-helm
1个回答
0
投票

Helm 不支持二次渲染,但可以使用 yaml 锚点 来实现此功能。

values.yaml

LOAD: &LOAD DCS
EnvType:
  DCS:
    name: *LOAD
    NORMAL:
      limitRange:
        limits:
          memory: 256Mi
          cpu: 0.5
    HEAVY:
      limitRange:
        limits:
          memory: 256Mi
          cpu: 0.5
  DEV:
    name: *LOAD
    NORMAL:
      limitRange:
        limits:
          memory: 256Mi
          cpu: 0.5
    HEAVY:
      limitRange:
        limits:
          memory: 256Mi
          cpu: 0.5

模板/cm.yaml

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "test.fullname" . }}
data:
  load: {{ $.Values.LOAD }}
  enntype: |-
  {{- toYaml $.Values.EnvType | nindent 4 }}

cmd

helm install test .

输出

apiVersion: v1
data:
  enntype: |-
    DCS:
      HEAVY:
        limitRange:
          limits:
            cpu: 0.5
            memory: 256Mi
      NORMAL:
        limitRange:
          limits:
            cpu: 0.5
            memory: 256Mi
      name: DCS
    DEV:
      HEAVY:
        limitRange:
          limits:
            cpu: 0.5
            memory: 256Mi
      NORMAL:
        limitRange:
          limits:
            cpu: 0.5
            memory: 256Mi
      name: DCS
  load: DCS
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/managed-by: Helm
  name: test
  namespace: default
© www.soinside.com 2019 - 2024. All rights reserved.