I often think about Kubernetes as a Cloud Operating System (an interface to operate a cloud infrastructure).
Coming from the Linux ecosystem, where every distribution has a package manager (be it apt for debs, dnf for rpms, etc...), it seems weird to me that no such solution exists (AFAIK) for Kubernetes.
So far, we've seen Helm/Tanka which looks a lot like the tar.gz archives you'd deploy on a Slackware and wish for the lack of conflicts. In other words: no true dependency management (even with subcharts).
Same with FluxCD and ArgoCD, you need to write yourself the source and wire the dependencies together yourself. This is like giving you APT without a repository (dpkg?).
I just wish I could say "I have this package, it relies on cert-manager to generate certificates, install it if it's not already".
I wish I could have a `PackageRepository` resource that would act like a line in your APT's sources.list and deploy `PackageDefinition` resources in my cluster.
I wish I could have a `Package` resource that would deploy my application and its dependencies if not already installed.
You would get the following commands out of the box:
- kubectl get repositories -> list the repositories configured in your cluster
- kubectl get pkgdefs -> list available packages in your cluster
- kubectl get packages -> list installed packages in your cluster
The underlying package could be an Helm chart, a kapp-controller manifest, or ArgoCD applications. It does not really matter (it would be like tar.gz vs tar.xz vs ... for your Linux package manager).Is there work on this subject going on? Is it worth putting time into it (seems a lot of work)?
What do you think HN?