我的目标是从已安装的 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/