如何在 Helm 中使用 environment/secret 变量?

How to use environment/secret variable in Helm?

在我的 helm 图表中,我有一些文件需要输入凭据 例如

<Resource
    name="jdbc/test"
    auth="Container"
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://{{ .Values.DB.host }}:{{ .Values.DB.port }};selectMethod=direct;DatabaseName={{ .Values.DB.name }};User={{ Values.DB.username }};Password={{ .Values.DB.password }}"
    />

我创建了一个秘密

Name: databaseinfo
   Data:
     username
     password

然后我创建环境变量来检索我 deployment.yaml:

中的那些秘密
env:
   - name: DBPassword
      valueFrom:
      secretKeyRef:
        key: password
        name: databaseinfo
   - name: DBUser
       valueFrom:
       secretKeyRef:
         key: username
         name: databaseinfo 

在我的 values.yaml 或这个其他文件中,我需要能够引用这个 secret/environment 变量。我尝试了以下但它不起作用: values.yaml

DB:
  username: $env.DBUser
  password: $env.DBPassword

您无法使用 helm 将任何模板中的传递变量传递给 values.yaml。刚从 values.yaml 到模板。

您要找的答案由 mehowthe 发布:

deployment.yaml =

      env:          
        {{- range .Values.env }}
      - name: {{ .name }}
        value: {{ .value }}
     {{- end }}

values.yaml =

env:          
 - name: "DBUser"
   value: ""
 - name: "DBPassword"
   value: ""

然后

helm install chart_name --name release_name --set env.DBUser="FOO" --set env.DBPassword="BAR"