首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes秘密不以编码格式存储在环境变量中

Kubernetes秘密不以编码格式存储在环境变量中
EN

Stack Overflow用户
提问于 2021-04-19 04:51:31
回答 2查看 1.5K关注 0票数 2

我是库伯内特斯的初学者。我已经创建了一个秘密文件并在部署yaml文件中引用了它。

app-secret.yaml

代码语言:javascript
复制
apiVersion: v1
kind: Secret
metadata:
  name: app-secret
data:
  username: YWRtaW4=
  password: YWRtaW4=

deploy.yaml

代码语言:javascript
复制
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查询环境变量列表时,它给出了以下结果。

代码语言:javascript
复制
APP_USERNAME=admin
APP_PASSWORD=admin

为什么它不是在环境变量中的编码格式。你能告诉我原因吗?可以用编码格式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-13 18:34:06

您可以使用stringData格式:

代码语言:javascript
复制
apiVersion: v1
kind: Secret
metadata:
  name: app-secret
stringData:
  username: "YWRtaW4="
  password: "YWRtaW4="

来自K8s文档:

K8s文档

票数 1
EN

Stack Overflow用户

发布于 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

这个命令只有您可以运行,可能是当您拥有集群的管理权限时,否则,其他命令不能访问吊舱内部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67156127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档