本文介绍了舵图中的多个环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了常见的舵图。在values.yml文件中,我有一组环境变量,它们需要设置为部署.yaml文件的一部分。

值文件的代码段。

env:
  name: ABC
  value: 123
  name: XYZ
  value: 567
  name:  PQRS
  value: 345

在部署.yaml中,当引用这些值时,只设置姓氏/值,其他值被覆盖。如何读取/设置部署文件中的所有名称/值?

推荐答案

我经历了几次如何处理设置敏感环境变量的迭代。下面是我到目前为止想出的最简单的解决方案:

模板:

{{- if or $.Values.env $.Values.envSecrets }}
env:
  {{- range $key, $value := $.Values.env }}
  - name: {{ $key }}
    value: {{ $value | quote }}
  {{- end }}
  {{- range $key, $secret := $.Values.envSecrets }}
  - name: {{ $key }}
    valueFrom:
      secretKeyRef:
        name: {{ $secret }}
        key: {{ $key | quote }}
  {{- end }}
{{- end }}

值:

env:
  ENV_VAR: value
envSecrets:
  SECRET_VAR: k8s-secret-name

优点:

语法非常简单

键很容易合并。这在创建具有共享秘密的CronJobs时非常有用。我能够使用以下内容轻松覆盖"global"值:

  {{- range $key, $secret := merge (default dict .envSecrets) $.Values.globalEnvSecrets }}

缺点:

这仅适用于与环境变量名称完全匹配的密钥,但这似乎是典型的用例。

这篇关于舵图中的多个环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-18 19:17