Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add aggregated clusterrole #3193

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

j4ckstraw
Copy link

@j4ckstraw j4ckstraw commented Mar 12, 2025

kubernetes design user-facing roles: view/edit/admin. add aggregated clusterrole to support multi-tenant scenario

see https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles see https://kubernetes.io/docs/reference/access-authn-authz/rbac/#default-roles-and-role-bindings

Why are these changes needed?

Related issue number

ray-project/kuberay-helm#48
ray-project/kuberay-helm#50

Checks

  • I've made sure the tests are passing.
  • Testing Strategy
    • Unit tests
    • Manual tests
    • This PR is not tested :(

- ray.io
resources:
- rayjobs
- rayjobs/status
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only operator can update/patch status subresource. so viewer can get/list/watch xx/status, while editor not

metadata:
name: raycluster-viewer-role
labels:
rbac.authorization.k8s.io/aggregate-to-view: "true"
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

according to https://github.com/kubernetes/kubernetes/blob/master/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go#L290C1-L291C1, and https://github.com/kubernetes/kubernetes/blob/master/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go#L280 view clusterrole will aggregated to edit clusterrole, and edit clusterrole will aggregated to admin clusterrole, so only rbac.authorization.k8s.io/aggregate-to-view is enough.

@kevin85421
Copy link
Member

cc @andrewsykim @MortalHappiness @rueian for review

kubernetes design user-facing roles: view/edit/admin.
add aggregated clusterrole to support multi-tenant scenario

see https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles
see https://kubernetes.io/docs/reference/access-authn-authz/rbac/#default-roles-and-role-bindings

Signed-off-by: j4ckstraw <[email protected]>
@j4ckstraw j4ckstraw force-pushed the add-aggregate-labels-to-cluster-role branch from 857255b to 96eaed5 Compare March 18, 2025 02:05
Copy link
Member

@MortalHappiness MortalHappiness left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, please fix the CI errors.

@@ -1,6 +1,6 @@
apiVersion: v2
description: A Helm chart for Kubernetes
name: kuberay-operator
version: 1.1.0
version: 1.1.1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this line needs to be changed?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

chart has changed, if version not update, users cannot distinguish between new and old versions.

Copy link
Member

@MortalHappiness MortalHappiness Mar 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @kevin85421 Do you consider this only a patch version change, or do you think it is better to update the version to 1.2.0 or 2.0.0?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, I wasn't aware that it's 1.1.0. We should change it to nightly instead. Typically, I only update version in the release branch. I don't know why I updated it before.

Signed-off-by: j4ckstraw <[email protected]>
@j4ckstraw
Copy link
Author

Also, please fix the CI errors.

fixed. PTAL @MortalHappiness

rules:
- apiGroups:
- ray.io
resources:
- rayjobs
- rayjobs/status
Copy link
Member

@MortalHappiness MortalHappiness Mar 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why grant additional list and watch permissions for rayjobs/status?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just refer to kubernetes default clusterrole system:aggregate-to-view https://github.com/kubernetes/kubernetes/blob/b4c6895d0b0a913e3461bdc78358aa9514604b8f/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go#L111, it grant */status to view clusterrole. If rayxxx/status is not appropriate to be here, I can remove it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @kevin85421 Do you think it is okay to grant those additional permissions to status? Personally, I think it is fine to grant them.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's fine with me. I plan to revisit all RBAC permissions soon and can decide whether to remove it at that time. We can leave it as is for this PR.

Signed-off-by: j4ckstraw <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants