【问题标题】:How to inject Kubernetes Volume secrets also as Env variable to the Pod?如何将 Kubernetes 卷机密也作为环境变量注入 Pod?
【发布时间】:2022-01-17 23:16:59
【问题描述】:

我的目标是从已安装的秘密卷中为 pod 创建一个环境变量。我想跳过创建 Kubernetes 密钥的中间步骤(并参考 env 的 k8s 密钥),因此 etcd 存储中没有存储任何内容。

我正在使用 CSI 驱动程序来装载我的 Azure Key Vault 的机密。音量正常工作。

部署.yaml:

...
spec:
  volumes:
    - name: keyvault-secrets
      csi:
        driver: secrets-store.csi.k8s.io
        readOnly: true
        volumeAttributes:
          secretProviderClass: kevault-secrets
  containers:
    - name: busybox
      image: k8s.gcr.io/e2e-test-images/busybox:1.29
      command:
        - /bin/sh
      args:
        - '-c'
        - >-
          SECRET1=$(cat /mnt/keyvault-secrets/secret1); export SECRET1;echo
          $SECRET1; sleep 1d;
      volumeMounts:
        - name: keyvault-secrets
          readOnly: true
          mountPath: /mnt/keyvault-secrets

在启动时,Pod 能够填充环境变量,甚至可以在控制台上正确打印其值。如果我登录 Pod,环境变量就消失了。

任何想法为什么环境变量会消失?

【问题讨论】:

  • 为什么不直接从密钥保险库的秘密中获取 env_vars?喜欢in azure documentation
  • 感谢您的提示,但这不是我们想要的。它引用了已创建的 k8s 机密,但我们希望在没有 k8s 机密的情况下实现这一目标
  • 是的,这是某种复制功能。请问您为什么不想使用secrets?是某种安全方面吗? Etcd 应在 Azure AKS 中加密。
  • 是的,因为公司的安全问题。我们可能会等待 KMS 提供者对 AKS 的支持:github.com/Azure/AKS/issues/845 除了 etcd 加密之外,它还会加密秘密。

标签: docker kubernetes kubernetes-pod csi-driver container-storage-interface


【解决方案1】:

shell 会话中设置的环境(如您的命令中的环境)仅对该会话本地。

【讨论】:

猜你喜欢
  • 2019-11-16
  • 2021-01-03
  • 2022-01-11
  • 2020-10-05
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
相关资源
最近更新 更多