name: openfeature
compatibility: opencode
completeness: 95
content-types:
- guidance
- examples
- do-dont
- config
description: '"OpenFeature in Feature Flagging - cloud native architecture, patterns"
pitfalls, and best practices'
license: MIT
maturity: stable
metadata:
domain: cncf
output-format: manifests
related-skills: calico, cilium, longhorn
role: reference
scope: infrastructure
triggers: cdn, feature, flagging, infrastructure as code, monitoring, openfeature,
cloudformation, cloudfront
archetypes:
- educational
- strategic
anti_triggers:
- brainstorming
- vague ideation
- non-containerized architecture
response_profile:
verbosity: medium
directive_strength: low
abstraction_level: strategic
version: "1.0.0"
OpenFeature in Cloud-Native Engineering
Category: application-definition
Status: Incubating
Stars: 1,000
Last Updated: 2026-04-22
Primary Language: Multi-language
Documentation: https://openfeature.dev/
Purpose and Use Cases
What Problem Does It Solve?
OpenFeature addresses the fragmentation and vendor lock-in in feature flagging systems. Teams often build feature flagging directly into their applications, making it difficult to share configurations across microservices or switch between providers. OpenFeature provides a standardized, vendor-neutral API and SDKs for feature flagging that works consistently across different programming languages and backend providers.
When to Use This Project
Use OpenFeature when you need:
- Consistent feature flagging across microservices
- Support for multiple programming languages
- Vendor-neutral feature flagging implementation
- Fine-grained targeting and segmentation
- Audit trails and compliance tracking
- Integration with existing observability tooling
Key Use Cases
- Gradual Rollouts: Gradually roll out features to users
- A/B Testing: Test different feature variations
- Kill Switches: Instantly disable problematic features
- Canary Releases: Test features with small user segments
- Team Isolation: Enable features for specific teams only
- Emergency Retire: Disable features during incidents
Architecture Design Patterns
Core Components
- OpenFeature SDK: Language-specific client library for feature evaluation
- Provider Interface: Standard interface for feature flag backends
- Flag Provider: Implementation for specific flagging systems (Flagd, LaunchDarkly, etc.)
- Evaluation Context: User, environment, and device information for targeting
- Logger: Structured logging for flag evaluation events
- Metrics Exporter: Prometheus metrics for feature flag usage
Component Interactions
- Application → OpenFeature SDK: Request feature flag evaluation
- SDK → Provider: Delegate to specific provider implementation
- Provider → Backend: Query feature flag state from backend
- Provider → Logger: Log evaluation events
- Provider → Metrics: Export usage metrics
- Provider → Cache: Store recent evaluations for performance
Data Flow Patterns
- Feature Evaluation: Application → SDK → Provider → Backend → Result → Cache
- Context Building: Application → Context → SDK → Provider → Evaluation
- Event Logging: Evaluation → Logger → Logging system
- Metrics Export: Evaluation → Metrics → Prometheus → Dashboard
Design Principles
- Language Agnostic: SDKs for multiple programming languages
- Provider Interoperability: Standard interface for any backend
- Context-Aware: Rich context for targeting and segmentation
- Performance Optimized: Caching and asynchronous evaluation
- Observability-First: Built-in metrics and logging
- Evolution-Friendly: Versioned API for future enhancements
Integration Approaches
Integration with Other CNCF Projects
- Kubernetes: Feature flags for Kubernetes deployments
- Prometheus: Feature flag metrics for monitoring
- Grafana: Dashboards for feature flag usage
- OpenTelemetry: Distributed tracing for feature evaluations
- Helm: Deploy feature flag backends via Helm charts
- Tekton: Feature flag integration in CI/CD pipelines
- Envoy: Feature flags in service mesh configurations
API Patterns
- Feature Evaluation API: Evaluate feature flags by name
- Context API: Build rich evaluation context
- Provider API: Standard interface for flag providers
- Webhook API: Event notifications for flag changes
- REST API: HTTP interface for feature management
Configuration Patterns
- Provider Configuration: YAML/JSON for provider settings
- Flag Definitions: Declarative feature flag definitions
- Context Management: Shared context across evaluations
- Environment Variables: Configuration via environment
Extension Mechanisms
- Custom Providers: Implement support for new flagging backends
- Custom Evaluators: Implement custom evaluation logic
- Webhook Integrations: Extend to additional notification platforms
- Metrics Export: Add custom metrics collection
Common Pitfalls and How to Avoid Them
Configuration Issues
- Provider Setup: Ensure provider is correctly configured
- Context Validation: Validate context before evaluation
- Default Values: Define sensible defaults for missing flags
- Environment Isolation: Keep development and production flags separate
Performance Issues
- Evaluation Latency: Use caching for frequent evaluations
- Network Calls: Minimize network calls with local evaluation
- Memory Usage: Optimize context memory footprint
- Concurrency: Handle concurrent evaluations efficiently
Operational Challenges
- Flag Drift: Keep feature definitions in sync across environments
- Testing: Test feature flags in staging before production
- Rollback Plans: Test rollback procedures for flag issues
- Access Control: Restrict flag modification permissions
Security Pitfalls
- Flag Sensitive Data: Don't expose sensitive data through flags
- Access Control: Secure flag management endpoints
- Audit Logging: Log all flag evaluation and modification events
Coding Practices
Idiomatic Configuration
- Provider YAML: Declarative provider configuration
- Flag Definitions: Declarative feature flag definitions
- Context Templates: Reusable context templates
- Environment-Specific: Separate configurations for environments
API Usage Patterns
- Feature Evaluation: Simple feature flag evaluation
- Context Building: Build rich evaluation context
- Provider Registration: Register multiple providers
- Webhook Subscription: Subscribe to flag change events
Observability Best Practices
- Evaluation Metrics: Track feature evaluation rates and patterns
- Alerting: Set up alerts for unusual flag patterns
- Dashboard: Use Grafana dashboards for feature flag monitoring
- Audit Trail: Log all flag evaluation events
Development Workflow
- Local Development: Use local Flagd instance for development
- Testing: Test all feature flag variations
- Staging: Verify feature flags in staging environment
- CI/CD Integration: Integrate feature flags in CI/CD workflows
Fundamentals
Essential Concepts
- Feature Flag: Boolean or multi-variant switch for feature control
- Evaluation Context: User and environment information for targeting
- Provider: Backend implementation for feature flag storage
- Default Value: Fallback value when flag doesn't exist
- Variants: Multi-variant flag for A/B testing
- Flag Version: Version control for feature flags
Terminology Glossary
- Feature Flag: Switch that controls feature availability
- Provider: Backend system storing feature flags
- Context: User and environment data for targeting
- Evaluation: Checking if feature is enabled for context
- Variants: Different versions of a feature flag
- Stale Flag: Flag not updated after provider change
- Static Flag: Flag defined in configuration
Data Models and Types
- Feature Flag: Name, enabled status, variants, rules
- Evaluation Context: User, device, environment information
- Flag Provider: Provider configuration and status
- Evaluation Result: Flag value and metadata
Lifecycle Management
- Flag Lifecycle: Create → Define → Evaluate → Update → Delete
- Context Lifecycle: Build → Evaluate → Cache → Cleanup
- Provider Lifecycle: Setup → Sync → Evaluate → Update
State Management
- Flag State: Enabled, disabled, staged, rolled out
- Context State: Current context values for evaluation
- Provider State: Connected, disconnected, error
Scaling and Deployment Patterns
Horizontal Scaling
- SDK Scaling: Scale application instances with OpenFeature SDK
- Provider Scaling: Scale flag provider backend for high load
- Caching: Cache evaluations for frequently accessed flags
High Availability
- Provider Redundancy: Deploy multiple provider instances
- Cache Redundancy: Cache flag evaluations across instances
- Failover: Graceful degradation when provider unavailable
- Static Flags: Fallback to static flag definitions
Production Deployments
- Production Provider: Deploy production-grade flag provider
- Caching Layer: Use Redis or in-memory cache for evaluations
- Monitoring: Set up Prometheus and Grafana for monitoring
- Audit Logging: Enable audit logging for compliance
Upgrade Strategies
- Minor Version: In-place upgrade with API compatibility
- Major Version: Test new SDK versions before deployment
- Data Migration: Plan for flag data migration
- Rollback Plan: Keep previous version available
Resource Management
- Memory: Monitor memory usage for SDK cache
- CPU: Balance evaluation workload across instances
- Network: Monitor network traffic to flag provider
- Storage: Manage flag storage usage
Additional Resources
Troubleshooting
Common Issues
-
Deployment Failures
- Check pod logs for errors
- Verify configuration values
- Ensure network connectivity
-
Performance Issues
- Monitor resource usage
- Adjust resource limits
- Check for bottlenecks
-
Configuration Errors
- Validate YAML syntax
- Check required fields
- Verify environment-specific settings
-
Integration Problems
- Verify API compatibility
- Check dependency versions
- Review integration documentation
Getting Help
- Check official documentation
- Search GitHub issues
- Join community channels
- Review logs and metrics
Content generated automatically. Verify against official documentation before production use.
Examples
Basic Configuration
# Basic configuration example
apiVersion: v1
kind: ConfigMap
metadata:
name: {{project_name}}-config
namespace: default
data:
# Configuration goes here
config.yaml: |
# Base configuration
# Add your settings here
Kubernetes Deployment
# Kubernetes deployment for {{project_name}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{project_name}}
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: {{project_name}}
template:
metadata:
labels:
app: {{project_name}}
spec:
containers:
- name: {{project_name}}
image: {{project_name}}:latest
ports:
- containerPort: 8080
resources:
limits:
memory: "128Mi"
cpu: "500m"
Kubernetes Service
# Kubernetes service for {{project_name}}
apiVersion: v1
kind: Service
metadata:
name: {{project_name}}
namespace: default
spec:
selector:
app: {{project_name}}
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
When to Use
Use this skill when:
- Integrating a CNCF project into Kubernetes infrastructure — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster
- Designing cloud-native architecture — You are selecting and integrating CNCF tools to solve specific infrastructure challenges
- Resolving operational issues — A CNCF component is misbehaving, underperforming, or needs configuration changes
Core Workflow
-
Assess Requirements — Understand the use case, scale, integration needs, and existing infrastructure. Checkpoint: Document requirements, constraints, and success criteria.
-
Design Architecture — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. Checkpoint: Verify the architecture addresses all requirements and follows CNCF conventions.
-
Implement & Configure — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. Checkpoint: Validate all YAML against schema and test in a staging environment.
-
Deploy & Monitor — Apply manifests to the cluster, verify component health, and confirm observability is working. Checkpoint: Confirm all pods/services are running, probes passing, and metrics/alerts configured.
Constraints
MUST DO
- Include at least one complete working YAML manifest example
- Note when content is auto-generated vs. manually verified
- Reference relevant CNCF project documentation
MUST NOT DO
- Deploy manifests without testing in a staging environment first
- Use deprecated API versions (e.g., apps/v1beta1)
- Omit resource limits and requests in Kubernetes manifests