首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Helm: range函数没有按照预期保持输入值的顺序?

Helm: range函数没有按照预期保持输入值的顺序?
EN

Stack Overflow用户
提问于 2022-01-21 17:48:09
回答 1查看 466关注 0票数 1

我知道,字典是按顺序处理的。但是,为了某种进程目的,我需要以某种顺序运行特定的进程。(由于本机k8s不按顺序支持cron作业,所以我是在单荚的入口点这样做的)。下面是我的values.yaml

代码语言:javascript
复制
batches:
  evaluate_events:
    ev-cron-3:
      populate_data:
        event-name: "Populate  Data process"
        business-process: "Generic"
        rule-type: "Identification"
      auth_export:
        event-name: "Auth Export Ruleset"
        business-process: "Generic"
        rule-type: "Constraint Satisfaction"
      new_document_attached:
        event-name: "New Document Attached"
        business-process: "Generic"
        rule-type: "Constraint Satisfaction"

我的代码inv k8s yaml:

代码语言:javascript
复制
{{- range $event, $data := $.Values.batches }}
{{- range $key, $cron := $data }
{{- range $jobname, $inputs := $cron }}
            - '{{ $event }} {{- range $args, $val := $inputs }} --{{ $args }} "{{ $val }}" {{- end }}'
{{- end }}
{{- end }}
{{- end }}

预期输出:与values.yaml相同的顺序

代码语言:javascript
复制
- 'evaluate_events --business-process "Generic" --event-name "Populate  Data process" --rule-type "Identification"'
- 'evaluate_events --business-process "Generic" --event-name "Auth Export Ruleset" --rule-type "Constraint Satisfaction"'
- 'evaluate_events --business-process "Generic" --event-name "New Document Attached" --rule-type "Constraint Satisfaction"'

实际输出:不按values.yaml的顺序排列

代码语言:javascript
复制
- 'evaluate_events --business-process "Generic" --event-name "Auth Export Ruleset" --rule-type "Constraint Satisfaction"'
- 'evaluate_events --business-process "Generic" --event-name "New Document Attached" --rule-type "Constraint Satisfaction"'
- 'evaluate_events --business-process "Generic" --event-name "Populate  Data process" --rule-type "Identification"'

需要吗,如果有人处理这种情况的话?如何才能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-22 00:12:02

values.yaml中使用YAML映射对象。它由一对键和值组成,但不一定按任何顺序排列。您可能需要一个YAML列表,而不是:

代码语言:javascript
复制
- arg: event-name
  value: Populate  Data process
- arg: business-process
  value: Generic
- arg: rule-type
  value: Identification

然后可以使用range迭代列表(而不是映射)。

代码语言:javascript
复制
- '{{ $event }}
{{- range $inputs }} --{{ .arg }} "{{ .value }}"{{- end -}}
'

Kubernetes中的几个地方都有包含name字段的列表,这正是出于这个原因,您也可以考虑在您的值结构中更高地使用这种方法。如果您控制应用程序本身,您可能还会发现将这些设置作为环境变量而不是命令行参数传递比较容易,因为如您所示,构造命令字符串在语法上可能有点棘手。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70805550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档