Bird
Raised Fist0
Kubernetesdevops~10 mins

Updating ConfigMaps and propagation in Kubernetes - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Updating ConfigMaps and propagation
Create or Update ConfigMap
↓
ConfigMap Stored in API Server
↓
Pods Reference ConfigMap
↓
Pod Restart or Reload Needed?
No→No Change in Pod
Yes↓
Pod Restart or Reload
↓
Pod Uses Updated ConfigMap
This flow shows how updating a ConfigMap affects pods: after updating, pods must restart or reload to use new data.
Execution Sample
Kubernetes
kubectl create configmap app-config --from-literal=key=oldvalue
kubectl get configmap app-config -o yaml
kubectl create configmap app-config --from-literal=key=newvalue -o yaml --dry-run=client | kubectl apply -f -
kubectl rollout restart deployment/myapp
Create a ConfigMap, check it, update it with new data, then restart pods to apply changes.
Process Table
StepCommandActionResultPod State
1kubectl create configmap app-config --from-literal=key=oldvalueCreate ConfigMapConfigMap 'app-config' created with key=oldvaluePods use oldvalue
2kubectl get configmap app-config -o yamlView ConfigMapShows key=oldvaluePods still use oldvalue
3kubectl create configmap app-config --from-literal=key=newvalue -o yaml --dry-run=client | kubectl apply -f -Update ConfigMapConfigMap 'app-config' updated with key=newvaluePods still use oldvalue
4kubectl rollout restart deployment/myappRestart PodsPods restarting to pick up new ConfigMapPods now use newvalue
5Pods running with updated ConfigMapPods runningPods use updated ConfigMap key=newvaluePods use newvalue
💡 Pods must restart or reload to use updated ConfigMap; update alone does not change running pods.
Status Tracker
VariableStartAfter Step 1After Step 3After Step 4Final
ConfigMap key valuenoneoldvaluenewvaluenewvaluenewvalue
Pod ConfigMap datanoneoldvalueoldvaluenewvaluenewvalue
Pod statenot runningrunningrunningrestartingrunning
Key Moments - 2 Insights
Why do pods not immediately use the updated ConfigMap after step 3?
Because pods load ConfigMap data at start, they keep using the old data until restarted or reloaded, as shown in execution_table row 3.
What does 'kubectl rollout restart' do in this context?
It restarts pods so they reload the updated ConfigMap, changing pod state from running old config to running new config (see execution_table row 4).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the ConfigMap key value after step 3?
Aoldvalue
Bnone
Cnewvalue
Dundefined
💡 Hint
Check the 'Result' column in row 3 showing ConfigMap updated with key=newvalue.
At which step do pods start using the updated ConfigMap value?
AStep 3
BStep 4
CStep 2
DStep 1
💡 Hint
Look at 'Pod State' column; pods use newvalue only after restart in step 4.
If you skip 'kubectl rollout restart', what happens to pods?
APods continue using old ConfigMap data
BPods crash immediately
CPods automatically reload ConfigMap
DPods delete ConfigMap
💡 Hint
Refer to execution_table row 3 and 5 showing pods still use oldvalue without restart.
Concept Snapshot
Updating ConfigMaps:
- Use 'kubectl create configmap' or 'kubectl apply' to update
- Pods do NOT auto-refresh ConfigMap data
- Restart or reload pods to apply changes
- Use 'kubectl rollout restart' for deployments
- Without restart, pods keep old config
Full Transcript
This lesson shows how updating a Kubernetes ConfigMap affects running pods. First, a ConfigMap is created with a key-value pair. When updated, the ConfigMap data changes in the cluster, but pods keep using the old data until they restart or reload. Restarting pods forces them to read the new ConfigMap values. The key commands are creating/updating the ConfigMap and restarting pods with 'kubectl rollout restart'. Without restarting, pods do not see the new ConfigMap values. This is important to remember when managing configuration changes in Kubernetes.

Practice

(1/5)
1. What happens when you update a ConfigMap in Kubernetes without restarting the pods using it?
easy
A. Pods continue using the old ConfigMap values until restarted
B. Pods automatically reload the new ConfigMap values immediately
C. Kubernetes deletes the pods using the old ConfigMap
D. ConfigMap update fails if pods are running

Solution

  1. Step 1: Understand ConfigMap behavior on update

    Updating a ConfigMap does not notify or refresh pods automatically.
  2. Step 2: Effect on running pods

    Pods keep using the old ConfigMap data until they are restarted or redeployed.
  3. Final Answer:

    Pods continue using the old ConfigMap values until restarted -> Option A
  4. Quick Check:

    Pods do not auto-refresh ConfigMaps = B [OK]
