Kubernetes 如何设置;“必需”;模板中的值来自--set选项?

Kubernetes 如何设置;“必需”;模板中的值来自--set选项?,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,如何强制指定--set选项打开helm安装|升级 在我的例子中,需要一些环境变量。(例如“数据库密码”) 文件 . |-- Chart.yaml |-- templates | |-- NOTES.txt | |-- _helpers.tpl | |-- deployment.yaml | |-- ingress.yaml | |-- secret.yaml | `-- service.yaml `-- values.yaml values.yaml(snip) 模板/

如何强制指定--set选项打开
helm安装|升级

在我的例子中,需要一些环境变量。(例如“数据库密码”)

文件

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

模板/秘密。yaml

apiVersion: v1
kind: Secret
metadata:
  name: myapp-secrets
type: Opaque
data:
  app-database-password: {{required .Values.database.password | b64enc | quote }}
模板/deployment.yaml(snip)

命令

# 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
错误:在“myapp/templates/secret.yaml”中呈现错误:模板:myapp/templates/secret.yaml:7:28:在以下位置执行“myapp/templates/secret.yaml”:所需参数的数目错误:想要2得到1
似乎
required
函数是在解析时静态评估模板文件

我需要以下事项:

  • 数据库。密码可通过env(如“prod”或“stage”)进行切换
  • 数据库。密码应存储为机密
  • 我想在命令执行时使用env vars设置实际的
    数据库.password

有什么想法吗?

需要特定于驾驶仪的
宏:如果该值不存在,则显示错误消息,以及您正在检查的值。此语法还允许以管道形式使用它。在您的示例中,secret值可以是

app-database-password: {{.Values.database.password | required "database password is required" | b64enc | quote }}
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
app-database-password: {{.Values.database.password | required "database password is required" | b64enc | quote }}