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 GUI #1137

Open alexbarbato opened 1 year ago

alexbarbato commented 1 year ago

Describe the problem/challenge you have Currently should one want to do somewhat trivial package install/app management of their clusters they have to do so on the CLI. This creates a level of friction that isn't desirable for many operators as they'd prefer to be able to imperatively make changes.

At some scale those imperative changes become quite impractical, but if for no other reason than it's a key consumption/devX problem with kapp controller as it stands.

Not to mention it's difficult to visualize what kapp-controller is doing today since there is no GUI to actually see changes as they are happening and what resources are kapp-controller managed.

Describe the solution you'd like Maybe a backstage plugin to manage kapp controller resources


Vote on this request

This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.

šŸ‘ "I would like to see this addressed as soon as possible" šŸ‘Ž "There are other more important things to focus on right now"

We are also happy to receive and review Pull Requests if you want to help working on this issue.

100mik commented 1 year ago

We have considered doing this before, however we haven't had the time to dig into it. I am going to mark this as accepted so that folks can chime in.

I personally would love to have this and work on it at some point, a solution like this does not necessarily need to live in this repo or org for that matter to start off with if someone wants to take a shot at this.

100mik commented 1 year ago

That reminds me KubeApps was building out a feature which allows observing Carvel packages but I am not sure about the amount of observability there.

(@antgamdia might be able to weigh in here)

antgamdia commented 1 year ago

Thanks @100mik for the mention! Yep, from Kubeapps(1) we were successfully able to build a GUI for managing Cavel packages (kapp-ctrl CRDs like PackageInstall, PackageMetadata, PackageRepository), along with the other supported packaging format like Helm releases controller by Helm or via by Fluxcd and Operators.

The documentation for Carvel packages, is available here: https://kubeapps.dev/docs/latest/tutorials/managing-carvel-packages/

Some examples of the UI you get:

Browsing packages image

Listing installed packages image

Installing a package image

Inspecting an installed package image

Maybe a backstage plugin to manage kapp controller resources

@alexbarbato, as we refactored the overall architecture, anyone can re-use our backend to serve a package-agnostic API, which enable developers to build any UI on top of it. Our Kubeapps dashboard is one of them, but a backstage plugin can also leverage these APIs.

Basically, we deal with all the "internals" to make it as simple as possible to invoke commands like "install a package", "browse a repository", "give me the k8s resources a package has installed in my cluster", etc.

image

Feel free to ping us in the public Slack channel if you want to discuss this further.

CCing @absoludity, who is the primary Kubeapps maintainer nowadays, and @ppbaena, our EM.


(1) For those unfamiliar with Kubeapps, it is an in-cluster web-based application that enables users with a one-time installation to deploy, manage, and upgrade applications on a Kubernetes cluster. Leveraging the existing RBAC in your cluster + using authentication backed by standalone OAuth2/OIDC provider or using Pinniped you can browse, upgrade and delete applications installed in the cluster.

Have a look at this getting started guide for further reference.

100mik commented 1 year ago

@alexbarbato have you had a chance to see if KubeApps measures up to what you are looking for? Might be a solution till we have a tailored approach to it.

I am guessing it would be cool if some of the "tailing" behaviour we have in kctrl was there in KubeApps as well šŸ¤” Better observability into a "reconciling" package/app that is.

alexbarbato commented 1 year ago

You're exactly right on where I feel like the current kubeapps stuff misses - the kctrl functionality is sooooooo valuable.

Be it viewing reconciling resources, kicking/pausing apps/pkgi's, viewing app details, etc etc

Kubeapps is fine, but backstage is somewhat becoming the defacto standard in the community now. I realize that anything you all give us is a gift, but if you reconsidered backstage I think it'd be worth it!