头盔:将多行环境变量传递给部署

时间:2020-02-10 17:40:36

标签: deployment environment-variables yaml kubernetes-helm

我需要将私钥RSA密钥作为ENV var传递到我的部署文件,但目前无法执行。

containers:
  env:
      - name: MY_PRIVATE_KEY
        value: |+
        {{ .Values.fpm.dot_env.MY_PRIVATE_KEY}}

我已经尝试过使用toYaml进行缩进,而没有缩进(这没有错误,但是我的env var以|-开头)...

有什么主意吗?

这是我从该代码中得到的错误:

Error: UPGRADE FAILED: YAML parse error on broker-api/templates/deployment.yaml: error converting YAML to JSON: yaml: line 59: could not find expected ':'

2 个答案:

答案 0 :(得分:1)

如果您尝试在Helm图表的Kubernetes工件中嵌入多行字符串,最简单的方法是

  1. 使用YAML | block scalar form保留换行符;
  2. 在第一列中启动Go模板{{ ... }}宏;和
  3. 使用sprig indent函数缩进块的每一行,包括第一行。

(您经常会看到|-会修饰最后的换行符;为此,我可以想象要保留最后的换行符|+或仅保留简单的|;最后两个之间的区别是最后是否保留多余的空行。)

containers:
  env:
      - name: MY_PRIVATE_KEY
        value: |+
{{ .Values.fpm.dot_env.MY_PRIVATE_KEY | indent 12 }}

(通常,对于实际机密,最好将它们存储在Kubernetes Secret对象中。这些值是在Kubernetes API中以base64编码的,因此当您在Helm中声明Secret对象时,应使用... | b64enc而不是indent食谱。)

答案 1 :(得分:0)

最后,我解决了b64编码密钥并从后端b64对其解码的问题。

谢谢。