Managing membership
Who manages membership
Section titled “Who manages membership”Tenant membership on Kestrel is managed in CCDB, not in Keycloak. The PI adds or removes users from the Cloud RAP at ccdb.alliancecan.ca; there is no Kestrel-side group store to update and no RCS ticket required for routine membership changes.
Only the PI holding the Cloud RAP (or a delegate with the appropriate CCDB role) can modify the RAP’s user list. Graduate students, postdocs, and research staff cannot add themselves — they must ask their PI.
Adding a user
Section titled “Adding a user”- Log in to
ccdb.alliancecan.cawith your Alliance CCI. - Navigate to your Cloud RAP (e.g.
def-profnameorcrg-profname-xx). - Add the user’s CCRI to the RAP’s member list.
- The user runs
kubeloginonce — their next OIDC login through Keycloak returns anid_tokenwith the Cloud RAP’s group name in thegroupsclaim, andkubectlworks.
The user must already have a CCDB account with a sponsored role under your supervision. If they do not, they need to register at ccdb.alliancecan.ca first — see Requesting access for the full end-to-end flow.
The propagation chain
Section titled “The propagation chain”When you add or remove a user in CCDB, the change flows through three systems before it takes effect in kubectl:
- CCDB — the PI makes the change in the Cloud RAP’s user list.
- Alliance LDAP — CCDB propagates the membership change to the Alliance LDAP directory (
dc=computecanada,dc=ca). This is usually immediate but can take a few minutes. - Keycloak — Kestrel’s OIDC broker reads Alliance LDAP on every authentication. The next time the user runs
kubelogin, Keycloak issues anid_tokenreflecting the updated group membership. - kube-apiserver — validates the OIDC token’s
groupsclaim and maps it to the Capsule Tenant owner group (oidc:<rap-group-name>).
There is no cache to flush or sync to trigger — the chain is pull-based. The user simply runs kubelogin again and the updated membership takes effect.
Removing a user
Section titled “Removing a user”- Log in to
ccdb.alliancecan.ca. - Open your Cloud RAP and remove the user’s CCRI from the member list.
- The next time the user runs
kubelogin, theirid_tokenno longer contains the Cloud RAP’s group name, andkubectlrequests against tenant namespaces are denied.
Existing running workloads are not affected — Kubernetes does not kill Pods when a user loses access. The user simply cannot create, modify, or delete resources in the tenant’s namespaces going forward.
Troubleshooting membership issues
Section titled “Troubleshooting membership issues”| Symptom | Likely cause | Fix |
|---|---|---|
User added but kubectl get ns returns nothing | LDAP propagation delay | Wait a few minutes, then run kubelogin again |
| User added but still denied | User not on the Cloud RAP (only in the CCDB roster) | Verify the user is on the Cloud RAP specifically, not just sponsored under you |
| User removed but can still run commands | Cached kubelogin token has not expired | Token expires on its own; no action needed unless urgency requires RCS intervention |
| CCDB shows the user but Keycloak does not | Alliance LDAP issue | Contact accounts@tech.alliancecan.ca — this is an Alliance infrastructure issue, not a Kestrel issue |
For CCDB account issues (role approval, missing CCRI, RAP application questions), contact accounts@tech.alliancecan.ca. For Kestrel-specific issues after membership is confirmed in CCDB, open a ticket with RCS.