All Projects → k8spin → K8spin Operator

k8spin / K8spin Operator

Licence: gpl-3.0
K8Spin multi-tenant operator - OSS

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to K8spin Operator

Multi Tenant
Run multiple websites using the same Laravel installation while keeping tenant specific data separated for fully independent multi-domain setups, previously github.com/hyn/multi-tenant
Stars: ✭ 2,304 (+1216.57%)
Mutual labels:  hacktoberfest, multi-tenant, multi-tenancy
Capsule
Kubernetes Operator for multi-tenancy
Stars: ✭ 261 (+49.14%)
Mutual labels:  multi-tenancy, operator
eixample
Multi-Tenant .NET 6 Architecture (Angular, Vue, React)
Stars: ✭ 61 (-65.14%)
Mutual labels:  multi-tenant, multi-tenancy
Kyuubi
Kyuubi is a unified multi-tenant JDBC interface for large-scale data processing and analytics, built on top of Apache Spark
Stars: ✭ 363 (+107.43%)
Mutual labels:  multi-tenant, multi-tenancy
multi-tenancy-devise
mtdevise adds basecamp style user logins to your ruby on rails application.
Stars: ✭ 27 (-84.57%)
Mutual labels:  multi-tenant, multi-tenancy
awesome-landlord
A simple, single database multi-tenancy solution for Laravel 5.2+
Stars: ✭ 41 (-76.57%)
Mutual labels:  multi-tenant, multi-tenancy
Bagisto
An easy to use, free and open source laravel eCommerce platform to build your online shop in no time.
Stars: ✭ 4,140 (+2265.71%)
Mutual labels:  hacktoberfest, multi-tenant
Townhouse
A multi-tenant Laravel app for listing property rentals
Stars: ✭ 218 (+24.57%)
Mutual labels:  multi-tenant, multi-tenancy
Tidb Operator
TiDB operator creates and manages TiDB clusters running in Kubernetes.
Stars: ✭ 778 (+344.57%)
Mutual labels:  hacktoberfest, operator
Tenancy
Run multiple websites using the same Laravel installation while keeping tenant specific data separated for fully independent multi-domain setups.
Stars: ✭ 916 (+423.43%)
Mutual labels:  hacktoberfest, multi-tenant
Kudo
Kubernetes Universal Declarative Operator (KUDO)
Stars: ✭ 849 (+385.14%)
Mutual labels:  hacktoberfest, operator
multitenant
Multi-Tenant Spring Boot Application with separate databases using Hibernate and H2.
Stars: ✭ 15 (-91.43%)
Mutual labels:  multi-tenant, multi-tenancy
Kube Prometheus
Use Prometheus to monitor Kubernetes and applications running on Kubernetes
Stars: ✭ 3,607 (+1961.14%)
Mutual labels:  hacktoberfest, operator
multitenant-microservices-demo
Full Isolation in Multi-Tenant SaaS with Kubernetes + Istio
Stars: ✭ 57 (-67.43%)
Mutual labels:  multi-tenant, multi-tenancy
Openwisp Users
Implementation of user management and multi-tenancy for OpenWISP
Stars: ✭ 145 (-17.14%)
Mutual labels:  hacktoberfest, multi-tenancy
Chaos Mesh
A Chaos Engineering Platform for Kubernetes.
Stars: ✭ 4,265 (+2337.14%)
Mutual labels:  hacktoberfest, operator
Jaeger Operator
Jaeger Operator for Kubernetes simplifies deploying and running Jaeger on Kubernetes.
Stars: ✭ 634 (+262.29%)
Mutual labels:  hacktoberfest, operator
Litmus
Litmus helps SREs and developers practice chaos engineering in a Cloud-native way. Chaos experiments are published at the ChaosHub (https://hub.litmuschaos.io). Community notes is at https://hackmd.io/a4Zu_sH4TZGeih-xCimi3Q
Stars: ✭ 2,377 (+1258.29%)
Mutual labels:  hacktoberfest, operator
Maya
Manage Container Attached Storage (CAS) - Data Engines in Kubernetes
Stars: ✭ 169 (-3.43%)
Mutual labels:  hacktoberfest, operator
Urlaubsverwaltung
Schluss mit Papierchaos und langweiliger Software. Wir zeigen dir, dass Urlaubsverwaltung auch Spaß machen kann.
Stars: ✭ 173 (-1.14%)
Mutual labels:  hacktoberfest

K8Spin Operator

Build Status License: GPL v3 Derek

Twitter Join the chat at https://slack.kubernetes.io

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

Logo


Features

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.

Concepts

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.

TL;DR

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 https://charts.jetstack.io
$ helm repo update
$ helm install cert-manager jetstack/cert-manager --version v1.0.6 --set installCRDs=true
$ kubectl wait --for=condition=Available deployment --timeout=2m -n cert-manager --all
# Deploy K8Spin operator
$ export HELM_EXPERIMENTAL_OCI="1"
$ helm chart pull ghcr.io/k8spin/k8spin-operator-chart:v1.0.6
v1.0.6: Pulling from ghcr.io/k8spin/k8spin-operator-chart
ref:     ghcr.io/k8spin/k8spin-operator-chart:v1.0.6
name:    k8spin-operator
version: v1.0.6
Status: Downloaded newer chart for ghcr.io/k8spin/k8spin-operator-chart:v1.0.6
$ helm chart export ghcr.io/k8spin/k8spin-operator-chart:v1.0.6
$ 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
organization.k8spin.cloud/example created
$ kubectl apply -f examples/tenant-1.yaml
tenant.k8spin.cloud/crm created
$ kubectl apply -f examples/space-1.yaml
space.k8spin.cloud/dev created

As cluster-admin check organizations:

$ kubectl get org
NAME      AGE
example   86s

If you have installed the K8Spin kubectl plugin:

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

As example organization admin get available tenants:

kubectl get tenants -n org-example --as Angel --as-group "K8Spin.cloud"
NAME   AGE
crm    7m31s

As crm tenant admin get spaces:

$ kubectl get spaces -n org-example-tenant-crm --as Angel --as-group "K8Spin.cloud"
NAME   AGE
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 "K8Spin.cloud"
pod/nginx created

Discover workloads in the dev space as space viewer:

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

Documentation

Discover all the power of this operator reading all the documentation

Contributing

We would love you to contribute to @k8spin/k8spin-operator, pull requests are welcome! Please see the CONTRIBUTING.md for more information.

Using k8spin at work or in production?

See ADOPTERS.md for what companies are doing with k8spin today.

License

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].