无法将 configmap 数据作为环境变量添加到 pod 中。它说不能将无效的变量名添加为环境变量

Unable to add configmap data as environment variables into pod. it says invalid variable name cannot be added as environmental variable

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

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

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

Config map example-configmap contains keys that are not valid environment variable names. Only config map keys with valid names will be added as environment variables.

但我发现如果我直接将它作为键值对添加它就可以了

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 中的所有值添加为环境变量?

示例参考如下

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

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

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

您应该重命名您的变量。

在我的例子中,他们是这样的:

VV-CUSTOMER-CODE
VV-CUSTOMER-URL

我刚刚重命名为:

VV_CUSTOMER_CODE
VV_CUSTOMER_URL

工作正常。 Openshift/kubernets 适用于 下划线 _,但不适用于连字符 - .

希望对你有帮助