【问题标题】:Unable to add configmap data as environment variables into pod. it says invalid variable name cannot be added as environmental variable无法将 configmap 数据作为环境变量添加到 pod。它说无效的变量名不能添加为环境变量
【发布时间】:2020-11-11 16:43:37
【问题描述】:

我正在尝试将配置数据添加为环境变量,但 Kubernetes 会警告变量名称无效。 configmap 数据包含 JSON 和属性文件。

spec:
  containers:
    - name: env-var-configmap
      image: nginx:1.7.9 
      envFrom:
        - configMapRef:
            name: example-configmap

部署后,我没有看到它们添加到流程环境中。相反,我看到如下警告消息

配置映射 example-configmap 包含不是有效环境变量名称的键。只有具有有效名称的配置映射键才会被添加为环境变量。

但如果我直接将其添加为键值对,我认为它会起作用

env:
  # Define the environment variable
  - name: SPECIAL_LEVEL_KEY
    valueFrom:
      configMapKeyRef:
        # The ConfigMap containing the value you want to assign to SPECIAL_LEVEL_KEY
        name: special-config
        # Specify the key associated with the value
        key: special.how

我在 configmap 数据中有数千个键值,我无法将它们全部添加为单独的键值对。

是否有任何简短的语法可以将 configmap 中的所有值添加为环境变量?

【问题讨论】:

  • 您能否分享您尝试从中创建配置映射的文件。您的文件中的密钥无效,因此您需要检查这些密钥。
  • 这就是我的 json 文件中的数据。 { “logging.level.com.ing”:“INFO”,“logging.level.org.springframework”:“INFO”,“server.port”:“\”8443\””,“spring.profiles.active” : "okd", "server.ssl.enabled": "\"true\"" }
  • 是否可以添加如下 valueFrom: configMapKeyRef: key: {{ key }} name: sample-configmoap
  • 请查看文档:ConfigMap Restrictions。请将此 configMap 的可重现示例提供为 @tarun khosla 提到的 yaml 文件

标签: kubernetes openshift


【解决方案1】:

我的回答,虽然 @P-Ekambaram 已经帮助了你,但我收到了同样的错误消息,结果我的问题是我将 configMap 命名为 ms-provisioning-broadsoft-adapter 并试图使用 ms-provisioning-broadsoft-adapter 作为键.一旦我将它们更改为ms_provisioning_broadsoft_adapter,例如我添加了下划线而不是连字符,它很高兴让我将它添加到应用程序中。

希望这可能对同样遇到错误invalid variable name cannot be added as environmental variable的其他人有所帮助

【讨论】:

    【解决方案2】:

    示例参考如下

    create configmap as shown below
    
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: special-config
      namespace: default
    data:
      SPECIAL_LEVEL: very
      SPECIAL_TYPE: charm
    
    load configmap data as environment variables in the pod
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      containers:
        - name: test-container
          image: k8s.gcr.io/busybox
          command: [ "/bin/sh", "-c", "env" ]
          envFrom:
          - configMapRef:
              name: special-config
      restartPolicy: Never
    
    output
    
    master $ kubectl logs dapi-test-pod | grep SPECIAL
    SPECIAL_LEVEL=very
    SPECIAL_TYPE=charm
    

    【讨论】:

    • 当我添加为 envFrom 时,我正在创建 configmap 输出文件(具有不同数据格式的 .json 和 .properties 文件): - configMapRef: name: special-config 它会警告变量名无效
    • 不要使用 json 文件。将其转换为具有键值对的属性文件。
    【解决方案3】:

    你应该重命名你的变量。

    就我而言,它们是这样的:

    VV-CUSTOMER-CODE
    VV-CUSTOMER-URL
    

    我只是重命名为:

    VV_CUSTOMER_CODE
    VV_CUSTOMER_URL
    

    工作正常。 Openshift/kubernets 可以使用 underline _,但不能使用连字符 - 。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2015-10-10
      • 2019-12-17
      • 2014-12-17
      • 2018-10-26
      • 1970-01-01
      相关资源
      最近更新 更多