【问题标题】:How to set the "required" value in templates from --set option?如何通过 --set 选项在模板中设置“必需”值?
【发布时间】:2018-10-06 09:09:42
【问题描述】:

如何在helm install|upgrade上强制指定--set选项?

在我的情况下,一些必需的环境变量。 (例如“database.password”)

文件

.
|-- Chart.yaml
|-- templates
|   |-- NOTES.txt
|   |-- _helpers.tpl
|   |-- deployment.yaml
|   |-- ingress.yaml
|   |-- secret.yaml
|   `-- service.yaml
`-- values.yaml

values.yaml(截图)

#...
database:
  useExternal: no
  host: "pgsql"
  port: "5432"
  name: "myapp"
  userName: "myapp_user"
  # password shouldn't write here.
  # I want to be inject this value to secret.
  password: ""
#...

templates/secrets.yaml

apiVersion: v1
kind: Secret
metadata:
  name: myapp-secrets
type: Opaque
data:
  app-database-password: {{required .Values.database.password | b64enc | quote }}

templates/deployment.yaml(截图)

#...
env:
  - name: APP_DATABASE_HOST
    value: {{ .Values.database.host | quote }}
  - name: APP_DATABASE_PORT
    value: {{ .Values.database.port | quote }}
  - name: APP_DATABASE_NAME
    value: {{ .Values.database.name | quote }}
  - name: APP_DATABASE_USERNAME
    value: {{ .Values.database.username | quote }}
  - name: APP_DATABASE_PASSWORD
    valueFrom:
      secretKeyRef:
        name: myapp-secrets
        key: app-database-password
#...

命令

# Retrieve from GCP KMS(prod) or define directly(dev)
DATABASE_PASSWORD=$( ... )

# Deploy.
helm upgrade --install \
  -f ./values.yaml \
  --set database.password=$DATABASE_PASSWORD \
  myapp-dev ./ --dry-run --debug

因错误而失败。

Error: render error in "myapp/templates/secret.yaml": template: myapp/templates/secret.yaml:7:28: executing "myapp/templates/secret.yaml" at <required>: wrong number of args for required: want 2 got 1

required 函数似乎是在解析时静态评估模板文件。

我需要以下事项:

  • database.password 可通过 env 切换,例如“prod”或“stage”。
  • database.password 应该保密。
  • 我想在命令执行时使用环境变量设置实际的database.password 值。

有什么想法吗?

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    Helm 特定的 requiredtakes two parameters:如果值不存在,则会出现错误消息,以及您正在检查的值。此语法还允许它以管道形式使用。在您的示例中,秘密值可能是

    app-database-password: {{.Values.database.password | required "database password is required" | b64enc | quote }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      相关资源
      最近更新 更多