Bird
Raised Fist0
Kubernetesdevops~5 mins

Feature flags in Kubernetes - Commands & Configuration

Choose your learning style10 modes available

Start learning this pattern below

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
Introduction
Feature flags let you turn parts of your app on or off without changing code. In Kubernetes, you can use ConfigMaps to manage these flags easily and update your app behavior without redeploying.
When you want to enable a new feature for testing without redeploying your app
When you need to quickly disable a feature causing issues in production
When you want to gradually roll out a feature to some users by changing config
When you want to keep one app version but change behavior based on flags
When you want to separate feature control from app code for easier updates
Config File - feature-flags-configmap.yaml
feature-flags-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: feature-flags
  namespace: default
data:
  newFeatureEnabled: "true"
  betaFeature: "false"

This ConfigMap stores feature flags as key-value pairs.

newFeatureEnabled controls if the new feature is active.

betaFeature controls a beta feature toggle.

Your app reads these values to decide which features to run.

Commands
Create or update the ConfigMap with feature flags in Kubernetes.
Terminal
kubectl apply -f feature-flags-configmap.yaml
Expected OutputExpected
configmap/feature-flags created
Check the current feature flags stored in the ConfigMap.
Terminal
kubectl get configmap feature-flags -o yaml
Expected OutputExpected
apiVersion: v1 data: betaFeature: "false" newFeatureEnabled: "true" kind: ConfigMap metadata: name: feature-flags namespace: default resourceVersion: "12345" uid: abcdef12-3456-7890-abcd-ef1234567890
-o yaml - Outputs the ConfigMap in YAML format for easy reading
Restart the app deployment to pick up updated feature flags if your app reads them on startup.
Terminal
kubectl rollout restart deployment my-app
Expected OutputExpected
deployment.apps/my-app restarted
View detailed information about the feature flags ConfigMap.
Terminal
kubectl describe configmap feature-flags
Expected OutputExpected
Name: feature-flags Namespace: default Labels: <none> Annotations: <none> Data ==== betaFeature: false newFeatureEnabled: true Events: <none>
Key Concept

If you remember nothing else from this pattern, remember: use ConfigMaps to store feature flags so you can change app behavior without changing code or rebuilding images.

Common Mistakes
Changing the ConfigMap but not restarting the app pods
The app may not reload the new flags until restarted, so changes have no effect.
Restart the deployment or pods after updating the ConfigMap if your app reads flags only on startup.
Storing feature flags inside the app code instead of ConfigMaps
You lose flexibility to toggle features without redeploying the app.
Use ConfigMaps to separate feature flags from code for easy updates.
Using non-string values in ConfigMap data
ConfigMap data must be strings; other types cause errors or unexpected behavior.
Always store feature flag values as strings like "true" or "false".
Summary
Create a ConfigMap to hold feature flags as key-value pairs.
Apply the ConfigMap with kubectl apply -f to create or update it.
Check the ConfigMap contents with kubectl get or describe commands.
Restart your app deployment to apply new flags if your app reads them on startup.

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

  1. Step 1: Understand feature flags concept

    Feature flags allow toggling features on or off without modifying the application code.
  2. Step 2: Relate to Kubernetes usage

    In Kubernetes, feature flags help control app behavior dynamically, often via ConfigMaps or environment variables.
  3. Final Answer:

    To enable or disable application features without changing code -> Option D
  4. 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

  1. Step 1: Identify resource types

    Pods run containers, Services expose them, Ingress manages external access, ConfigMaps store configuration data.
  2. Step 2: Match feature flags storage

    Feature flags are configuration data, so ConfigMaps are the right resource to store them.
  3. Final Answer:

    ConfigMap -> Option C
  4. 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:
apiVersion: v1
kind: ConfigMap
metadata:
  name: feature-flags
data:
  FEATURE_X_ENABLED: "true"
  FEATURE_Y_ENABLED: "false"

What will be the value of FEATURE_Y_ENABLED when accessed as an environment variable in a pod?
medium
A. false
B. true
C. null
D. undefined

Solution

  1. Step 1: Read ConfigMap data values

    The ConfigMap sets FEATURE_Y_ENABLED to the string "false" explicitly.
  2. Step 2: Understand environment variable mapping

    When injected as env vars, values are strings exactly as in ConfigMap, so FEATURE_Y_ENABLED will be "false".
  3. Final Answer:

    false -> Option A
  4. Quick Check:

    ConfigMap value "false" = env var "false" [OK]
Hint: Env vars get exact string values from ConfigMap [OK]
Common Mistakes:
  • Assuming boolean false instead of string "false"
  • Thinking missing keys return null or undefined
  • Confusing string values with boolean types
4. You have this environment variable setup in a pod spec:
- name: FEATURE_Z_ENABLED
  valueFrom:
    configMapKeyRef:
      name: feature-flags
      key: FEATURE_Z_ENABLED

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

  1. Step 1: Understand configMapKeyRef behavior

    If the specified key is missing in the ConfigMap, Kubernetes treats it as an error.
  2. Step 2: Effect on pod startup

    The pod will fail to start because the environment variable cannot be resolved from the ConfigMap key.
  3. Final Answer:

    Pod will fail to start with an error -> Option A
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    Store a percentage value in ConfigMap and let the app decide feature enablement per user -> Option B
  4. Quick Check:

    Percentage flags need app logic with ConfigMap value [OK]
Hint: Use percentage value in ConfigMap for partial rollout [OK]
Common Mistakes:
  • Using boolean flags for partial user enablement
  • Relying on Secrets for feature flags
  • Thinking traffic routing replaces feature flags