我们可以使用在configmap中定义的数据作为部署中的键吗?



我创建了一个configmap。我在configmap

中添加了数据作为键值对
data:
EXTERNAL_CONFIG_FILE: /user/app/api/config

我需要使用这个变量来设置部署中的挂载路径

-  name: config-properties-volume-mnt
mountPath: {{ $EXTERNAL_CONFIG_FILE }}

我得到未定义的变量"$EXTERNAL_CONFIG_FILE"而部署。我不想在values.yaml中定义这个变量。是否有一种方法,我可以在部署中使用configmap中定义的这个变量?

不可能在manifest上动态定义任何参数,你必须使用Helm或Kustomize

或者你可以使用sed替换文本

不能这样使用configmap通常将变量或文件注入到POD中,而不是在声明步骤中。

-  name: config-properties-volume-mnt
mountPath: {{ $EXTERNAL_CONFIG_FILE }}

如果你有舵图,保持vaules.yaml的细节是唯一的选择。

子路径方法:

可以用子路径来实现,用子路径您可以使用以下环境:https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath-expanded-environment

apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: container1
env:
- name: EXTERNAL_CONFIG_FILE
value: /user/app/api/config
image: busybox:1.28
command: [ "sh", "-c", "while [ true ]; do echo 'Hello'; sleep 10; done | tee -a /logs/hello.txt" ]
volumeMounts:
- name: workdir1
mountPath: /logs
# The variable expansion uses round brackets (not curly brackets).
subPathExpr: $(EXTERNAL_CONFIG_FILE)
restartPolicy: Never
volumes:
- name: workdir1
hostPath:
path: /var/log/pods

代替env在上面的例子中,您可以使用configmap

最新更新