本文介绍了Helm将iciKeyRef连接到一个环境变量中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用helm 3,并希望将3个secRefKey连接到单个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)
提前谢谢。
推荐答案
helm template
不会解析这些环境变量,它只会呈现模板,正如文档所述。
您需要部署图表。我举了一个简单的例子:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
volumes:
- name: shared-volume
emptyDir: {}
initContainers:
- name: busybox
image: busybox
volumeMounts:
- name: shared-volume
mountPath: /nginx-data
command: ["/bin/sh"]
# sleep so that we could exec into it
args: ["-c", "sleep 6000"]
env:
- name: PROP_ONE
valueFrom:
secretKeyRef:
key: one
name: secret-sample
- name: PROP_TWO
valueFrom:
secretKeyRef:
key: two
name: secret-sample
- name: PROP_THREE
value: $(PROP_ONE)
containers:
- name: nginx
image: nginx
volumeMounts:
- name: shared-volume
mountPath: /usr/share/nginx/html
然后您可以发出:
helm install foo .
然后发出helm ls
以查看它是否在群集中。
即使您现在执行:
kubectl describe pod nginx | grep PROP_THREE
您将看到引用是:
PROP_THREE: $(PROP_ONE)
如果您确实想要查看env变量,则必须执行容器(我不知道还有其他方法):
kubectl exec -it nginx -c busybox -- /bin/sh
然后:
env | grep PROP_THREE
PROP_THREE=bar
以查看它是否已正确解析。
这篇关于Helm将iciKeyRef连接到一个环境变量中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!