【问题标题】:Kubernetes Secret is not stored in encoded format in environment variablesKubernetes Secret 未以编码格式存储在环境变量中
【发布时间】:2021-07-13 07:17:36
【问题描述】:

我是 Kubernetes 的初学者。我创建了一个秘密文件并在部署 yaml 文件中引用它。

app-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: app-secret
data:
  username: YWRtaW4=
  password: YWRtaW4=

部署.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

为什么它在环境变量中不是编码格式。能否请您告诉我原因,是否可以将其编码为编码格式?

【问题讨论】:

    标签: kubernetes kubernetes-secrets kubernetes-security


    【解决方案1】:

    创建密钥时,密钥会以 base64 编码 格式存储。默认情况下,将秘密添加或注入到 pod 或部署 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 文件保存到 secret 中,并将该文件挂载到部署路径中,应用程序可以访问 .env 文件,同时对其中的内容进行编码。

    kubectl exec pod-54rfxd -n dev-ns -- printenv

    只有当你拥有集群的管理员权限时才能运行此命令,否则其他人无法在 pod 内访问。

    【讨论】:

    • 非常感谢您的回复。我会阅读上述选项并尝试并让您知道。
    • “您可以做的是将编码的 .env 文件保存为机密文件并将该文件挂载到部署路径中,这样 .env 文件将可供应用程序访问,而其中的内容将被编码” -有样品可以分享一下吗?
    • 你可以检查这个答案,它和我描述的一样。在 env 中,而对于 VAR1 和 VAR2,您可以存储编码的 base64 值并将其添加到 pod 中。 stackoverflow.com/a/64872936/5525824 稍有不同,您必须将 .env 文件存储在机密中,而不是创建机密 --from-file。
    • alibaba-cloud.medium.com/… 这里是使用 configmap 的示例,您也可以使用它并将编码数据保存到 .txt 文件中。
    • Harsh Manvar - 从您分享的链接中,我得到了另一个链接 - alibabacloud.com/blog/… 这帮助我解决了我的情况。我终于采用了此链接中提到的卷挂载策略。非常感谢您的解释和建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2021-02-18
    相关资源
    最近更新 更多