Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Feature Flags in Kubernetes
📖 Scenario: You are managing a Kubernetes deployment for a web application. You want to control a new feature rollout using feature flags. This means you can turn the feature on or off without changing the application code or redeploying.Feature flags will be stored as environment variables in the deployment manifest. You will create a ConfigMap to hold the feature flag, then update the deployment to use this flag.
🎯 Goal: Build a Kubernetes ConfigMap to store a feature flag, then update a Deployment to use this flag as an environment variable. Finally, check the pod environment to confirm the flag is set.
📋 What You'll Learn
Create a ConfigMap named feature-flags with a key NEW_FEATURE_ENABLED set to "false"
Update the Deployment named web-app to add an environment variable NEW_FEATURE_ENABLED from the ConfigMap
Verify the pod environment variable NEW_FEATURE_ENABLED is set correctly
💡 Why This Matters
🌍 Real World
Feature flags help teams release new features safely by enabling or disabling them dynamically in Kubernetes environments.
💼 Career
DevOps engineers often manage feature flags via ConfigMaps and environment variables to control application behavior without redeploying.
Progress0 / 4 steps
1
Create the ConfigMap for feature flags
Create a Kubernetes ConfigMap named feature-flags with a key NEW_FEATURE_ENABLED set to the string "false". Use the kubectl create configmap command with the literal flag.
Kubernetes
Hint
Use kubectl create configmap feature-flags --from-literal=NEW_FEATURE_ENABLED=false to create the ConfigMap.
2
Add environment variable from ConfigMap to Deployment
Edit the Deployment named web-app to add an environment variable NEW_FEATURE_ENABLED that gets its value from the ConfigMap feature-flags. Use kubectl patch deployment web-app with a JSON patch to add the environment variable under spec.template.spec.containers[0].env.
Kubernetes
Hint
Use a JSON patch to add the environment variable from the ConfigMap to the first container in the deployment.
3
Check the pod environment variable
Get the name of one pod from the web-app deployment using kubectl get pods with a label selector. Then use kubectl exec to run printenv NEW_FEATURE_ENABLED inside the pod to check the environment variable value.
Kubernetes
Hint
Use kubectl get pods -l app=web-app -o jsonpath='{.items[0].metadata.name}' to get the pod name, then kubectl exec to run printenv NEW_FEATURE_ENABLED.
4
Display the feature flag value
Print the output of the environment variable NEW_FEATURE_ENABLED from the pod. This should show false as the current feature flag value.
Kubernetes
Hint
The output should be exactly false, showing the feature flag is off.
Practice
(1/5)
1. What is the main purpose of feature flags in Kubernetes?
easy
A. To manage Kubernetes cluster nodes
B. To monitor cluster health
C. To schedule pods across nodes
D. To enable or disable application features without changing code
Solution
Step 1: Understand feature flags concept
Feature flags allow toggling features on or off without modifying the application code.
Step 2: Relate to Kubernetes usage
In Kubernetes, feature flags help control app behavior dynamically, often via ConfigMaps or environment variables.
Final Answer:
To enable or disable application features without changing code -> Option D
Quick Check:
Feature flags = toggle features without code change [OK]
Hint: Feature flags toggle features without code edits [OK]
Common Mistakes:
Confusing feature flags with cluster management
Thinking feature flags manage pods or nodes
Mixing feature flags with monitoring tools
2. Which Kubernetes resource is commonly used to store feature flags for an application?
easy
A. Service
B. Pod
C. ConfigMap
D. Ingress
Solution
Step 1: Identify resource types
Pods run containers, Services expose them, Ingress manages external access, ConfigMaps store configuration data.
Step 2: Match feature flags storage
Feature flags are configuration data, so ConfigMaps are the right resource to store them.
Final Answer:
ConfigMap -> Option C
Quick Check:
Feature flags stored in ConfigMap [OK]
Hint: ConfigMaps hold config data like feature flags [OK]
Common Mistakes:
Choosing Pod instead of ConfigMap
Confusing Service or Ingress with config storage
Thinking feature flags are stored in Secrets
3. Given this ConfigMap YAML snippet for feature flags:
If the ConfigMap 'feature-flags' does not have the key FEATURE_Z_ENABLED, what will happen when the pod starts?
medium
A. Pod will fail to start with an error
B. Pod will start with FEATURE_Z_ENABLED set to an empty string
C. Pod will start with FEATURE_Z_ENABLED set to null
D. Pod will ignore the environment variable
Solution
Step 1: Understand configMapKeyRef behavior
If the specified key is missing in the ConfigMap, Kubernetes treats it as an error.
Step 2: Effect on pod startup
The pod will fail to start because the environment variable cannot be resolved from the ConfigMap key.
Final Answer:
Pod will fail to start with an error -> Option A
Quick Check:
Missing ConfigMap key causes pod start failure [OK]
Hint: Missing ConfigMap key breaks pod start [OK]
Common Mistakes:
Assuming empty string or null is set silently
Thinking pod ignores missing keys
Confusing with optional environment variables
5. You want to enable a new feature only for 10% of users using feature flags in Kubernetes. Which approach best supports this scenario?
hard
A. Use a ConfigMap with a boolean flag set to true or false
B. Store a percentage value in ConfigMap and let the app decide feature enablement per user
C. Use a Secret to store the feature flag and update it daily
D. Deploy two versions of the app and route 10% traffic to the new version
Solution
Step 1: Understand percentage-based feature flags
To enable a feature for a subset of users, the flag must support partial enablement, not just true/false.
Step 2: Evaluate options
Store a percentage value in ConfigMap and let the app decide feature enablement per user stores a percentage in ConfigMap; the app reads it and enables the feature for that percent of users dynamically.
Final Answer:
Store a percentage value in ConfigMap and let the app decide feature enablement per user -> Option B
Quick Check:
Percentage flags need app logic with ConfigMap value [OK]
Hint: Use percentage value in ConfigMap for partial rollout [OK]