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_PASSWORD
和 POSTGRES_USER
图片。环境中的其他变量(包括从我的部署 yaml 中设置的没有秘密的变量)不包括尾随空格;只有秘密才有问题。
您的回显正在添加换行符。添加 -n 以省略尾随换行符
我在 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_PASSWORD
和 POSTGRES_USER
图片。环境中的其他变量(包括从我的部署 yaml 中设置的没有秘密的变量)不包括尾随空格;只有秘密才有问题。
您的回显正在添加换行符。添加 -n 以省略尾随换行符