You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenShift的YAML块折叠标识中引用ConfigMap值?

正确在Deployment折叠块环境变量中引用ConfigMap值的方法

问题场景

现有如下ConfigMap存储配置值:

kind: ConfigMap
apiVersion: v1
metadata:
  name: my-service
  namespace: my-namespace
  labels:
    app: my-service
data:
  SPECIAL_NAME: Tom

需要在Deployment的容器环境变量USERS(使用块折叠标识>-定义的多行字符串)中引用SPECIAL_NAME的值,但直接写变量名或单独定义环境变量的方式均无效。

正确配置方法

通过先加载ConfigMap为容器环境变量,再在折叠块中用变量引用语法实现:

kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: my-namespace
  labels:
    app: my-service
spec:
  selector:
    matchLabels:
      app: my-service
  template:
    metadata:
      labels:
        app: my-service
    spec:
      containers:
        - name: my-service
          image: 'myservice.myrepo.com/my-service:latest'
          env:
            # 从ConfigMap加载SPECIAL_NAME为容器级环境变量
            - name: SPECIAL_NAME
              valueFrom:
                configMapKeyRef:
                  name: my-service
                  key: SPECIAL_NAME
            # 在折叠块字符串中用$(变量名)引用已加载的环境变量
            - name: USERS
              value: >-
                -javaagent:/opt/project/javaagent.jar
                -Users.exist=true
                -Users.first=John
                -Users.specialone=$(SPECIAL_NAME)
                ...

原理说明

  • Kubernetes支持在环境变量值中使用$(VAR_NAME)语法引用其他已定义的环境变量,Pod启动时会自动完成变量替换。
  • 之前的错误原因:
    1. 直接在折叠块中写SPECIAL_NAME,Kubernetes不会自动识别为ConfigMap中的键,只会当作普通字符串处理。
    2. 单独定义Users.specialone环境变量,该变量与USERS变量相互独立,不会合并到USERS的多行字符串中。

内容的提问来源于stack exchange,提问作者DAA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:50:19