kubernetes 秘密在环境变量中有尾随空格

kubernetes secrets have trailing whitespace in environment variables

我在 GKE 上的 Kubernetes 1.9 运行 中创建了一个部署,它利用了放入环境变量中的秘密。我使用带有 base64 编码的秘密的 yaml 文件将秘密上传到 GKE。

我在我的容器中看到的是环境变量在那里,但该值包含尾随空格。如果我设置一个值为 "bar" 的环境变量 FOO,它会是这样的

$ echo $FOO
bar 
$ echo \"$FOO\"
"bar "
$ echo $FOO | base64
YmFyCg==
$ echo "$FOO" | base64
YmFyIAo=

这给从环境变量中读取的应用程序带来了无穷无尽的困难,这些应用程序期望在没有额外空格的情况下对值进行编码,例如 postgres:9.6 中的 POSTGRES_PASSWORDPOSTGRES_USER图片。环境中的其他变量(包括从我的部署 yaml 中设置的没有秘密的变量)不包括尾随空格;只有秘密才有问题。

您的回显正在添加换行符。添加 -n 以省略尾随换行符