Правильный способ создать секрет K8S? - PullRequest
0 голосов
/ 24 марта 2020

Я не уверен, правильно ли я интерпретирую вывод из моего контейнера, но я вижу следующий вывод из sequelize в журналах:

Nates-MacBook-Pro:k8s natereed$ docker logs 1a3e6141d050
...
(node:36) UnhandledPromiseRejectionWarning: SequelizeConnectionError: password authentication failed for user 
"postgres
"

Это появляется там является дополнительным символом новой строки в имени пользователя, которое должно быть "postgres". База данных настроена с помощью переменной среды $ POSTGRESS_USERNAME (да, я знаю, что она введена с ошибкой, это от другого автора).

src/config/config.ts:    "username": process.env.POSTGRESS_USERNAME

Я загрузился в работающий контейнер и проверил, что переменные среды установлены правильно :

root@backend-feed-75c4f97d6-9tp2f:/usr/src/app# echo $POSTGRESS_USERNAME
postgres
root@backend-feed-75c4f97d6-9tp2f:/usr/src/app# echo $POSTGRESS_PASSWORD
...
root@backend-feed-75c4f97d6-9tp2f:/usr/src/app# echo $POSTGRESS_DB      
mydb

...

Чтобы создать секрет и затем применить его, я запустил:

echo "postgres" | openssl base64
(edit env-secret.yaml)
kubectl apply -f env-secret.yaml 

Содержимое секрета:

apiVersion: v1
kind: Secret
metadata:
  name: env-secret
type: Opaque
data:
  POSTGRESS_USERNAME: cG9zdGdyZXMK
  POSTGRESS_PASSWORD: ...

Разве это не правильно? способ создать секрет k8s?

Ответы [ 2 ]

4 голосов
/ 24 марта 2020

Простой вариант:

apiVersion: v1
kind: Secret
metadata:
  name: env-secret
type: Opaque
stringData:
  POSTGRESS_USERNAME: myapp
  POSTGRESS_PASSWORD: supersecret

stringData принимает простые строки вместо кодированных в base-64 []byte s.

3 голосов
/ 24 марта 2020

echo "postgres" включает новую строку в конце строки, которая также включена в закодированный секрет. Вместо этого используйте:

echo -n "postgres" | openssl base64

Флаг -n подавляет символ новой строки.

...