📖 Scenario: You are managing configuration for a web application running on Kubernetes. To prevent accidental changes to configuration data, you want to create an immutable ConfigMap. This means once created, the ConfigMap cannot be changed, ensuring stability and safety.
🎯 Goal: Create an immutable ConfigMap in Kubernetes with specific data, add a label to it, and verify its immutability by printing the ConfigMap details.
📋 What You'll Learn
Create a ConfigMap named app-config with data keys APP_MODE set to production and LOG_LEVEL set to info
Add a label environment: production to the ConfigMap
Set the ConfigMap to be immutable
Print the ConfigMap YAML to verify the configuration
💡 Why This Matters
🌍 Real World
Immutable ConfigMaps are used in production Kubernetes environments to ensure configuration data does not change unexpectedly, which helps maintain application stability.
💼 Career
Understanding how to create and manage immutable ConfigMaps is important for DevOps engineers and Kubernetes administrators to enforce configuration safety and best practices.
Progress0 / 4 steps
1
Create the initial ConfigMap data
Create a ConfigMap YAML named app-config.yaml with apiVersion set to v1, kind set to ConfigMap, and metadata.name set to app-config. Add data with keys APP_MODE set to production and LOG_LEVEL set to info.
Kubernetes
Hint
Use YAML syntax to define the ConfigMap with the required fields and data keys.
2
Add a label to the ConfigMap
Add a labels section under metadata with the label environment: production in the app-config.yaml file.
Kubernetes
Hint
Indent the labels section properly under metadata.
3
Make the ConfigMap immutable
Add the field immutable: true under the root level of the ConfigMap YAML in app-config.yaml to make the ConfigMap immutable.
Kubernetes
Hint
The immutable field is a sibling to metadata and data.
4
Print the ConfigMap YAML
Run the command kubectl apply -f app-config.yaml to create the ConfigMap, then run kubectl get configmap app-config -o yaml to print the ConfigMap YAML and verify it is immutable.
Kubernetes
Hint
Use kubectl apply -f app-config.yaml to create the ConfigMap and kubectl get configmap app-config -o yaml to see its details.
Practice
(1/5)
1. What is the main purpose of setting immutable: true in a Kubernetes ConfigMap?
easy
A. To delete the ConfigMap automatically after use
B. To allow automatic updates to the ConfigMap
C. To encrypt the ConfigMap data
D. To prevent any changes to the ConfigMap after creation
Solution
Step 1: Understand the role of immutable: true
This setting makes the ConfigMap read-only after creation, preventing accidental or unauthorized changes.
Step 2: Compare with other options
Options A, B, and D describe behaviors unrelated to immutability: automatic deletion, updates, or encryption are not controlled by this flag.
Final Answer:
To prevent any changes to the ConfigMap after creation -> Option D
Quick Check:
Immutable ConfigMap = No changes allowed [OK]
Hint: Immutable means no changes allowed after creation [OK]
Common Mistakes:
Thinking immutable allows updates
Confusing immutability with encryption
Assuming immutable deletes the ConfigMap
2. Which of the following is the correct syntax to create an immutable ConfigMap in Kubernetes YAML?
easy
A. apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
spec:
immutable: true
data:
key: value
B. apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
immutable: true
data:
key: value
C. immutable: true
metadata:
name: my-config
data:
key: value
D. spec:
immutable: true
data:
key: value
Solution
Step 1: Identify correct placement of immutable: true
In Kubernetes, immutable is a top-level field for ConfigMaps, at the same level as metadata and data.
Step 2: Validate YAML structure
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
immutable: true
data:
key: value correctly places immutable: true at top-level with proper indentation and includes required fields like apiVersion, kind, and metadata.
Final Answer:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
immutable: true
data:
key: value -> Option B
Quick Check:
Immutable at top-level with metadata and data [OK]
Hint: Immutable: true at top-level after metadata [OK]
Common Mistakes:
Adding unnecessary spec section
Putting immutable under metadata
Missing apiVersion or kind fields
3. Given this YAML snippet for a ConfigMap with immutable: true:
Immutable ConfigMaps cannot be changed. Editing or removing the flag is not allowed on existing objects.
Step 2: Choose best practice for updates
Creating a new ConfigMap with a new name and updating workloads to reference it ensures stability and traceability.
Final Answer:
Create a new ConfigMap with a different name and update workloads to use it -> Option C
Quick Check:
Immutable update = new ConfigMap + workload update [OK]
Hint: Create new ConfigMap and update pods to use it [OK]
Common Mistakes:
Trying to edit immutable ConfigMap directly
Deleting ConfigMap without updating workloads
Removing immutable flag on existing ConfigMap
5. You have a deployment using an immutable ConfigMap named app-config-v1. You need to update configuration safely without downtime. What is the best approach?
hard
A. Create app-config-v2 ConfigMap with new data, update deployment to use it, then rollout pods gradually
B. Update app-config-v1 directly and restart pods immediately
C. Delete app-config-v1 and create a new ConfigMap with the same name and updated data
D. Patch the deployment to ignore ConfigMap changes and keep using old config