Cloud Programming Models and Runtimes - Kubernetes Operators
Kubernetes provides a resource model and a lifecycle model for resources running in the Kubernetes cluster, such as pods (co-located sets of containers), services and storage resources. Operators allow the Kubernetes platform to be extended to enable these same capabilities to be utilized to manage resources external to the cluster. Our team was an early advocate for Kubernetes Operators and has led the development of multiple operators that extend Kubernetes to manage Cloud resources.
IBM Cloud Operator
The IBM Cloud Operator provides a simple Kubernetes CRD-Based API to provision and bind IBM public cloud services on your Kubernetes cluster. With this operator, you no longer need out-of-band processes to consume IBM Cloud Services in your application; you can simply provide service and binding custom resources as part of your Kubernetes application templates and let the operator reconciliation logic ensure that the required resources are automatically created and maintained.
Kubernetes object specifications often require constant values for their fields. When deploying an entire application with many different resources, this limitation often results in the need for staged deployments, because some resources have to be deployed first in order to determine what data to provide for the specifications of dependent resources. This undermines the declarative nature of Kubernetes object specification and requires workflows, manual step-by-step instructions and/or brittle automated scripts for the deployment of applications as a whole.
The Composable operator alleviates this problem by wrapping any resource (native Kubernetes or CRD instance) and allowing it to be specified with references to fields of other objects. These references are resolved dynamically by the Compsable controller when the data becomes available. This allows the yaml for the entire application to be deployed at once regardless of dependencies, and leverages Kubernetes native mechanisms to stage the deployment of different resources.