Managing Cluster Access in Loft
The core feature of Loft is to enable users to get self-service access to Kubernetes and allow them to create isolated namespaces and virtual clusters whenever they need them.
flowchart LR;
CLI(Loft CLI / UI) --> Loft
kubectl(kubectl, helm, ...) --> Loft
Loft("<img src='/docs/media/loft-logo.svg' width='60' height='30' />")
Loft -- uses --> ClusterAccess(Cluster Access)
ClusterAccess --> ClusterA(Kubernetes Cluster A)
ClusterAccess --> ClusterB(Kubernetes Cluster B)
ClusterAccess --> ClusterC(Kubernetes Cluster ...)
class Loft loft
Working with Cluster Access
Create Cluster Access For Individual Users
- If you are still impersonating, click
- Go to the Clusters view using the main menu on the left
- Switch to the tab Cluster Access
- Click on the button
- Use the field Display Name and enter a Name for the cluster access
- In the Users & Teams section, make sure the Users tab is selected because we want to give an individual user access to a cluster
- Use the field Select Individual Users and select the User(s) you want to create this cluster access for
- In the Clusters section, either select All Clusters or the specific cluster that you want to make accessible for the user(s) you selected in the previous step
- Click the button at the bottom of the drawer
Single Sign-On + Cluster Access
You can connect a variety of SSO providers to Loft. To automatically give users access to clusters based on their SSO user groups, you can switch to the
Team Members
tab to grant cluster access for each member of a team (e.g. for each member of a group in Active Directory, Okta, SAML, etc.)Configuration
Metadata
Display Name
![](https://d33wubrfki0l68.cloudfront.net/4b66914a4dbcbf7eb36df2505e5e600fb208ed08/fdfba/docs/assets/images/field-display-name-4c0142c5df42bbf6804e01be230a4424.png)
JSONPath in ClusterAccess CRD:
spec.displayName (type: string)
Kubernetes Name
![](https://d33wubrfki0l68.cloudfront.net/42f70978c5239139b5f84cd89666882cf41e414c/69bfc/docs/assets/images/field-name-2b12fc14f6b4199db3a58e3a7d5115c2.png)
JSONPath in ClusterAccess CRD:
metadata.name (type: string)
Description
![](https://d33wubrfki0l68.cloudfront.net/74da0e190569a257eb2c91bcce8f3966a6f2d982/6f30c/docs/assets/images/field-description-2b89b8fd94669348552e64ae6201700b.png)
JSONPath in ClusterAccess CRD:
spec.description (type: string)
Labels
![](https://d33wubrfki0l68.cloudfront.net/32daa12fa5485b3b32174087e522fbb375c6a63b/43a14/docs/assets/images/field-labels-d149ff4e343decd862256d53d1883c9f.png)
JSONPath in ClusterAccess CRD:
metadata.labels (type: map[string]string)
Annotations
![](https://d33wubrfki0l68.cloudfront.net/d5dd47e38403d7a76b4f37dc33f0f066bc33df76/62bf7/docs/assets/images/field-annotations-efb76a6631c274e41a027f563d8e0add.png)
JSONPath in ClusterAccess CRD:
metadata.annotations (type: map[string]string)
Users & Teams
Individual Users
![](https://d33wubrfki0l68.cloudfront.net/495c25f2b6bdbaf28f008e74b59dc7866f134eb9/6c01a/docs/assets/images/field-users-0ce25b4cdd0b4be38ad5f9cab88862c2.png)
JSONPath in ClusterAccess CRD:
spec.users[].user (type: string)
Users In Teams
![](https://d33wubrfki0l68.cloudfront.net/696bed36f2a4b91a0e7c81286e24110df763a3d6/6aa14/docs/assets/images/field-members-by-team-d05fc08536761c6c8bc3aef4a0c6bb44.png)
JSONPath in ClusterAccess CRD:
spec.users[].team (type: string)
Teams
![](https://d33wubrfki0l68.cloudfront.net/32ccecd9dd741431373a4e5698b47ba1cc156441/3b853/docs/assets/images/field-teams-360aa7ab26cd152d06412bb26473e37a.png)
JSONPath in ClusterAccess CRD:
spec.teams (type: string[])
Clusters
![](https://d33wubrfki0l68.cloudfront.net/f8bf2b02bd631e7739108979e4c1436ecc0dd6fd/4db09/docs/assets/images/field-clusters-5b223355528ad8be615e8ceca7eecd23.png)
JSONPath in ClusterAccess CRD:
spec.clusters (type: string[])
Enforce Restrictions
Space Constraints
![](https://d33wubrfki0l68.cloudfront.net/e45d4af3db424a91cc0c8b458b54544d67068ae8/40d9e/docs/assets/images/field-space-constraints-4a88b6be425688c98768492763ffc7b5.png)
JSONPath in ClusterAccess CRD:
spec.spaceConstraintsRef (type: string)
Quotas
![](https://d33wubrfki0l68.cloudfront.net/5b5331d8bb4f14ebd5d3dc154cbdb5ad1111a230/3ab2a/docs/assets/images/field-quotas-5191c4b15b7abbefe900d35a282f200c.png)
JSONPath in ClusterAccess CRD:
spec.quota (type: AccessQuota)
Advanded Options
Priority
![](https://d33wubrfki0l68.cloudfront.net/2ef5bab3294e46a7542c5a8bde56522c53859d07/4aae4/docs/assets/images/field-priority-b684f3fb577367b1e8cd99785851b289.png)
JSONPath in ClusterAccess CRD:
spec.priority (type: integer)
Extra Cluster Roles
![](https://d33wubrfki0l68.cloudfront.net/d3f0606bf680736a51180cb0470c22c3484d865d/b166f/docs/assets/images/field-extra-clusterroles-a10c5278564afe52c0a78893d1a25b1e.png)
JSONPath in ClusterAccess CRD:
spec.clusterRoles[].name (type: string)
Access To Cluster Access
![](https://d33wubrfki0l68.cloudfront.net/ce22b505ab3550a550e2886eae27d46e8ba20c30/36de9/docs/assets/images/field-access-30595654e7a6cdcc3f803690acc2a0a1.png)
JSONPath in ClusterAccess CRD:
spec.access (type: Access[])