Helm 包含来自values.yml 的格式化地图

el *_*00b 11 kubernetes-helm

values.yml我的 Helm 图表有一个简单的文件:

DbMigration:
  Resources:
    requests:
      memory: 256Mi
    limits:
      memory: 512Mi
Run Code Online (Sandbox Code Playgroud)

在我的数据库迁移作业的定义中,我有以下内容:

spec:
  activeDeadlineSeconds: 120
  template:
    spec:
      restartPolicy: Never
      containers:
        - name: myMigrate
          image: myRepo/myService:0.0.1
          imagePullPolicy: Always
          resources:
            requests:
            {{- range $key, $value := $.Values.DbMigration.Resources.requests }}
              {{ $key }}: {{ $value }}
            {{- end }}
            limits:
            {{- range $key, $value := $.Values.DbMigration.Resources.limits }}
              {{ $key }}: {{ $value }}
            {{- end }}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以简化该resources区域,以便我可以包含来自的所有数据$.Values.DbMigration.Resources?我所拥有的可行,但必须有更简洁的方法。我尝试以toYaml与此类似的方式使用该函数:

{{- toYaml $.Values.DbMigration.Resources }}
Run Code Online (Sandbox Code Playgroud)

然而,这会导致:

错误:升级失败:myTemplate.yaml 上的 YAML 解析错误:将 YAML 转换为 JSON 时出错:yaml:第 30 行:此上下文中不允许映射值

小智 18

如果您想“按原样”渲染 value.yaml 中的块,那么 toYaml 几乎就是您所需要的。

spec:
  activeDeadlineSeconds: 120
  template:
    spec:
      restartPolicy: Never
      containers:
        - name: myMigrate
          image: myRepo/myService:0.0.1
          imagePullPolicy: Always
          resources:
            {{- toYaml $.Values.DbMigration.Resources | nindent 12 }}
Run Code Online (Sandbox Code Playgroud)

如果您仍然遇到转换为 JSON 错误,请尝试稍微调整一下缩进,仅此而已。


red*_*Ink 9

有多种方法可以实现这一目标。其中之一是,range您可以简单地将values.yaml 更改为

DbMigration: |
  resources:
    requests:
      memory: 256Mi 
    limits:
      memory: 512Mi
Run Code Online (Sandbox Code Playgroud)

然后将迁移模板更改为

  resources:
  {{- .Values.DbMigration | indent 12 }}
Run Code Online (Sandbox Code Playgroud)

请相应地更改缩进。

另一种方法是使用rangetoYaml

DbMigration:
  Resources:
    requests:
      memory: 256Mi
    limits:
      memory: 512M
Run Code Online (Sandbox Code Playgroud)

迁移模板

resources:
{{- range $key, $value := $.Values.DbMigration.Resources }}
    {{ $key }}: 
      {{ toYaml $value }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)