我正在使用 helm 3,并且希望将 3 个 SecretRefKey 连接成一个 Env Var 值。
这是我的 cronjob.yaml 文件:
apiVersion: batch/v1
kind: CronJob
metadata:
name: my-cronjob
spec:
schedule: {{ .Values.cron }}
jobTemplate:
spec:
template:
spec:
initContainers:
- name: PREFIX
valueFrom:
secretKeyRef:
name: {{ .Values.secretName }}
key: prefix
- name: ENV
valueFrom:
secretKeyRef:
name: {{ .Values.secretName }}
key: env
- name: SUFFIX
valueFrom:
secretKeyRef:
name: {{ .Values.secretName }}
key: suffix
- name: URL_FULL
value: $(PREFIX)$(ENV)$(SUFFIX)
containers:
.
.
.
.
.
我希望 URL_FULL
的值是 prefix
env
suffix
连接的实际值。
但是我使用 helm template
命令得到的实际上就是我在值中写入的内容:
- name: URL_FULL
value: $(PREFIX)$(ENV)$(SUFFIX)
提前致谢。
最佳答案
这是正确的;当您向 Kubernetes API 提交 pod 规范时,它将包含该文字字符串,其中包括 $(...)
引用(以及 secretRef:
block ,而不是值)的 secret )。
当 Kubernetes 创建 Pod 并启动容器时,集群本身将填充所有环境变量并进行字符串连接。如果这是一个部署,您可以通过运行来验证这一点
kubectl exec deployment/my-deployment -it -- \
sh -c 'echo $URL_FULL'
(在 Job 或 CronJob 中,您可能必须检测服务本身才能看到这一点。)
关于kubernetes - Helm 将 SecretKeyRef 连接到一个环境变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70019030/