0

我有许多想要进入 Kubernetes 集群的秘密“环境变量”。目前,我有一个包含这些秘密的目录,其中每个 var 都有一个对应的文件,其名称与应该分配给的变量相同。使用docker-compose,这给了我一个像for secret in .secrets/*; do export "$(basename $secret)"="$(cat $secret)" ; done

我希望避免在 kustomize 文件中明确指定这些秘密中的每一个。有没有一种简单的方法可以通过仅指定目录来为每个文件创建一个秘密?

4

1 回答 1

5

这是您可以在 Kustomize 之外完成此操作的一种方法。

可以使用valueFrom关键字在 Pod 规范中将 Secret 作为环境变量使用。有关此的文档位于https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables

知道了这一点,您可以修改脚本来为每个文件创建一个主密钥和一个密钥。一个示例(未经测试)可能类似于:

for secret in .secrets/*; do
    literals="$literals --from-literal=$(basename $secret)=$(cat $secret)"
done

kubectl create secret generic prod-secrets "$literals"

然后,在您的规范中引用该密钥中的特定密钥以获取相应的环境变量。假设其中之一是SECRET_USERNAME

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: prod-secrets
            key: SECRET_USERNAME
  restartPolicy: Never
于 2019-07-02T18:50:57.373 回答