如何在 Helm 中使用环境/秘密变量?

Opl*_*p98 5 kubernetes kubernetes-helm kubernetes-secrets

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

<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 }}"
    />
Run Code Online (Sandbox Code Playgroud)

我创造了一个秘密

Name: databaseinfo
   Data:
     username
     password
Run Code Online (Sandbox Code Playgroud)

然后,我创建环境变量以在部署.yaml 中检索这些机密:

env:
   - name: DBPassword
      valueFrom:
      secretKeyRef:
        key: password
        name: databaseinfo
   - name: DBUser
       valueFrom:
       secretKeyRef:
         key: username
         name: databaseinfo 
Run Code Online (Sandbox Code Playgroud)

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

DB:
  username: $env.DBUser
  password: $env.DBPassword
Run Code Online (Sandbox Code Playgroud)

Phi*_*elz 5

您无法将变量从任何模板传递给values.yamlhelm。只是从values.yaml模板开始。

您正在寻找的答案是由mehowthe发布的:

部署.yaml =

      env:          
        {{- range .Values.env }}
      - name: {{ .name }}
        value: {{ .value }}
     {{- end }}
Run Code Online (Sandbox Code Playgroud)

值.yaml =

env:          
 - name: "DBUser"
   value: ""
 - name: "DBPassword"
   value: ""
Run Code Online (Sandbox Code Playgroud)

然后

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