Overview
- Method for packaging, deploying and managing Kubernetes applications
- i.e., an application that runs in Kubernetes and is managed by the Kubernetes API
- Uses CRDs to manage applications and components
- Operators follow Kubernetes principles—e.g. control loop (Controllers)
- Links Controllers to one or more CRDs
Examples
- Deploy app on demand
- Taking backups of app state
- Failure simulation—resilience testing
- Provide housekeeping for DB CRD
- Create PVCs when new DB created
- Snapshot DB when deleted
- Manage regular backups
Arguments Against
- Complexity—more code to maintain
- Advanced use-cases only—persistent, highly available systems, e.g. distrubuted DB with quorum
- Not for distributed apps which simply talk to a DB
- Don’t use simply for configuration management—use Helm, GitOps etc.
- Not simply for exposing external systems
- Better paradigms to come
- Hides complex logic, but still a complex system to manage
- Security concerns—highly privileged component, adds risk
References