related-skills: cncf-argo, cncf-artifact-hub, cncf-aws-eks, cncf-azure-aks
Operator Framework in Cloud-Native Engineering
Category: Application Management
Status: Active
Stars: 2,400
Last Updated: 2026-04-22
Primary Language: Go
Documentation: Tools to build and manage Kubernetes operators with standardized patterns
Purpose and Use Cases
Operator Framework is a core component of the cloud-native ecosystem, serving as standardized patterns
What Problem Does It Solve?
Operator Framework addresses the challenge of creating and managing Kubernetes operators with consistent patterns. It provides standardized operator lifecycle, automated upgrades, and operational best practices.
When to Use This Project
Use Operator Framework when building custom operators, managing stateful applications, or requiring complex application lifecycle management. Not ideal for simple deployments or when need automated operations for applications, manage complex stateful workloads, or require lifecycle automation.
Key Use Cases
- Database Operators for Kubernetes
- Logging Stack Operators
- Service Mesh Operators
- Machine Learning Operators
- Custom Application Operators
Architecture Design Patterns
Core Components
- OLM: Operator Lifecycle Manager for deployment
- CSV: ClusterServiceVersion for operator metadata
- Bundle: Operator package format
- Catalog Source: Repository of operators
- Operator Lifecycle Controller: Manages operator lifecycle
Component Interactions
- Bundle → Catalog: Bundle added to operator catalog
- OLM → Catalog: OLM fetches operator metadata
- OLM → Operator: OLM deploys operator
- Operator → Application: Operator manages application
Data Flow Patterns
- Bundle Creation: Operator code → CSV → Bundle → Catalog
- Deployment: OLM reads catalog → Creates installation plan → Deploys operator
- Upgrade: New CSV detected → Installation plan → Upgrade operator
- Status Sync: Operator status → OLM → Displayed in console
Design Principles
- Lifecycle Management: Automated installation and upgrades
- Dependency Resolution: Automatic handling of dependencies
- Declarative Installation: Install plans as YAML
- Upgrade Safety: Safe, staged upgrades
Integration Approaches
Integration with Other CNCF Projects
- Kubernetes: Core platform for operator execution
- Helm: Helm chart support for operators
- Prometheus: Metrics collection
- OpenShift: Integrated operator management
API Patterns
- CRDs: Define custom resources for operator
- API Groups: Versioned API groups
- Subscriptions: Operator subscription management
- InstallPlans: Automatic installation plans
Configuration Patterns
- Bundle YAML: Operator package format
- CatalogSource YAML: Catalog configuration
- Subscription YAML: Operator subscription
- Helm Chart: Helm-based operator packaging
Extension Mechanisms
- Custom Managers: Manage additional APIs
- Webhook Injection: Add admission webhooks
- Metrics Export: Custom metric exports
Common Pitfalls and How to Avoid Them
Misconfigurations
- Bundle Validation: Bundle not passing validation
- How to Avoid: Use operator-sdk bundle validate, check manifest requirements
- Upgrade Blocking: Upgrade blocked by validation
- How to Avoid: Review upgrade path, fix validation issues
Performance Issues
- RBAC Issues: Insufficient permissions for operator
- How to Avoid: Review ClusterRoles, use least privilege
- Operator State: Operator in failed state
- How to Avoid: Review operator logs, check CR status
Operational Challenges
- Dependency Resolution: Dependencies not resolved
- How to Avoid: Define operator dependencies clearly
- CR Migration: CR migration issues during upgrade
- How to Avoid: Implement CRD migration strategy
Security Pitfalls
Coding Practices
Idiomatic Configuration
- Declarative Design: Operator should be declarative
- Idempotent Operations: Operations should be idempotent
- Status Management: Keep CR status updated
API Usage Patterns
- operator-sdk: CLI for operator development
- kubectl apply: Apply operator manifests
- operator-sdk build: Build operator image
- operator-sdk scorecard: Run scorecard tests
Observability Best Practices
- Operator Metrics: Expose operator health metrics
- CR Metrics: Expose application metrics
- Upgrade Metrics: Track upgrade status
Testing Strategies
- Scorecard Tests: Run scorecard test suite
- Integration Tests: Test operator functionality
- Upgrade Tests: Test upgrade paths
Development Workflow
- Local Development: Use operator-sdk for development
- Debug Commands: Check operator and CR status
- Test Environment: Set up test cluster
- CI/CD Integration: Automate testing
- Monitoring Setup: Configure operator metrics
- Documentation: Maintain operator docs
Fundamentals
Essential Concepts
- CSV: ClusterServiceVersion
- Bundle: Operator package
- CatalogSource: Operator repository
- Subscription: Operator subscription
- InstallPlan: Installation plan
- OperatorGroup: Operator scope
- APIService: API service registration
- Webhook: Admission webhook
Terminology Glossary
- OLM: Operator Lifecycle Manager
- CSV: ClusterServiceVersion
- CRD: Custom Resource Definition
- Bundle: Operator package
- Catalog: Operator repository
Data Models and Types
- ClusterServiceVersion: Operator metadata
- CustomResourceDefinition: CRD schema
- Subscription: Operator subscription
- InstallPlan: Installation plan
Lifecycle Management
- Bundle Creation: Write operator → Create bundle → Push to catalog
- Operator Installation: Create subscription → OLM createsInstallPlan → Operator deployed
- Operator Upgrade: New CSV available → OLM creates new InstallPlan → Upgrade operator
- Operator Removal: Delete subscription → Operator undeployed
State Management
- Bundle State: Valid, invalid, or pending
- Subscription State: Installed, failed, or upgrading
- InstallPlan State: Installed, complete, or failed
- Operator State: Running, error, or stopped
Scaling and Deployment Patterns
Horizontal Scaling
- Operator Scaling: Scale operator deployment
- Catalog Scaling: Scale catalog deployments
- CRD Scaling: Handle many CR instances
High Availability
- Operator HA: Multiple operator replicas
- OLM HA: OLM controller replicas
- Catalog HA: Catalog server replicas
- CR HA: High availability for managed application
Production Deployments
- Catalog Setup: Set up operator catalog
- RBAC Configuration: Configure operator permissions
- Security Setup: Enable network policies, secrets
- Monitoring Setup: Configure operator metrics
- Logging Setup: Centralize operator logs
- Backup Strategy: Backup CRs and configurations
- Update Strategy: Plan operator upgrades
- Resource Quotas: Set namespace limits
Upgrade Strategies
- Catalog Upgrade: Update catalog with new bundles
- Operator Upgrade: Upgrade operator via OLM
- CRD Migration: Handle CRD schema changes
- Testing: Verify upgrade success
Resource Management
- CPU Resources: Set operator CPU limits
- Memory Resources: Configure operator memory limits
- Storage Resources: Configure CR storage
- Network Resources: Configure webhook network
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
1---2name: operator-framework3description: "Operator Framework in Tools to build and manage Kubernetes operators" with standardized patterns4license: MIT5---678910 related-skills: cncf-argo, cncf-artifact-hub, cncf-aws-eks, cncf-azure-aks111213# Operator Framework in Cloud-Native Engineering1415**Category:** Application Management 16**Status:** Active 17**Stars:** 2,400 18**Last Updated:** 2026-04-22 19**Primary Language:** Go 20**Documentation:** [Tools to build and manage Kubernetes operators with standardized patterns](https://operatorframework.io/docs/) 2122---2324## Purpose and Use Cases2526Operator Framework is a core component of the cloud-native ecosystem, serving as standardized patterns2728### What Problem Does It Solve?2930Operator Framework addresses the challenge of creating and managing Kubernetes operators with consistent patterns. It provides standardized operator lifecycle, automated upgrades, and operational best practices.3132### When to Use This Project3334Use Operator Framework when building custom operators, managing stateful applications, or requiring complex application lifecycle management. Not ideal for simple deployments or when need automated operations for applications, manage complex stateful workloads, or require lifecycle automation.3536### Key Use Cases3738- Database Operators for Kubernetes39- Logging Stack Operators40- Service Mesh Operators41- Machine Learning Operators42- Custom Application Operators4344---4546## Architecture Design Patterns4748### Core Components4950- **OLM**: Operator Lifecycle Manager for deployment51- **CSV**: ClusterServiceVersion for operator metadata52- **Bundle**: Operator package format53- **Catalog Source**: Repository of operators54- **Operator Lifecycle Controller**: Manages operator lifecycle5556### Component Interactions57581. **Bundle → Catalog**: Bundle added to operator catalog591. **OLM → Catalog**: OLM fetches operator metadata601. **OLM → Operator**: OLM deploys operator611. **Operator → Application**: Operator manages application6263### Data Flow Patterns64651. **Bundle Creation**: Operator code → CSV → Bundle → Catalog661. **Deployment**: OLM reads catalog → Creates installation plan → Deploys operator671. **Upgrade**: New CSV detected → Installation plan → Upgrade operator681. **Status Sync**: Operator status → OLM → Displayed in console6970### Design Principles7172- **Lifecycle Management**: Automated installation and upgrades73- **Dependency Resolution**: Automatic handling of dependencies74- **Declarative Installation**: Install plans as YAML75- **Upgrade Safety**: Safe, staged upgrades7677---7879## Integration Approaches8081### Integration with Other CNCF Projects8283- **Kubernetes**: Core platform for operator execution84- **Helm**: Helm chart support for operators85- **Prometheus**: Metrics collection86- **OpenShift**: Integrated operator management8788### API Patterns8990- **CRDs**: Define custom resources for operator91- **API Groups**: Versioned API groups92- **Subscriptions**: Operator subscription management93- **InstallPlans**: Automatic installation plans9495### Configuration Patterns9697- **Bundle YAML**: Operator package format98- **CatalogSource YAML**: Catalog configuration99- **Subscription YAML**: Operator subscription100- **Helm Chart**: Helm-based operator packaging101102### Extension Mechanisms103104- **Custom Managers**: Manage additional APIs105- **Webhook Injection**: Add admission webhooks106- **Metrics Export**: Custom metric exports107108---109110## Common Pitfalls and How to Avoid Them111112### Misconfigurations113114- **Bundle Validation**: Bundle not passing validation115 - **How to Avoid**: Use operator-sdk bundle validate, check manifest requirements116- **Upgrade Blocking**: Upgrade blocked by validation117 - **How to Avoid**: Review upgrade path, fix validation issues118119### Performance Issues120121- **RBAC Issues**: Insufficient permissions for operator122 - **How to Avoid**: Review ClusterRoles, use least privilege123- **Operator State**: Operator in failed state124 - **How to Avoid**: Review operator logs, check CR status125126### Operational Challenges127128- **Dependency Resolution**: Dependencies not resolved129 - **How to Avoid**: Define operator dependencies clearly130- **CR Migration**: CR migration issues during upgrade131 - **How to Avoid**: Implement CRD migration strategy132133### Security Pitfalls134135136---137138## Coding Practices139140### Idiomatic Configuration141142- **Declarative Design**: Operator should be declarative143- **Idempotent Operations**: Operations should be idempotent144- **Status Management**: Keep CR status updated145146### API Usage Patterns147148- **operator-sdk**: CLI for operator development149- **kubectl apply**: Apply operator manifests150- **operator-sdk build**: Build operator image151- **operator-sdk scorecard**: Run scorecard tests152153### Observability Best Practices154155- **Operator Metrics**: Expose operator health metrics156- **CR Metrics**: Expose application metrics157- **Upgrade Metrics**: Track upgrade status158159### Testing Strategies160161- **Scorecard Tests**: Run scorecard test suite162- **Integration Tests**: Test operator functionality163- **Upgrade Tests**: Test upgrade paths164165### Development Workflow166167- **Local Development**: Use operator-sdk for development168- **Debug Commands**: Check operator and CR status169- **Test Environment**: Set up test cluster170- **CI/CD Integration**: Automate testing171- **Monitoring Setup**: Configure operator metrics172- **Documentation**: Maintain operator docs173174---175176## Fundamentals177178### Essential Concepts179180- **CSV**: ClusterServiceVersion181- **Bundle**: Operator package182- **CatalogSource**: Operator repository183- **Subscription**: Operator subscription184- **InstallPlan**: Installation plan185- **OperatorGroup**: Operator scope186- **APIService**: API service registration187- **Webhook**: Admission webhook188189### Terminology Glossary190191- **OLM**: Operator Lifecycle Manager192- **CSV**: ClusterServiceVersion193- **CRD**: Custom Resource Definition194- **Bundle**: Operator package195- **Catalog**: Operator repository196197### Data Models and Types198199- **ClusterServiceVersion**: Operator metadata200- **CustomResourceDefinition**: CRD schema201- **Subscription**: Operator subscription202- **InstallPlan**: Installation plan203204### Lifecycle Management205206- **Bundle Creation**: Write operator → Create bundle → Push to catalog207- **Operator Installation**: Create subscription → OLM createsInstallPlan → Operator deployed208- **Operator Upgrade**: New CSV available → OLM creates new InstallPlan → Upgrade operator209- **Operator Removal**: Delete subscription → Operator undeployed210211### State Management212213- **Bundle State**: Valid, invalid, or pending214- **Subscription State**: Installed, failed, or upgrading215- **InstallPlan State**: Installed, complete, or failed216- **Operator State**: Running, error, or stopped217218---219220## Scaling and Deployment Patterns221222### Horizontal Scaling223224- **Operator Scaling**: Scale operator deployment225- **Catalog Scaling**: Scale catalog deployments226- **CRD Scaling**: Handle many CR instances227228### High Availability229230- **Operator HA**: Multiple operator replicas231- **OLM HA**: OLM controller replicas232- **Catalog HA**: Catalog server replicas233- **CR HA**: High availability for managed application234235### Production Deployments236237- **Catalog Setup**: Set up operator catalog238- **RBAC Configuration**: Configure operator permissions239- **Security Setup**: Enable network policies, secrets240- **Monitoring Setup**: Configure operator metrics241- **Logging Setup**: Centralize operator logs242- **Backup Strategy**: Backup CRs and configurations243- **Update Strategy**: Plan operator upgrades244- **Resource Quotas**: Set namespace limits245246### Upgrade Strategies247248- **Catalog Upgrade**: Update catalog with new bundles249- **Operator Upgrade**: Upgrade operator via OLM250- **CRD Migration**: Handle CRD schema changes251- **Testing**: Verify upgrade success252253### Resource Management254255- **CPU Resources**: Set operator CPU limits256- **Memory Resources**: Configure operator memory limits257- **Storage Resources**: Configure CR storage258- **Network Resources**: Configure webhook network259260---261262## Additional Resources263264- **Official Documentation:** https://operatorframework.io/docs/265- **GitHub Repository:** Check the project's official documentation for repository link266- **CNCF Project Page:** [cncf.io/projects/cncf-operator-framework/](https://www.cncf.io/projects/cncf-operator-framework/)267- **Community:** Check the official documentation for community channels268- **Versioning:** Refer to project's release notes for version-specific features269270---271272## Troubleshooting273274### Common Issues2752761. **Deployment Failures**277 - Check pod logs for errors278 - Verify configuration values279 - Ensure network connectivity2802812. **Performance Issues**282 - Monitor resource usage283 - Adjust resource limits284 - Check for bottlenecks2852863. **Configuration Errors**287 - Validate YAML syntax288 - Check required fields289 - Verify environment-specific settings2902914. **Integration Problems**292 - Verify API compatibility293 - Check dependency versions294 - Review integration documentation295296### Getting Help297298- Check official documentation299- Search GitHub issues300- Join community channels301- Review logs and metrics302*Content generated automatically. Verify against official documentation before production use.*303304## Examples305306### Basic Configuration307308309```yaml310# Basic configuration example311apiVersion: v1312kind: ConfigMap313metadata:314 name: {{project_name}}-config315 namespace: default316data:317 # Configuration goes here318 config.yaml: |319 # Base configuration320 # Add your settings here321```322323### Kubernetes Deployment324325326```yaml327# Kubernetes deployment for {{project_name}}328apiVersion: apps/v1329kind: Deployment330metadata:331 name: {{project_name}}332 namespace: default333spec:334 replicas: 1335 selector:336 matchLabels:337 app: {{project_name}}338 template:339 metadata:340 labels:341 app: {{project_name}}342 spec:343 containers:344 - name: {{project_name}}345 image: {{project_name}}:latest346 ports:347 - containerPort: 8080348 resources:349 limits:350 memory: "128Mi"351 cpu: "500m"352```353354### Kubernetes Service355356357```yaml358# Kubernetes service for {{project_name}}359apiVersion: v1360kind: Service361metadata:362 name: {{project_name}}363 namespace: default364spec:365 selector:366 app: {{project_name}}367 ports:368 - protocol: TCP369 port: 80370 targetPort: 8080371 type: ClusterIP372```373374---375376## When to Use377378Use this skill when:379380- **Integrating a CNCF project into Kubernetes infrastructure** — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster381- **Designing cloud-native architecture** — You are selecting and integrating CNCF tools to solve specific infrastructure challenges382- **Resolving operational issues** — A CNCF component is misbehaving, underperforming, or needs configuration changes383---384385## Core Workflow3863871. **Assess Requirements** — Understand the use case, scale, integration needs, and existing infrastructure. **Checkpoint:** Document requirements, constraints, and success criteria.3883892. **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.3903913. **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.3923934. **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.394395---396397## Constraints398399### MUST DO400- Include at least one complete working YAML manifest example401- Note when content is auto-generated vs. manually verified402- Reference relevant CNCF project documentation403404### MUST NOT DO405- Deploy manifests without testing in a staging environment first406- Use deprecated API versions (e.g., apps/v1beta1)407- Omit resource limits and requests in Kubernetes manifests