Skip to content

[0.9.0] Install user provisioning RBAC during K3s setup - #241

Merged
sciabarracom merged 1 commit into
apache:0.9.0from
miki3421:fix/k3s-user-provisioning-rbac-090
Oct 24, 2026
Merged

sciabarracom merged 1 commit into
apache:0.9.0from
miki3421:fix/k3s-user-provisioning-rbac-090

Conversation

@miki3421

@miki3421 miki3421 commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Fresh K3s installations currently require a separate manual RBAC apply before the Secret-authorized user provisioning API can create tenants and their routes. Add ops cloud k3s rbac and invoke it from ops cloud k3s create after cert-manager setup.

Related to Michele's request: https://github.com/nuvolaris/projects/issues/447.
Complements the Admin API implementation already merged into 0.9.0: apache/openserverless-admin-api#64.

The task creates the openserverless namespace if absent and applies a bundled copy of the existing provisioning Role/RoleBinding. The manifest is byte-for-byte identical to deploy/user-provisioning/rbac.yaml in Apache Admin API 0.9.0. It binds the dedicated role to openserverless-wsku; the service account can be created later by the OpenServerless installation. A separate CLI invocation after K3s installation picks up the newly generated kubeconfig.

The task does not create or overwrite openserverless-user-provisioning-token. The provisioning token remains externally managed, and existing broader roles are unchanged. Command usage and installation behavior are documented in cloud/k3s/docopts.md.

Validation: YAML parsing, exact manifest comparison against Apache Admin API 0.9.0, task discovery, dry-runs of rbac and the full create task, and git diff --check passed.

Live validation on the existing K3s baseline VM also passed using this exact commit (0fa6f0f): ops cloud k3s rbac created the dedicated Role/RoleBinding on the first run and reported both unchanged on the second. Ten authorization checks used the actual Admin API pod's mounted service-account token: all eight required provisioning permissions were allowed, while namespace and ClusterRoleBinding creation remained denied. All 92 pre-existing resource identities/specifications/policies and 49 application source files were preserved. The Admin API pod stayed Ready without restart; the provisioning token Secret was not created or modified. The Role and RoleBinding remain installed. The full K3s installation was not repeated.

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.

3 participants