секреты kubernetes имеют завершающие пробелы в переменных среды

Я создал развертывание в 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 без секретов) не включают завершающие пробелы; проблема только в секретах.


person koehn    schedule 02.01.2018    source источник


Ответы (1)


Ваше эхо добавляет новую строку. Добавьте -n, ​​чтобы опустить завершающую новую строку

person Jordan Liggitt    schedule 02.01.2018
comment
Вы должны быть более конкретными. OP означает, что при кодировании с помощью base64 вы должны использовать echo -n. Пример: echo -n "my secret" | base64 -w0 - person Matt O.; 08.08.2018