【问题标题】:How to use if/else loop in Helm如何在 Helm 中使用 if/else 循环
【发布时间】:2021-06-09 00:59:31
【问题描述】:

我正在尝试在掌舵图中使用 if/else-if/else 循环。基本上,我想根据 if/else 条件在 configfile 中添加 ENV 配置。下面是逻辑:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Values.applicationName }}-configmap
  labels:
    projectName: {{ .Values.applicationName }}
    environment: {{ .Values.environment }}
    type: configmap
data:
{{- if eq .Values.environment "production" }}
{{ .Files.Get "config-prod.yaml" | nindent 2}}
{{- else if eq .Values.environment "development" }}
{{ .Files.Get "config-dev.yaml" | nindent 2}}
{{- else }}
{{ .Files.Get "config-stage.yaml" | nindent 2}}
{{- end }}

但是我没有得到想要的输出并且面临一些问题。有人可以帮我解决这个问题吗?

Edit1:我根据建议添加了我修改后的 configmap.yaml,helm install/template 命令给出了Error: YAML parse error on demo2/templates/configmap.yaml: error converting YAML to JSON: yaml: line 14: did not find expected key error。

我的 config-prod 和 config-stage 也在被渲染(根据条件,如果我给 environment: production 然后 config-prod.yaml 被添加,如果我给 environment: stage/null 然后 config-stage.yaml已添加。

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    您的问题将受益于更多细节。

    请考虑在您的问题中添加以下内容:

    • 你如何尝试这个?您究竟运行了哪些命令?
    • 你怎么“没有得到想要的输出”?你得到了什么输出?

    还请包括:

    • 来自您values.yaml的相关条目
    • config-dev.yamlconfig-stage.yaml 文件

    您是否运行 helm template 来生成 Helm 将应用于您的集群的模板?这将是诊断问题的好方法。

    我想知道你是不是用了太多的空格。

    你应该只向左咀嚼,即{{- .... }},而不是左+右{{- ... -}}

    【讨论】:

      【解决方案2】:

      对不起,这是我的错误,我的 dev-config.yaml 有 envs,它被定义为 key=value,而不是 key: value。

      【讨论】:

        猜你喜欢
        • 2020-10-15
        • 2021-04-06
        • 1970-01-01
        • 2012-09-02
        • 2021-09-05
        • 2020-08-14
        • 2016-10-23
        • 2022-01-25
        • 1970-01-01
        相关资源
        最近更新 更多