related-skills: cncf-argo, cncf-artifact-hub, cncf-aws-dynamodb, cncf-aws-ecr
Rook in Cloud-Native Engineering
Category: Cloud Native Storage
Status: Active
Stars: 8,000
Last Updated: 2026-04-22
Primary Language: Go
Documentation: Cloud-Native Storage Orchestration for Kubernetes
Purpose and Use Cases
Rook is a core component of the cloud-native ecosystem, serving as for Kubernetes
What Problem Does It Solve?
Rook addresses the challenge of storage orchestration for Kubernetes clusters. It provides automated storage management, support for multiple storage backends, and cloud-native storage.
When to Use This Project
Use Rook when need storage orchestration, want automated storage management, or require storage integration with Kubernetes. Not ideal for simple deployments or when deploying distributed storage systems, need automated storage provisioning, or managing storage at scale.
Key Use Cases
- Ceph Storage on Kubernetes
- NFS Storage Provisioning
- File Storage for Pods
- Block Storage for Databases
- Object Storage for Applications
Architecture Design Patterns
Core Components
- Ceph Cluster: Distributed storage cluster
- Rook Operator: Manages storage clusters
- Rook Agent: Runs on each node for storage operations
- Ceph Monitors: Cluster monitoring daemons
- Ceph OSDs: Object storage daemons
Component Interactions
- Rook → Ceph Cluster: Rook creates and manages Ceph cluster
- Kubernetes → Rook: Kubernetes uses Rook for storage
- Pod → Ceph: Pods access Ceph storage
- Node → Rook Agent: Node-level storage operations
Data Flow Patterns
- Cluster Creation: Rook Operator → Ceph Cluster → Monitors → OSDs
- Volume Provisioning: PVC created → Rook → Ceph → Volume created
- Data I/O: Pod writes → Ceph → Replicated to OSDs
- Health Monitoring: Ceph → Rook → Kubernetes events
Design Principles
- Native Integration: Deep Kubernetes integration
- Automated Management: Full lifecycle management
- Flexible Storage: Support for multiple storage types
- Production Ready: Enterprise-grade storage
Integration Approaches
Integration with Other CNCF Projects
- Kubernetes: Core platform
- Ceph: Primary storage backend
- NFS: NFS provisioning
- Local PV: Local storage support
API Patterns
- CRDs: CephCluster, CephFilesystem, etc.
- Storage Classes: Auto-provisioned storage classes
- Volume Snapshots: Storage snapshot support
- PV/PVC: Standard Kubernetes storage
Configuration Patterns
- CephCluster YAML: Ceph cluster configuration
- StorageClass YAML: Storage class definitions
- Rook Ceph YAML: Rook operator configuration
- Helm Chart: Rook deployment
Extension Mechanisms
- Custom Storage Classes: Customize storage behavior
- Custom Monitoring: Add custom metrics
- Custom Backends: Add new storage backends
Common Pitfalls and How to Avoid Them
Misconfigurations
- Cluster Failure: Ceph cluster failure
- How to Avoid: Monitor Ceph health, set up alerts, plan for recovery
- Performance Issues: Storage performance degradation
- How to Avoid: Monitor I/O patterns, tune settings, check disk health
Performance Issues
- Upgrade Issues: Ceph version upgrade problems
- How to Avoid: Test upgrades, follow upgrade path, backup before upgrade
- Disk Failure: Physical disk failure
- How to Avoid: Monitor disk health, replace failed disks
Operational Challenges
- Memory Pressure: Ceph consuming too much memory
- How to Avoid: Configure memory limits, tune Ceph settings
- OSD Issues: OSD failures or degraded state
- How to Avoid: Monitor OSD health, check disk space
Security Pitfalls
Coding Practices
Idiomatic Configuration
- Declarative Storage: Define storage in YAML
- Storage Class Management: Manage storage classes through Rook
- Monitoring Integration: Integrate with Prometheus
API Usage Patterns
- kubectl apply: Apply storage configurations
- ceph status: Check Ceph cluster status
- Rook CLI: Rook-specific commands
- kubectl describe: Describe storage resources
Observability Best Practices
- Ceph Metrics: Expose Ceph cluster metrics
- Rook Metrics: Expose operator metrics
- Storage Metrics: Track storage utilization
Testing Strategies
- Integration Tests: Test storage operations
- Failover Tests: Test cluster failover
- Performance Tests: Validate storage performance
Development Workflow
- Local Development: Use minikube or kind
- Debug Commands: Check Rook and Ceph logs
- Test Environment: Set up test cluster
- CI/CD Integration: Automate storage testing
- Monitoring Setup: Configure storage observability
- Documentation: Maintain storage guides
Fundamentals
Essential Concepts
- Ceph Cluster: Distributed storage cluster
- Rook Operator: Storage orchestrator
- Monitors: Cluster monitors
- OSDs: Object storage daemons
- MDS: Metadata server
- RGW: Object storage gateway
- NFS: NFS server
- Block Pool: Block storage pool
- File System: Ceph file system
- Object Store: Rados gateway
Terminology Glossary
- Ceph: Distributed storage system
- Rook: Storage orchestrator
- OSD: Object Storage Daemon
- MON: Monitor
- MDS: Metadata Server
- RGW: Rados Gateway
- PVC: PersistentVolumeClaim
- SC: StorageClass
Data Models and Types
- CephCluster: Ceph cluster definition
- CephFilesystem: Ceph file system
- CephBlockPool: Block pool configuration
- CephObjectStore: Object store configuration
Lifecycle Management
- Cluster Creation: Create CephCluster → Rook creates cluster → Cluster ready
- Volume Provisioning: Create PVC → Rook creates volume → Pod mounts volume
- Upgrade Process: Update Ceph version → Rolling update → New version ready
- Failure Recovery: Detect failure → Heal → Restore redundancy
State Management
- Cluster State: Health, status, and readiness
- Pool State: Pool capacity and usage
- OSD State: OSD health and status
- PVC State: Binding and usage status
Scaling and Deployment Patterns
Horizontal Scaling
- OSD Scaling: Add OSDs to cluster
- Monitor Scaling: Scale monitor count
- Pod Scaling: Scale pods using storage
- Cluster Scaling: Add nodes to cluster
High Availability
- Cluster HA: Multi-node Ceph cluster
- Monitor HA: Multiple monitor nodes
- OSD HA: Replicated data across OSDs
- Node HA: Distribute storage across nodes
Production Deployments
- Cluster Setup: Deploy Ceph cluster via Rook
- Network Configuration: Configure storage network
- Security Setup: Enable encryption, RBAC
- Monitoring Setup: Configure Ceph metrics
- Logging Setup: Centralize Ceph logs
- Backup Strategy: Configure Ceph backups
- Resource Quotas: Set storage quotas
- Performance Tuning: Optimize Ceph settings
Upgrade Strategies
- Ceph Version: Upgrade Ceph version
- Rook Version: Upgrade Rook operator
- Node Upgrade: Upgrade storage nodes
- Testing: Verify storage functionality
Resource Management
- CPU Resources: Set Ceph CPU limits
- Memory Resources: Configure Ceph memory limits
- Storage Resources: Configure disk storage
- Network Resources: Configure storage network
Additional Resources
- Official Documentation: https://rook.io/docs/
- GitHub Repository: Check the project's official documentation for repository link
- CNCF Project Page: cncf.io/projects/cncf-rook/
- Community: Check the official documentation for community channels
- Versioning: Refer to project's release notes for version-specific features
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: rook3description: "Configures rook in cloud-native storage orchestration for kubernetes for cloud-native deployment and infrastructure management."4license: MIT5---678910 related-skills: cncf-argo, cncf-artifact-hub, cncf-aws-dynamodb, cncf-aws-ecr111213# Rook in Cloud-Native Engineering1415**Category:** Cloud Native Storage 16**Status:** Active 17**Stars:** 8,000 18**Last Updated:** 2026-04-22 19**Primary Language:** Go 20**Documentation:** [Cloud-Native Storage Orchestration for Kubernetes](https://rook.io/docs/) 2122---2324## Purpose and Use Cases2526Rook is a core component of the cloud-native ecosystem, serving as for Kubernetes2728### What Problem Does It Solve?2930Rook addresses the challenge of storage orchestration for Kubernetes clusters. It provides automated storage management, support for multiple storage backends, and cloud-native storage.3132### When to Use This Project3334Use Rook when need storage orchestration, want automated storage management, or require storage integration with Kubernetes. Not ideal for simple deployments or when deploying distributed storage systems, need automated storage provisioning, or managing storage at scale.3536### Key Use Cases3738- Ceph Storage on Kubernetes39- NFS Storage Provisioning40- File Storage for Pods41- Block Storage for Databases42- Object Storage for Applications4344---4546## Architecture Design Patterns4748### Core Components4950- **Ceph Cluster**: Distributed storage cluster51- **Rook Operator**: Manages storage clusters52- **Rook Agent**: Runs on each node for storage operations53- **Ceph Monitors**: Cluster monitoring daemons54- **Ceph OSDs**: Object storage daemons5556### Component Interactions57581. **Rook → Ceph Cluster**: Rook creates and manages Ceph cluster591. **Kubernetes → Rook**: Kubernetes uses Rook for storage601. **Pod → Ceph**: Pods access Ceph storage611. **Node → Rook Agent**: Node-level storage operations6263### Data Flow Patterns64651. **Cluster Creation**: Rook Operator → Ceph Cluster → Monitors → OSDs661. **Volume Provisioning**: PVC created → Rook → Ceph → Volume created671. **Data I/O**: Pod writes → Ceph → Replicated to OSDs681. **Health Monitoring**: Ceph → Rook → Kubernetes events6970### Design Principles7172- **Native Integration**: Deep Kubernetes integration73- **Automated Management**: Full lifecycle management74- **Flexible Storage**: Support for multiple storage types75- **Production Ready**: Enterprise-grade storage7677---7879## Integration Approaches8081### Integration with Other CNCF Projects8283- **Kubernetes**: Core platform84- **Ceph**: Primary storage backend85- **NFS**: NFS provisioning86- **Local PV**: Local storage support8788### API Patterns8990- **CRDs**: CephCluster, CephFilesystem, etc.91- **Storage Classes**: Auto-provisioned storage classes92- **Volume Snapshots**: Storage snapshot support93- **PV/PVC**: Standard Kubernetes storage9495### Configuration Patterns9697- **CephCluster YAML**: Ceph cluster configuration98- **StorageClass YAML**: Storage class definitions99- **Rook Ceph YAML**: Rook operator configuration100- **Helm Chart**: Rook deployment101102### Extension Mechanisms103104- **Custom Storage Classes**: Customize storage behavior105- **Custom Monitoring**: Add custom metrics106- **Custom Backends**: Add new storage backends107108---109110## Common Pitfalls and How to Avoid Them111112### Misconfigurations113114- **Cluster Failure**: Ceph cluster failure115 - **How to Avoid**: Monitor Ceph health, set up alerts, plan for recovery116- **Performance Issues**: Storage performance degradation117 - **How to Avoid**: Monitor I/O patterns, tune settings, check disk health118119### Performance Issues120121- **Upgrade Issues**: Ceph version upgrade problems122 - **How to Avoid**: Test upgrades, follow upgrade path, backup before upgrade123- **Disk Failure**: Physical disk failure124 - **How to Avoid**: Monitor disk health, replace failed disks125126### Operational Challenges127128- **Memory Pressure**: Ceph consuming too much memory129 - **How to Avoid**: Configure memory limits, tune Ceph settings130- **OSD Issues**: OSD failures or degraded state131 - **How to Avoid**: Monitor OSD health, check disk space132133### Security Pitfalls134135136---137138## Coding Practices139140### Idiomatic Configuration141142- **Declarative Storage**: Define storage in YAML143- **Storage Class Management**: Manage storage classes through Rook144- **Monitoring Integration**: Integrate with Prometheus145146### API Usage Patterns147148- **kubectl apply**: Apply storage configurations149- **ceph status**: Check Ceph cluster status150- **Rook CLI**: Rook-specific commands151- **kubectl describe**: Describe storage resources152153### Observability Best Practices154155- **Ceph Metrics**: Expose Ceph cluster metrics156- **Rook Metrics**: Expose operator metrics157- **Storage Metrics**: Track storage utilization158159### Testing Strategies160161- **Integration Tests**: Test storage operations162- **Failover Tests**: Test cluster failover163- **Performance Tests**: Validate storage performance164165### Development Workflow166167- **Local Development**: Use minikube or kind168- **Debug Commands**: Check Rook and Ceph logs169- **Test Environment**: Set up test cluster170- **CI/CD Integration**: Automate storage testing171- **Monitoring Setup**: Configure storage observability172- **Documentation**: Maintain storage guides173174---175176## Fundamentals177178### Essential Concepts179180- **Ceph Cluster**: Distributed storage cluster181- **Rook Operator**: Storage orchestrator182- **Monitors**: Cluster monitors183- **OSDs**: Object storage daemons184- **MDS**: Metadata server185- **RGW**: Object storage gateway186- **NFS**: NFS server187- **Block Pool**: Block storage pool188- **File System**: Ceph file system189- **Object Store**: Rados gateway190191### Terminology Glossary192193- **Ceph**: Distributed storage system194- **Rook**: Storage orchestrator195- **OSD**: Object Storage Daemon196- **MON**: Monitor197- **MDS**: Metadata Server198- **RGW**: Rados Gateway199- **PVC**: PersistentVolumeClaim200- **SC**: StorageClass201202### Data Models and Types203204- **CephCluster**: Ceph cluster definition205- **CephFilesystem**: Ceph file system206- **CephBlockPool**: Block pool configuration207- **CephObjectStore**: Object store configuration208209### Lifecycle Management210211- **Cluster Creation**: Create CephCluster → Rook creates cluster → Cluster ready212- **Volume Provisioning**: Create PVC → Rook creates volume → Pod mounts volume213- **Upgrade Process**: Update Ceph version → Rolling update → New version ready214- **Failure Recovery**: Detect failure → Heal → Restore redundancy215216### State Management217218- **Cluster State**: Health, status, and readiness219- **Pool State**: Pool capacity and usage220- **OSD State**: OSD health and status221- **PVC State**: Binding and usage status222223---224225## Scaling and Deployment Patterns226227### Horizontal Scaling228229- **OSD Scaling**: Add OSDs to cluster230- **Monitor Scaling**: Scale monitor count231- **Pod Scaling**: Scale pods using storage232- **Cluster Scaling**: Add nodes to cluster233234### High Availability235236- **Cluster HA**: Multi-node Ceph cluster237- **Monitor HA**: Multiple monitor nodes238- **OSD HA**: Replicated data across OSDs239- **Node HA**: Distribute storage across nodes240241### Production Deployments242243- **Cluster Setup**: Deploy Ceph cluster via Rook244- **Network Configuration**: Configure storage network245- **Security Setup**: Enable encryption, RBAC246- **Monitoring Setup**: Configure Ceph metrics247- **Logging Setup**: Centralize Ceph logs248- **Backup Strategy**: Configure Ceph backups249- **Resource Quotas**: Set storage quotas250- **Performance Tuning**: Optimize Ceph settings251252### Upgrade Strategies253254- **Ceph Version**: Upgrade Ceph version255- **Rook Version**: Upgrade Rook operator256- **Node Upgrade**: Upgrade storage nodes257- **Testing**: Verify storage functionality258259### Resource Management260261- **CPU Resources**: Set Ceph CPU limits262- **Memory Resources**: Configure Ceph memory limits263- **Storage Resources**: Configure disk storage264- **Network Resources**: Configure storage network265266---267268## Additional Resources269270- **Official Documentation:** https://rook.io/docs/271- **GitHub Repository:** Check the project's official documentation for repository link272- **CNCF Project Page:** [cncf.io/projects/cncf-rook/](https://www.cncf.io/projects/cncf-rook/)273- **Community:** Check the official documentation for community channels274- **Versioning:** Refer to project's release notes for version-specific features275276---277278## Troubleshooting279280### Common Issues2812821. **Deployment Failures**283 - Check pod logs for errors284 - Verify configuration values285 - Ensure network connectivity2862872. **Performance Issues**288 - Monitor resource usage289 - Adjust resource limits290 - Check for bottlenecks2912923. **Configuration Errors**293 - Validate YAML syntax294 - Check required fields295 - Verify environment-specific settings2962974. **Integration Problems**298 - Verify API compatibility299 - Check dependency versions300 - Review integration documentation301302### Getting Help303304- Check official documentation305- Search GitHub issues306- Join community channels307- Review logs and metrics308*Content generated automatically. Verify against official documentation before production use.*309310## Examples311312### Basic Configuration313314315```yaml316# Basic configuration example317apiVersion: v1318kind: ConfigMap319metadata:320 name: {{project_name}}-config321 namespace: default322data:323 # Configuration goes here324 config.yaml: |325 # Base configuration326 # Add your settings here327```328329### Kubernetes Deployment330331332```yaml333# Kubernetes deployment for {{project_name}}334apiVersion: apps/v1335kind: Deployment336metadata:337 name: {{project_name}}338 namespace: default339spec:340 replicas: 1341 selector:342 matchLabels:343 app: {{project_name}}344 template:345 metadata:346 labels:347 app: {{project_name}}348 spec:349 containers:350 - name: {{project_name}}351 image: {{project_name}}:latest352 ports:353 - containerPort: 8080354 resources:355 limits:356 memory: "128Mi"357 cpu: "500m"358```359360### Kubernetes Service361362363```yaml364# Kubernetes service for {{project_name}}365apiVersion: v1366kind: Service367metadata:368 name: {{project_name}}369 namespace: default370spec:371 selector:372 app: {{project_name}}373 ports:374 - protocol: TCP375 port: 80376 targetPort: 8080377 type: ClusterIP378```379380---381382## When to Use383384Use this skill when:385386- **Integrating a CNCF project into Kubernetes infrastructure** — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster387- **Designing cloud-native architecture** — You are selecting and integrating CNCF tools to solve specific infrastructure challenges388- **Resolving operational issues** — A CNCF component is misbehaving, underperforming, or needs configuration changes389---390391## Core Workflow3923931. **Assess Requirements** — Understand the use case, scale, integration needs, and existing infrastructure. **Checkpoint:** Document requirements, constraints, and success criteria.3943952. **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.3963973. **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.3983994. **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.400401---402403## Constraints404405### MUST DO406- Include at least one complete working YAML manifest example407- Note when content is auto-generated vs. manually verified408- Reference relevant CNCF project documentation409410### MUST NOT DO411- Deploy manifests without testing in a staging environment first412- Use deprecated API versions (e.g., apps/v1beta1)413- Omit resource limits and requests in Kubernetes manifests