我们可以使用configmap中定义的数据作为部署的关键吗?
Can we use the data defined in configmap as a key in deployment?
我创建了一个配置映射。我在 configmap
中添加了数据作为键值对
data:
EXTERNAL_CONFIG_FILE: /user/app/api/config
我需要使用这个变量来设置部署中的挂载路径
- name: config-properties-volume-mnt
mountPath: {{ $EXTERNAL_CONFIG_FILE }}
我在部署时收到未定义的变量“$EXTERNAL_CONFIG_FILE”。 我不想在 values.yaml 中定义这个变量。 有没有办法在部署中使用在 configmap 中定义的这个变量?
无法在清单上动态定义任何参数,您必须使用 Helm 或 Kustomize
否则您可以使用 sed 简单地替换清单中的 Text
你不能使用这种方式,configmap和secret通常是将变量或文件注入POD而不是在声明步骤.
- name: config-properties-volume-mnt
mountPath: {{ $EXTERNAL_CONFIG_FILE }}
如果您有 helm chart,将详细信息保存到 vaules.yaml
是唯一的选择。
子路径方法:
可以使用subpath来实现,用subpath可以使用环境: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
您可以使用 configmap
而不是上面示例中使用的 env
我创建了一个配置映射。我在 configmap
中添加了数据作为键值对data:
EXTERNAL_CONFIG_FILE: /user/app/api/config
我需要使用这个变量来设置部署中的挂载路径
- name: config-properties-volume-mnt
mountPath: {{ $EXTERNAL_CONFIG_FILE }}
我在部署时收到未定义的变量“$EXTERNAL_CONFIG_FILE”。 我不想在 values.yaml 中定义这个变量。 有没有办法在部署中使用在 configmap 中定义的这个变量?
无法在清单上动态定义任何参数,您必须使用 Helm 或 Kustomize
否则您可以使用 sed 简单地替换清单中的 Text
你不能使用这种方式,configmap和secret通常是将变量或文件注入POD而不是在声明步骤.
- name: config-properties-volume-mnt
mountPath: {{ $EXTERNAL_CONFIG_FILE }}
如果您有 helm chart,将详细信息保存到 vaules.yaml
是唯一的选择。
子路径方法:
可以使用subpath来实现,用subpath可以使用环境: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
您可以使用 configmap
而不是上面示例中使用的 env