Feature flags in Kubernetes - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how enabling or disabling feature flags in Kubernetes affects the time it takes for the system to process configurations.
Specifically, how does the number of feature flags impact the work Kubernetes does?
Analyze the time complexity of checking feature flags during Kubernetes startup.
apiVersion: v1
kind: ConfigMap
metadata:
name: feature-flags
namespace: kube-system
data:
featureA: "true"
featureB: "false"
featureC: "true"
This ConfigMap holds feature flags that Kubernetes reads to enable or disable features during startup.
When Kubernetes starts, it reads each feature flag to decide what to enable.
- Primary operation: Iterating over each feature flag in the ConfigMap.
- How many times: Once for each feature flag present.
As the number of feature flags increases, Kubernetes must check more flags one by one.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 checks |
| 100 | 100 checks |
| 1000 | 1000 checks |
Pattern observation: The work grows directly with the number of feature flags.
Time Complexity: O(n)
This means the time to process feature flags grows in a straight line as you add more flags.
[X] Wrong: "Checking feature flags happens instantly no matter how many there are."
[OK] Correct: Each flag requires a check, so more flags mean more work and more time.
Understanding how configuration size affects system startup helps you reason about scaling and performance in real Kubernetes environments.
"What if Kubernetes cached feature flag results instead of checking each time? How would that change the time complexity?"
Practice
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 DQuick Check:
Feature flags = toggle features without code change [OK]
- Confusing feature flags with cluster management
- Thinking feature flags manage pods or nodes
- Mixing feature flags with monitoring tools
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 CQuick Check:
Feature flags stored in ConfigMap [OK]
- Choosing Pod instead of ConfigMap
- Confusing Service or Ingress with config storage
- Thinking feature flags are stored in Secrets
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?
Solution
Step 1: Read ConfigMap data values
The ConfigMap sets FEATURE_Y_ENABLED to the string "false" explicitly.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".Final Answer:
false -> Option AQuick Check:
ConfigMap value "false" = env var "false" [OK]
- Assuming boolean false instead of string "false"
- Thinking missing keys return null or undefined
- Confusing string values with boolean types
- name: FEATURE_Z_ENABLED
valueFrom:
configMapKeyRef:
name: feature-flags
key: FEATURE_Z_ENABLEDIf the ConfigMap 'feature-flags' does not have the key FEATURE_Z_ENABLED, what will happen when the pod starts?
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 AQuick Check:
Missing ConfigMap key causes pod start failure [OK]
- Assuming empty string or null is set silently
- Thinking pod ignores missing keys
- Confusing with optional environment variables
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 BQuick Check:
Percentage flags need app logic with ConfigMap value [OK]
- Using boolean flags for partial user enablement
- Relying on Secrets for feature flags
- Thinking traffic routing replaces feature flags
