Я создал развертывание в Kubernetes 1.9, работающее на GKE, которое использует секреты, помещенные в переменные среды. Я загрузил секреты в GKE, используя файл yaml с кодировкой секретов base64.
Что я вижу в своем контейнере, так это то, что переменная среды присутствует, но значение включает конечный пробел. Вот как бы это выглядело, если бы я установил переменную окружения FOO со значением «bar», где base64, который я ввел в секреты yaml, будет «YmFyCg ==»:
$ echo $FOO
bar
$ echo \"$FOO\"
"bar "
$ echo $FOO | base64
YmFyCg==
$ echo "$FOO" | base64
YmFyIAo=
Это создает бесконечные трудности для приложений, которые читают из переменных среды, ожидая, что значение будет закодировано без дополнительных пробелов, например, POSTGRES_PASSWORD
и POSTGRES_USER
в изображении postgres:9.6
. Другие переменные в среде (включая те, которые установлены из моего развертывания yaml без секретов) не включают завершающие пробелы; проблема только в секретах.