我们可以使用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

你不能使用这种方式,configmapsecret通常是将变量或文件注入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