Within the Kubernetes community, there has always been a desire to continue to add new features and functionality into the apiserver; you see this every day from the version of each primitive you use. This desire grew so much that the community introduced custom aggregate apiservers these allow you to build custom apis and run them on the master with coordination from the exposed apiserver, but they require you to run your own storage layer or convince your cluster admin to let you use the primary etcd cluster. The community then created ThirdPartyResources; these gave you the ability to create custom resources that were registered with the apiserver and were able to be run what CoreOS coined as the Operator pattern. TPRs, while great, eventually were rebuilt and moved into apiextensions and called CRDs. In this talk, we will build an Operator using CRDs, the k8s code-generation libraries and informer libraries which are generated.
CRDs and Operators are excellent for anything from managing some custom resource like public keys in an SSH authorized_key file or to help you to create easily deployable custom-off-the-shelf software that any cluster administrator or developer could deploy into their environment without having to conform to a predefined spec.