Operator
1. CNCF Operator White Paper
1.1. Table of Contents
- Executive Summary
- Introduction
- Document Goal
- Target Audience
- Foundation
- Operator Design Pattern
- Operator Characteristics
- Operator Components in Kubernetes
- Operator Capabilities
- Security
- Operator Developer
- Application Developer (Operator-"Users")
- Operator Frameworks for Kubernetes
- CNCF Operator Framework
- Kopf
- kubebuilder
- Metacontroller
- Operator Lifecycle Management
- Upgrading the Operator
- Upgrading Declarative State
- Managing CRD Relations
- Use Cases for an Operator
- Prometheus Operator
- GitOps Operator
- Successful Patterns
- Single Application Management
- Operator of Operators
- One CRD per Controller
- Publishing and Finding Operators
- Further Reading
- Designing Operators
- Requirement Analysis
- Custom or Third-party Operator
- Tool Selection
- Programming Language
- Design Considerations
- References
- Emerging Patterns
- Operator Lifecycle Management
- Policy-Aware Operators
- References
- Conclusion
- Related Work
- Acknowledgements
1.2. Executive Summary
- Application infrastructure maintenance requires repetitive tasks.
- Operators encapsulate activities, checks, and state management.
- In Kubernetes, operators extend API functionality for automation.
- Operators enhance development speed, reduce errors, and increase autonomy.
- Document serves as a reference for implementing operator best practices.
1.3. Introduction
- Defines operators beyond Kubernetes, outlining characteristics and patterns.
- Highlights difference from controllers and provides best practices.
1.4. Document Goal
- Defines operators for cloud-native applications in Kubernetes.
1.5. Target Audience
- For application developers, Kubernetes operators, and service providers.
- Assumes basic Kubernetes knowledge (Pods, Deployments).
1.6. Foundation
- Operators automate state management leveraging Kubernetes features.
- Extend automation to highly capable offerings across platforms.
- Export automation concepts beyond Kubernetes.
1.7. Operator Design Pattern
- Manages resources using domain-specific knowledge and declarative state.
- Reduces manual work by coding management knowledge.
- User defines desired state; operators adjust to match real state.
1.8. Operator Characteristics
- Extends API with domain knowledge, like Prometheus object management.
- Dynamic configuration via custom objects enhances validation and autonomy.
- Automation for operational tasks ensures reliability and consistency.
1.9. Operator Components in Kubernetes
- Combines Kubernetes controllers and watched objects.
- Desired state defined in custom resources; reconciled with current state.
- Control Loop ensures specified state matches real state.
1.10. Operator Capabilities
- Capabilities include installation, upgrades, backup, recovery, scaling, etc.
- Operators create, upgrade, and manage resources automatically.
- Advanced functions include auto-scaling, remediation, and configuration tuning.
1.11. Security
- Security considerations for developers and users.
- Developers should focus on transparency, documentation, and scope.
- Users manage namespaces and RBAC carefully for secure deployment.
1.12. Operator Frameworks for Kubernetes
- Frameworks like CNCF Operator Framework, Kopf, kubebuilder for ease of use.
- Provide features like dependency management, discoverability, and stability.
1.13. Operator Lifecycle Management
- Manage operator versioning, maintain managed resource states during upgrades.
- Oversee complex relations and dependencies among multiple CRDs.
1.14. Use Cases for an Operator
- Examples like Prometheus Operator and GitOps highlight practical implementations.
- Operators can manage applications and non-application configurations declaratively.
1.15. Successful Patterns
- Focus on managing single applications, utilizing operator-of-operators architecture.
- Ensure clear separation of concerns and efficient resource management.
1.16. Designing Operators
- Analyze requirements, choose between custom and third-party Operators.
- Use appropriate tooling and programming languages for development.
- Design operators to suit operational needs and ensure backward compatibility.
1.17. Emerging Patterns
- Trends like dynamic authorization and Operator reuse provide new capabilities.
- Policy-aware operators and maintenance transparency are evolving considerations.
1.18. Conclusion
- Operators enhance orchestration capabilities but introduce complexities.
- Critical to weigh benefits against implementation challenges.
1.19. Related Work
- Expands on initial CoreOS blog post defining Operator roles.
- References various documents for deepened understanding and context.
1.20. Acknowledgements
- Community-driven effort of CNCF TAG App-Delivery Operator Working Group.
- Recognition of contributors and reviewers.
Tags::tool:cs: