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

koe*_*ehn 3 kubernetes google-kubernetes-engine docker-secrets

我在 GKE 上运行的 Kubernetes 1.9 中创建了一个部署,该部署利用了放入环境变量中的机密。我使用 yaml 文件将机密上传到 GKE,其中机密经过 Base64 编码。

我在容器中看到的是环境变量在那里,但值包含尾随空格。如果我设置一个值为“bar”的环境变量 FOO,它会是这样的,其中我在机密 yaml 中放入的 base64 将为“YmFyCg==”:

$ echo $FOO
bar 
$ echo \"$FOO\"
"bar "
$ echo $FOO | base64
YmFyCg==
$ echo "$FOO" | base64
YmFyIAo=
Run Code Online (Sandbox Code Playgroud)

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

Jor*_*itt 12

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

  • 你应该更具体一些。OP的意思是当你用base64编码时你应该使用echo -n。示例:`echo -n“我的秘密”| base64-w0` (3认同)