我是库伯内特斯的初学者。我已经创建了一个秘密文件并在部署yaml文件中引用了它。
app-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为什么它不是在环境变量中的编码格式。你能告诉我原因吗?可以用编码格式吗?
发布于 2022-07-13 18:34:06
您可以使用stringData格式:
apiVersion: v1
kind: Secret
metadata:
name: app-secret
stringData:
username: "YWRtaW4="
password: "YWRtaW4="来自K8s文档:

发布于 2021-04-19 05:25:22
在创建秘密时,使用base64 编码的格式存储机密get。在默认情况下,hile将秘密添加或注入到吊舱或部署库中,Kubernetes使用base64对秘密进行解码,因此您将从OS获得纯文本作为环境变量。
在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
它有可能有编码格式吗?
您可以做的是将编码的.env文件保存到秘密中,并将该文件挂载到应用程序可以访问的.env文件的部署路径中,而它中的内容将被编码。
kubectl exec po-54rfxd -n dev -- printenv
这个命令只有您可以运行,可能是当您拥有集群的管理权限时,否则,其他命令不能访问吊舱内部。
https://stackoverflow.com/questions/67156127
复制相似问题