创建 k8s 秘密的正确方法?

Nat*_*eed 1 sequelize.js kubernetes kubernetes-secrets

我不确定我是否正确解释了容器的输出,但我在日志中看到了 sequelize 的以下输出:

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

似乎有在用户名,这应该是“Postgres的”额外的换行符。数据库配置了环境变量 $POSTGRESS_USERNAME (是的,我知道它拼写错误,它来自另一位作者)。

src/config/config.ts:    "username": process.env.POSTGRESS_USERNAME
Run Code Online (Sandbox Code Playgroud)

我进入正在运行的容器并检查环境变量是否设置正确:

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

...
Run Code Online (Sandbox Code Playgroud)

为了创建秘密然后应用,我运行了:

echo "postgres" | openssl base64
(edit env-secret.yaml)
kubectl apply -f env-secret.yaml 
Run Code Online (Sandbox Code Playgroud)

秘籍内容:

apiVersion: v1
kind: Secret
metadata:
  name: env-secret
type: Opaque
data:
  POSTGRESS_USERNAME: cG9zdGdyZXMK
  POSTGRESS_PASSWORD: ...
Run Code Online (Sandbox Code Playgroud)

这不是创建 k8s 秘密的正确方法吗?

cod*_*ger 5

简单的选择:

apiVersion: v1
kind: Secret
metadata:
  name: env-secret
type: Opaque
stringData:
  POSTGRESS_USERNAME: myapp
  POSTGRESS_PASSWORD: supersecret
Run Code Online (Sandbox Code Playgroud)

stringData采用纯字符串而不是 base-64 编码的[]bytes。