operators

Extending the Kubernetes API with Custom Resources, Controllers and Operators

What is the controller pattern? And the operator pattern? How we can use custom controllers to extend the Kubernetes API? How we can build our own custom resources, controllers and operators?