Hint: Pods need restart to use updated ConfigMaps [OK]
Common Mistakes:
  • Assuming pods auto-refresh ConfigMap changes
  • Thinking ConfigMaps update triggers pod restart automatically
  • Believing ConfigMap updates delete pods
2. Which command correctly updates a ConfigMap named app-config from a file config.yaml?
easy
A. kubectl update configmap app-config --from-file=config.yaml
B. kubectl edit configmap app-config --from-file=config.yaml
C. kubectl replace configmap app-config --from-file=config.yaml
D. kubectl create configmap app-config --from-file=config.yaml --dry-run=client -o yaml | kubectl apply -f -

Solution

  1. Step 1: Understand updating ConfigMap from file

    Direct update requires creating new YAML and applying it.
  2. Step 2: Use dry-run and apply for update

    Command C creates new ConfigMap YAML from file and applies it, updating existing ConfigMap.
  3. Final Answer:

    kubectl create configmap app-config --from-file=config.yaml --dry-run=client -o yaml | kubectl apply -f - -> Option D
  4. Quick Check:

    Use create with dry-run + apply to update ConfigMap = C [OK]
Hint: Use create with dry-run and apply to update ConfigMap [OK]
Common Mistakes:
  • Using 'kubectl update' which is not a valid command
  • Trying to edit ConfigMap with --from-file option
  • Using replace without proper YAML input
3. Given a pod using a ConfigMap mounted as a volume, what is the output of cat /etc/config/app.properties inside the pod immediately after updating the ConfigMap but before restarting the pod?
medium
A. Shows the updated content from the ConfigMap
B. Shows the old content from the ConfigMap before update
C. File is empty because ConfigMap is not mounted
D. Command returns an error because ConfigMap changed

Solution

  1. Step 1: Understand ConfigMap volume mount behavior

    ConfigMap mounted as volume is projected as files inside pod at start time.
  2. Step 2: Effect of ConfigMap update on mounted files

    Files inside pod do not update automatically; they keep old content until pod restart.
  3. Final Answer:

    Shows the old content from the ConfigMap before update -> Option B
  4. Quick Check:

    Mounted ConfigMap files do not auto-update = A [OK]
Hint: Mounted ConfigMap files update only after pod restart [OK]
Common Mistakes:
  • Assuming mounted files auto-refresh on ConfigMap update
  • Expecting empty files if ConfigMap changed
  • Thinking command errors due to ConfigMap update
4. You updated a ConfigMap but your pods still use old values. Which command fixes this without deleting pods manually?
medium
A. kubectl rollout restart deployment/myapp
B. kubectl delete pod -l app=myapp
C. kubectl apply -f configmap.yaml
D. kubectl configmap refresh myapp

Solution

  1. Step 1: Identify how to refresh pods after ConfigMap update

    Pods must restart to load new ConfigMap values.
  2. Step 2: Use rollout restart to restart pods gracefully

    Command 'kubectl rollout restart' triggers pod restart without manual deletion.
  3. Final Answer:

    kubectl rollout restart deployment/myapp -> Option A
  4. Quick Check:

    Use rollout restart to refresh pods = D [OK]
Hint: Use rollout restart to refresh pods after ConfigMap update [OK]
Common Mistakes:
  • Deleting pods manually instead of rollout restart
  • Expecting apply to restart pods automatically
  • Using non-existent commands like configmap refresh
5. You have a deployment using a ConfigMap for environment variables. After updating the ConfigMap, you want all pods to use the new values without downtime. What is the best approach?
hard
A. Update the ConfigMap and wait; pods auto-refresh environment variables
B. Delete all pods manually to force recreation with new ConfigMap
C. Update the ConfigMap and run kubectl rollout restart deployment/myapp
D. Edit each pod to mount the new ConfigMap version

Solution

  1. Step 1: Understand environment variable update behavior

    Pods do not auto-refresh environment variables from ConfigMap updates.
  2. Step 2: Use rollout restart for zero downtime update

    Rolling restart updates pods one by one, applying new ConfigMap values without downtime.
  3. Final Answer:

    Update the ConfigMap and run kubectl rollout restart deployment/myapp -> Option C
  4. Quick Check:

    Rollout restart updates pods gracefully = A [OK]
Hint: Use rollout restart for zero downtime ConfigMap update [OK]
Common Mistakes:
  • Expecting pods to auto-refresh env vars
  • Deleting pods causing downtime
  • Editing pods directly which is not recommended
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard