Need help with k8spin-operator?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

197 Stars 17 Forks GNU General Public License v3.0 139 Commits 6 Opened issues


K8Spin multi-tenant operator - OSS

Services available


Need anything else?

Contributors list

K8Spin Operator

Build Status License: GPL v3 Derek

Twitter Join the chat at

Kubernetes multi-tenant operator. Enables multi-tenant capabilities in your Kubernetes Cluster.



The main features included in the Operator:

  • Enable Multi-Tenant: Adds three new hierarchy concepts (Organizations, Tenants, and Spaces).
  • Secure and scalable cluster management delegation: Cluster Admins creates Organizations then delegating its access to users and groups.
  • Cluster budget management: Assigning resources in the organization definition makes it possible to understand how many resources are allocated to a user, team, or the whole company.


K8Spin manages the multi-tenant feature with three simple concepts:

  • Organization: Created by a cluster administrator, hosts tenants. Cluster administrator can set compute quotas for the whole Organization and grant permissions to users and/or groups.
  • Tenant: A tenant can be created by an Organization administrator hosting spaces. The Tenant administrator can fix compute quotas and assign roles to users and/or groups. Tenants resources should fit into Organization resources.
  • Space: Tenant administrators can create Spaces. Space is an abstraction layer on top of a Namespace. A tenant administrator should assign quotas and roles to Space. Space resources should fit into Tenant resources.


Clone this repo, cd into it and:

Install with Helm 3

Take a look to the K8Spin helm chart documentation.

# Create a local cluster
$ kind create cluster
# Deploy cert-manager
$ helm repo add jetstack
$ helm repo update
$ helm install cert-manager jetstack/cert-manager --version v1.1.0 --set installCRDs=true
$ kubectl wait --for=condition=Available deployment --timeout=2m -n cert-manager --all
# Deploy K8Spin operator
$ helm chart pull
v1.1.0: Pulling from
name:    k8spin-operator
version: v1.1.0
Status: Downloaded newer chart for
$ helm chart export
$ helm install k8spin-operator ./k8spin-operator
$ kubectl wait --for=condition=Available deployment --timeout=2m --all

Install with kubectl

# Create a local cluster
$ kind create cluster
# Deploy cert-manager
$ kubectl apply -f deployments/kubernetes/cert-manager/cert-manager.yaml
$ kubectl wait --for=condition=Available deployment --timeout=2m -n cert-manager --all
# Deploy K8Spin operator
$ kubectl apply -f ./deployments/kubernetes/crds/ -n default
$ kubectl apply -f ./deployments/kubernetes/roles/ -n default
$ kubectl apply -f ./deployments/kubernetes/ -n default
$ kubectl wait --for=condition=Available deployment --timeout=2m -n default --all

Now you are ready to use the operator

$ kubectl apply -f examples/org-1.yaml created
$ kubectl apply -f examples/tenant-1.yaml created
$ kubectl apply -f examples/space-1.yaml created

As cluster-admin check organizations:

$ kubectl get org
example   86s

If you have installed the K8Spin kubectl plugin:

$ kubectl k8spin get org
Name                CPU                 Memory
example             10                  10Gi


organization admin get available tenants:
kubectl get tenants -n org-example --as Angel --as-group ""
crm    7m31s


tenant admin get spaces:
$ kubectl get spaces -n org-example-tenant-crm --as Angel --as-group ""
dev    9m24s

Run a workload in the dev space:

$ kubectl run nginx --image nginxinc/nginx-unprivileged --replicas=2 -n org-example-tenant-crm-space-dev --as Angel --as-group ""
pod/nginx created

Discover workloads in the dev space as space viewer:

$ kubectl get pods -n org-example-tenant-crm-space-dev --as Pau
nginx   1/1     Running   0          66s


Discover all the power of this operator reading all the documentation


We would love you to contribute to

, pull requests are welcome! Please see the for more information.

Using k8spin at work or in production?

See for what companies are doing with k8spin today.


The scripts and documentation in this project are released under the GNU GPLv3

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.