carvel-dev / kapp-controller

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

Optional ability to check if client has permissions to perform CRUD actions before trying them #1381

Open ncdc opened 11 months ago

ncdc commented 11 months ago

Describe the problem/challenge you have When reconciling an App and making changes to a cluster, kapp immediately tries to perform all the CRUD changes. If/when it encounters an error, it stops immediately. This can leave the content on the cluster in some intermediate or unknown state.

Describe the solution you'd like Add an optional field to the App spec to allow the user to indicate they'd like kapp to check if the client (service account or cluster credentials) has permissions to perform every operation needed before executing any of them. If any of the checks fails, kapp makes no modifications to the cluster and returns an error.

Anything else you would like to add: The SubjectAccessReview API can be used for these checks.

The related kapp issue is https://github.com/carvel-dev/kapp/issues/855.


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 8 months ago

We do have access to al the GVKs we need CRUD on before we actually deploy. In theory, we could do SubjectAccessReviews on these in the diffing phase if a certain flag is provided 🤔

praveenrewar commented 8 months ago

(Related slack thread)

everettraven commented 7 months ago

@100mik @praveenrewar Now that there is a preflight check for this in kapp as of https://github.com/carvel-dev/kapp/pull/887 is there anything left to do for this functionality besides waiting for a new release of kapp?

It looks like the App resource already has an option to pass in a set of raw options via the App.spec.deploy.kapp.rawOptions field that can be used to enable/disable preflight checks

praveenrewar commented 7 months ago

@everettraven We have a list of kapp flags that are allowed in kapp-controller. We need to add the preflight flag in there while bumping the kapp version in kapp-controller.

praveenrewar commented 3 months ago

@everettraven Since the version of kapp with the preflight checks is now available in kapp-controller, do you want to add it to the allowed list?

everettraven commented 3 months ago

@praveenrewar I can add it to my list of things to do, but it will likely fall fairly low in priority on that list. If someone else has the cycles to do it sooner, please feel free to do so!