Operator design
The Prometheus Operator is designed to alleviate the issues mentioned earlier in regard to the complexity involved with running an instance of Prometheus in a Kubernetes cluster. It does so by abstracting the various configuration options that are available for Prometheus into CustomResourceDefinitions (CRDs), which are reconciled by the Operator's controllers to maintain that the cluster's Prometheus installation is consistent with the desired state, whatever that might be (and however it might change).
Of course, in contrast to the example nginx Operator from earlier tutorials, the Prometheus Operator manages a far more complex application with many more possible states that it must be able to reconcile. But the general approach is still the same, so we can evaluate this Operator through the lens of the same development steps that have been shown throughout this book.
CRDs and APIs
As discussed many times already, CRDs are the main objects upon...