docker - 如何将 Kubernetes Volume secret 也作为 Env 变量注入(inject)到 Pod 中?

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

我的目标是从已安装的 secret 卷中为 pod 创建一个环境变量。我想跳过创建 Kubernetes secret 的中间步骤(并引用 env 的 k8s secret ),因此 etcd 存储上不会存储任何内容。

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

部署.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,环境变量就会消失。

知道环境变量消失的原因吗?

最佳答案

shell session 中设置的环境(如命令中的环境)仅是该 session 的本地环境。

关于docker - 如何将 Kubernetes Volume secret 也作为 Env 变量注入(inject)到 Pod 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70743541/

相关文章:

kubernetes - 如何在不使用引号的情况下使用 k8s Ansible 模块?

kubernetes - Kubernetes自动缩放器:在特定日期更改最小副本

kubernetes - 观看kubernetes Pane 状态以在客户端运行中完成

java - 我们可以在已经运行的 Kubernetes pod 中运行一个可执行的 jar 文件吗?

java - Gradle 和 Docker : How to run a Gradle build within Docker container?

amazon-web-services - AWS EC2 容器服务/Elastic Beanstalk Docker 容器端口 udp 绑定(bind)

linux - Dockerfile 通过采购脚本动态设置运行时 ENV

Mysql docker 容器在导​​入数据时阻塞(OSX)

docker - 在Docker上构建kubernetes

ubuntu - Kubernetes:如何设置作业/pod 的最短生命周期?