‫CRD's and the Operator pattern.
‫This is where things start to get really interesting
‫with Kubernetes. Because when we start adding in
‫all these third-party tools, and there's
‫all these APIs in Kubernetes to extend it.
‫Kubernetes itself becomes its own platform for
‫you to do things that it was never designed
‫to do or you never thought it could do.
‫First off, if you haven't realized so far in this
‫course, you can add third-party stuff to Kubernetes.
‫It doesn't just use the Kubernetes API.
‫Now, with custom resources and custom controllers,
‫you can change the API.
‫You can actually use the API to extend
‫it. Then, even kubectl, at the command line,
‫gets new commands, and can see new resource types and
‫new controllers. A few years ago, CoreOS
‫came out with a nice article talking about the
‫Operator pattern, which was their way of implementing
‫custom resources and custom controllers together
‫in a way that would allow you to essentially use
‫previously complicated software in
‫Kubernetes, but that Kubernetes is aware
‫of that software. Maybe if you had a complex monitoring
‫system like Prometheus, and you wanted to deploy
‫it, run it keep it up to date,
‫and it just do all the things with it, you didn't
‫necessarily want to have to learn all the different
‫parts of it and how they work in Kubernetes.
‫Some of them might need StatefulSet.
‫Some might need deployments and services.
‫Some might need some sort of cron job in it.
‫I mean there's all these different types of resources that
‫it might need in order to have a fully functioning
‫monitoring solution.
‫That's just one example.
‫Basically, there's all this software now that is adopting
‫this pattern and implementing their own custom
‫code into Kubernetes to extend it.
‫Essentially, it gives you kubectl
‫commands to operate those tools
‫as if they were natively part of Kubernetes itself.
‫This is happening for all sorts of open source stuff
‫is that you can add this stuff in...in the resources
‫you'll see a bunch of lists and different websites you can
‫actually find these things.
‫You think of them as really complex
‫YAML files that don't just allow you to deploy
‫something and then it just runs,
‫but actually get commands and other API's
‫that extend out of Kubernetes itself.
‫It's a pretty exciting area because it's rather new and
‫it's just showing that how Kubernetes is taking over
‫everything. There's sort of no limit to
‫what it can't manage and control.
‫I would say that obviously you don't want to add everything
‫in here because each one of these would add its own
‫information to Kubernetes into the ETCD database,
‫extend the API and the control plane, and all that stuff.
‫It could be a potential area
‫where if you add too much, you'll end up with too much
‫complexity in your system itself.
‫Right now, at least for things like monitoring,
‫and databases, and backups, and logging,
‫these are the areas where I would focus on looking at
‫getting CRD's and the Operator pattern type
‫of deployments rather than just finding a YAML
‫that you've seen on the Internet and saying, I want to
‫deploy this with that YAML file.
‫This gives it more intelligence.
‫There's lots of resources on each one of these and of
‫course, each one would have a different implementation and
‫use. I definitely recommend checking them out now
‫that they exist.