Using ConfigMaps as Environment Variables in Kubernetes
📖 Scenario: You are deploying a simple web application on Kubernetes. You want to manage configuration settings like the app's greeting message using ConfigMaps. This way, you can change the message without changing the app code.
🎯 Goal: Create a ConfigMap with a greeting message, then configure a Pod to use this ConfigMap as environment variables. Finally, verify the Pod prints the greeting message from the ConfigMap.
📋 What You'll Learn
Create a ConfigMap named app-config with a key GREETING and value Hello, Kubernetes!
Create a Pod named greeting-pod that uses the app-config ConfigMap as environment variables
The Pod should run a container using the busybox image and print the GREETING environment variable
Verify the Pod output shows the greeting message from the ConfigMap
💡 Why This Matters
🌍 Real World
ConfigMaps let you separate configuration from code in Kubernetes. This helps you change app settings without rebuilding containers.
💼 Career
Knowing how to use ConfigMaps as environment variables is a key skill for Kubernetes administrators and DevOps engineers managing cloud-native apps.
Progress0 / 4 steps
1
Create the ConfigMap with the greeting message
Create a ConfigMap named app-config with a key GREETING and value Hello, Kubernetes! using the kubectl create configmap command.
Kubernetes
Hint
Use kubectl create configmap with --from-literal to add the key and value.
2
Create the Pod manifest using the ConfigMap as environment variables
Create a Pod manifest YAML named greeting-pod.yaml with a Pod named greeting-pod. Use the busybox image and set the environment variable GREETING from the ConfigMap app-config using envFrom.
Kubernetes
Hint
Use envFrom with configMapRef to load all keys from the ConfigMap as environment variables.
3
Apply the Pod manifest to create the Pod
Use the command kubectl apply -f greeting-pod.yaml to create the Pod named greeting-pod in the cluster.
Kubernetes
Hint
Use kubectl apply -f greeting-pod.yaml to create or update the Pod from the YAML file.
4
Check the Pod logs to see the greeting message
Run kubectl logs greeting-pod to display the logs of the Pod. The output should show the greeting message Hello, Kubernetes! from the ConfigMap environment variable.
Kubernetes
Hint
Use kubectl logs greeting-pod to see the output printed by the container.
Practice
(1/5)
1. What is the main purpose of using a ConfigMap in Kubernetes when setting environment variables for a pod?
easy
A. To separate configuration data from application code for easier updates
B. To store container images for pods
C. To manage network policies between pods
D. To define resource limits for containers
Solution
Step 1: Understand ConfigMap role
ConfigMaps hold configuration data separately from app code, allowing updates without rebuilding images.
Step 2: Identify correct purpose
Among options, only separating config data matches ConfigMap's main use for environment variables.
Final Answer:
To separate configuration data from application code for easier updates -> Option A
Quick Check:
ConfigMap purpose = separate config data [OK]
Hint: ConfigMaps separate config from code for flexible env vars [OK]
Common Mistakes:
Confusing ConfigMaps with container images
Thinking ConfigMaps manage network or resources
Using ConfigMaps to store secrets (use Secrets instead)
2. Which of the following is the correct syntax to load all keys from a ConfigMap named app-config as environment variables in a pod spec?
easy
A. envFrom:
- configMapRef:
name: app-config
B. env:
- name: app-config
valueFrom:
configMapKeyRef:
name: app-config
C. configMap:
name: app-config
D. envFrom:
- secretRef:
name: app-config
Solution
Step 1: Identify correct envFrom usage
To load all keys as env vars, use envFrom with configMapRef and the ConfigMap name.
Step 2: Check options for syntax correctness
envFrom:
- configMapRef:
name: app-config correctly uses envFrom with configMapRef. Others misuse keys or use secretRef incorrectly.
Final Answer:
envFrom:
- configMapRef:
name: app-config -> Option A
Quick Check:
Use envFrom + configMapRef for all keys [OK]
Hint: Use envFrom with configMapRef to load all keys [OK]
Common Mistakes:
Using env instead of envFrom for all keys
Confusing configMapRef with secretRef
Missing indentation or wrong key names
3. Given this pod spec snippet, what environment variables will be available inside the container?
envFrom:
- configMapRef:
name: my-config
And the ConfigMap my-config contains keys: API_URL=https://api.example.com and TIMEOUT=30.
medium
A. Only API_URL=https://api.example.com
B. API_URL=https://api.example.com and TIMEOUT=30
C. Only TIMEOUT=30
D. No environment variables will be set
Solution
Step 1: Understand envFrom with configMapRef
Using envFrom with configMapRef loads all keys from the ConfigMap as environment variables.
Step 2: Check ConfigMap keys
The ConfigMap has two keys: API_URL and TIMEOUT, so both become env vars.
Final Answer:
API_URL=https://api.example.com and TIMEOUT=30 -> Option B
Quick Check:
envFrom loads all keys as env vars [OK]
Hint: envFrom loads all ConfigMap keys as env vars [OK]
Common Mistakes:
Assuming only one key loads at a time
Confusing envFrom with env and missing keys
Thinking ConfigMap keys are not environment variables
4. You applied this pod spec to use a ConfigMap as environment variables, but the container does not see the variables. What is wrong?
envFrom:
- configMapRef:
name: wrong-config-name
The ConfigMap you created is named app-config.
medium
A. The pod spec must use secretRef instead of configMapRef
B. envFrom cannot be used to load ConfigMaps
C. ConfigMaps cannot be used as environment variables
D. The ConfigMap name in the pod spec does not match the actual ConfigMap name
Solution
Step 1: Compare ConfigMap names
The pod spec references wrong-config-name, but the actual ConfigMap is app-config.
Step 2: Understand impact of name mismatch
If names don't match, Kubernetes cannot find the ConfigMap, so env vars won't be set.
Final Answer:
The ConfigMap name in the pod spec does not match the actual ConfigMap name -> Option D
Quick Check:
ConfigMap name must match exactly [OK]
Hint: Check ConfigMap name spelling matches pod spec [OK]
Common Mistakes:
Using secretRef instead of configMapRef incorrectly
Assuming envFrom can't load ConfigMaps
Ignoring case sensitivity in names
5. You want to update environment variables in a running pod without rebuilding the container image. Which approach using ConfigMaps is correct?
hard
A. Use a Secret instead of ConfigMap for environment variables
B. Modify the container image to include new environment variables
C. Create or update a ConfigMap and reference it with envFrom in the pod spec, then restart the pod
D. Edit the pod spec to add environment variables directly and redeploy the image
Solution
Step 1: Understand ConfigMap update workflow
ConfigMaps allow updating config data separately; updating the ConfigMap and restarting the pod applies new env vars without rebuilding images.
Step 2: Evaluate options for best practice
Create or update a ConfigMap and reference it with envFrom in the pod spec, then restart the pod correctly uses ConfigMap with envFrom and pod restart. Others require image rebuild or confuse Secrets with ConfigMaps.
Final Answer:
Create or update a ConfigMap and reference it with envFrom in the pod spec, then restart the pod -> Option C
Quick Check:
Update ConfigMap + restart pod for new env vars [OK]
Hint: Update ConfigMap and restart pod, no image rebuild needed [OK]
Common Mistakes:
Rebuilding container image unnecessarily
Confusing Secrets with ConfigMaps for non-sensitive data
Editing pod spec without restarting pod
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.