Kubernetes Secret 未以编码格式存储在环境变量中
Kubernetes Secret is not stored in encoded format in environment variables
我是 Kubernetes 的初学者。我已经创建了一个秘密文件并在部署 yaml 文件中引用了它。
应用-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: app-secret
data:
username: YWRtaW4=
password: YWRtaW4=
deploy.yaml
env:
- name: DEPLOY_ENV
value: ${env}
- name: NAMESPACE_NAME
valueFrom:
fieldRef:
fieldPath : metadata.namespace
- name: APP_USERNAME
valueFrom:
secretKeyRef:
name: app-secret
key: username
- name: APP_PASSWORD
valueFrom:
secretKeyRef:
name: app-secret
key: password
在使用命令kubectl get secret pod-54rfxd -n dev-ns -o json
时,它仅以编码格式打印用户名和密码。当我使用命令 kubectl exec pod-54rfxd -n dev-ns -- printenv
查询环境变量列表时,结果如下。
APP_USERNAME=admin
APP_PASSWORD=admin
为什么它在环境变量中不是编码格式。你能告诉我原因吗,是否可以编码格式?
创建机密时,机密以 base64 encoded 格式存储。默认情况下,将秘密添加或注入 pod 或部署 Kubernetes 时使用 base64 解码秘密,因此您从 OS 获取纯文本 作为环境变量。
还有一些其他选项可以 encrypt 在 rest 而不是 encode.
https://cloud.google.com/kubernetes-engine/docs/how-to/encrypting-secrets
https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contengencryptingdata.htm
is it possible to have it in encoded format?
你可以做的是将编码的 .env 文件保存到秘密中,并将该文件挂载到部署路径中,应用程序可以访问 .env 文件,而其中的内容它将被编码。
kubectl exec pod-54rfxd -n dev-ns -- printenv
这个命令只有你可以 运行 也许当你有集群的管理员权限时,否则其他人不能在 pod 内访问。
我是 Kubernetes 的初学者。我已经创建了一个秘密文件并在部署 yaml 文件中引用了它。
应用-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: app-secret
data:
username: YWRtaW4=
password: YWRtaW4=
deploy.yaml
env:
- name: DEPLOY_ENV
value: ${env}
- name: NAMESPACE_NAME
valueFrom:
fieldRef:
fieldPath : metadata.namespace
- name: APP_USERNAME
valueFrom:
secretKeyRef:
name: app-secret
key: username
- name: APP_PASSWORD
valueFrom:
secretKeyRef:
name: app-secret
key: password
在使用命令kubectl get secret pod-54rfxd -n dev-ns -o json
时,它仅以编码格式打印用户名和密码。当我使用命令 kubectl exec pod-54rfxd -n dev-ns -- printenv
查询环境变量列表时,结果如下。
APP_USERNAME=admin
APP_PASSWORD=admin
为什么它在环境变量中不是编码格式。你能告诉我原因吗,是否可以编码格式?
创建机密时,机密以 base64 encoded 格式存储。默认情况下,将秘密添加或注入 pod 或部署 Kubernetes 时使用 base64 解码秘密,因此您从 OS 获取纯文本 作为环境变量。
还有一些其他选项可以 encrypt 在 rest 而不是 encode.
https://cloud.google.com/kubernetes-engine/docs/how-to/encrypting-secrets
https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contengencryptingdata.htm
is it possible to have it in encoded format?
你可以做的是将编码的 .env 文件保存到秘密中,并将该文件挂载到部署路径中,应用程序可以访问 .env 文件,而其中的内容它将被编码。
kubectl exec pod-54rfxd -n dev-ns -- printenv
这个命令只有你可以 运行 也许当你有集群的管理员权限时,否则其他人不能在 pod 内访问。