carvel-dev / kapp-controller

Continuous delivery and package management for Kubernetes.
https://carvel.dev/kapp-controller
Apache License 2.0
267 stars 102 forks source link

kapp-controller should have a ClusterAPI story #126

Open drawsmcgraw opened 3 years ago

drawsmcgraw commented 3 years ago

I love how kapp-controller brings the declarative model of consistent k8s workloads to everyday operations (i.e. "Install version x.y.z of FluentBit on all my k8s clusters).

I think if it is combined with ClusterAPI, there is a very compelling story. In the same way that I can define a source of truth for my kubernetes workloads, I can define a source of truth for my kubernetes landscape (e.g. "dev", "test", "prod" k8s clusters).

If kapp-controller deals with managing "packages", and a "package" is really a set of manifests, and if a Kubernetes cluster can be expressed in a manifest, then kapp-controller can treat a kubernetes cluster as just another package. This would be a great hook for people working toward a "gitops" model and unlocks a lot of use cases (fully-automated deployments, edge k8s clusters, rapid infra iteration, etc...)

ewrenn8 commented 3 years ago

Hey @drawsmcgraw thanks for the suggestion! Do you think this is something the new packaging apis would enable? If so, are there other things you're looking for around this (e.g. new docs)?

drawsmcgraw commented 3 years ago

Hi @ewrenn8 !

Do you think this is something the new packaging apis would enable?

Yes, absolutely. I think it's more of a question now, whether "a k8s cluster with a set of workloads installed" can masquerade as a package CR or if it merits creation of a new CR.

For some more insight on implementation, please see this repo. The README details the process of doing exactly that (defining "a k8s cluster with a set of workloads installed"). Maybe that can give a little more context?

The model in my mind is similar to the diagram on this blog post. Except the kapp-controller would live in the supervisor cluster instead of the workload k8s cluster. Does that make sense?

If so, are there other things you're looking for around this (e.g. new docs)?

Yes! If there is a doc that I can follow where I can have a supervisor cluster, then I install kapp-controller into that supervisor cluster and it creates a k8s cluster (with some workloads deployed in it), that would be a huge step forward.

I understand that's a big ask. I'm happy to talk more about it, test out docs, implementation methods, etc.

voor commented 2 years ago

https://carvel.dev/blog/casestudy-modernizing-the-us-army/