【问题标题】:Helm include formatted map from values.ymlHelm 包含来自 values.yml 的格式化地图
【发布时间】:2020-08-28 16:50:37
【问题描述】:

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

DbMigration:
  Resources:
    requests:
      memory: 256Mi
    limits:
      memory: 512Mi

在我的数据库迁移作业的定义中,我有这个:

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 }}

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

{{- toYaml $.Values.DbMigration.Resources }}

但是,这会导致:

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

【问题讨论】:

    标签: kubernetes-helm


    【解决方案1】:

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

    ,而不是使用 range
    DbMigration: |
      resources:
        requests:
          memory: 256Mi 
        limits:
          memory: 512Mi
    

    然后将迁移模板更改为

      resources:
      {{- .Values.DbMigration | indent 12 }}
    

    请相应地更改缩进。

    另一种方法是使用rangetoYaml

    DbMigration:
      Resources:
        requests:
          memory: 256Mi
        limits:
          memory: 512M
    

    迁移模板

    resources:
    {{- range $key, $value := $.Values.DbMigration.Resources }}
        {{ $key }}: 
          {{ toYaml $value }}
    {{- end }}
    

    【讨论】:

    • 啊哈。我明白我错过了什么。这是一个 Go 模板语法错误,它阻止了我做你在那里做的事情。你的回答很明显。谢谢。
    【解决方案2】:

    如果您想“按原样”从 values.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 }}
    

    如果您仍然遇到转换为 JSON 的错误,请尝试使用缩进,这就是全部。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 2019-07-15
      • 1970-01-01
      • 2015-11-13
      相关资源
      最近更新 更多