kubernetes: How to create and use configmap from multiple files

2/12/2019

I have the documentation regarding the configmap:

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-data

From what I understand is I can create a config map(game-config-2) from two files (game.properties and ui.properties) using

kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/kubectl/game.properties --from-file=configure-pod-container/configmap/kubectl/ui.properties

Now I see the configmap

kubectl describe configmaps game-config-2
Name:           game-config-2
Namespace:      default
Labels:         <none>
Annotations:    <none>

Data
====
game.properties:        158 bytes
ui.properties:          83 bytes

How can I use that configmap? I tried this way:

    envFrom:
    - configMapRef:
        name: game-config-2

But this is not working, the env variable is not picking from the configmap. Or can I have two configMapRef under envFrom?

-- Vikas Rathore
configmap
kubernetes

3 Answers

4/9/2019

As @Emruz_Hossain mentioned , if game.properties and ui.properties have only env variables then this can work for you

kubectl create configmap game-config-2 --from-env-file=configure-pod-container/configmap/kubectl/game.properties --from-env-file=configure-pod-container/configmap/kubectl/ui.properties
-- shubham_asati
Source: StackOverflow

2/13/2019

am not sure if you can load all key:value pairs from a specific file in a configmap as environemnt variables in a pod. you can load all key:value pairs from a specific configmap as environemnt variables in a pod. see below

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  SPECIAL_LEVEL: very
  SPECIAL_TYPE: charm
apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: gcr.io/google_containers/busybox
      command: [ "/bin/sh", "-c", "env" ]
      envFrom:
      - configMapRef:
          name: special-config
  restartPolicy: Never

Verify that pod shows below env variables

SPECIAL_LEVEL=very
SPECIAL_TYPE=charm
-- P Ekambaram
Source: StackOverflow

2/12/2019

One solution to this problem is to create a ConfigMap with a multiple data key/values:

apiVersion: v1
kind: ConfigMap
metadata:
  name: conf
data:
  game.properties: |
    <paste file content here>
  ui.properties: |
    <paste file content here>

Just don't forget | symbol before pasting content of files.

-- Ivan Aracki
Source: StackOverflow