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
    • Contributors
    • Reviewers

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: