Tenant Management

Using Virtual Clusters for Multi-Tenancy

KumoScale software provides the ability to define virtual clusters to separate different tenants, allocating a certain capacity and performance budget for each. These constraints are validated and updated during each volume allocation and deletion, when expanding a volume or when adding a new tenant. All tenants are managed and created by the KumoScale Provisioner service. If a tenant reaches its capacity budget, a new volume will not be allocated. If a tenant reaches its performance budget, a new volume may be created, but the performance SLA is not guaranteed.

Tenants are identified according to a unique value, tenantID. This ID is required for all volume management and monitoring commands, thus maintaining the isolation between different customers and/or applications.

The tenantID is used for validation of volume management operations. Each tenant can only monitor and manage its own volumes and has no visibility to the other tenant volumes.

KumoScale software creates a default tenant when no tenant is declared by the user. The capacity and performance capabilities are equivalent to the summation of all of the connected KumoScale appliances. If this tenant is used, no information is needed when managing volumes.

A quorum of appliances must be connected to the KumoScale Provisioner service when executing virtual cluster configuration commands.

Users can also create, modify, and delete tenants using operators and Custom Resource files as described in the following section.

Tenant Management using Custom Resource Definitions

KumoScale software provides a Tenant CRD file to create a new tenant, or modify or delete an existing tenant. The following table shows the parameters you should specify when creating, modifying, or deleting a tenant.

  • Make a copy of kioxia.com_v1_tenant_cr.yaml for editing, and save to a separate directory (e.g., deploy/crds/myapp_tenant_cr.yaml).
  • Update myapp_tenantyaml with values for the parameters listed below.

tenant
Parameter Name

Description

Optional/Required

tenantId

Requested tenant ID

Optional for create.
Required for update and delete.

Capacity

In GB unless otherwise specified; for example 100Gi

Required

totalIOPS

The number of iops; an integer value

Required

totalBWPerSec

Allowed bandwidth in resources in MB unless otherwise specified; for example 100Mi

Required

Creating a New Tenant

To create a new tenant using the CRD myapp_tenant_cr.yaml, enter the following:

kubectl create -f myapp_tenant_cr.yaml

A new tenant will be created if there are no identical tenants with the same ID. Capacity and performance requirements are tested only when allocating a new volume.

To validate the changes were successful for a tenant with id tenant-sample1, enter one of the following commands:

kubectl get tenants tenant-sample1 -o wide

kubectl describe tenants tenant-sample1

The status is refreshed every 30 seconds.

Modifying an Existing Tenant

To modify an existing tenant using the CRD myapp_tenant_cr.yaml, enter the following:

kubectl edit -f myapp_tenant_cr.yaml

Change the settings to specify the ID of the tenant to modify and save the file. Then enter the command:

kubectl apply -f myapp_tenant_cr.yaml

To validate the changes were successful for a tenant with id tenant-sample1, enter one of the following commands:

kubectl get tenants tenant-sample1 -o wide

kubectl describe tenants tenant-sample1

The status is refreshed every 30 seconds.

Deleting a Tenant

A tenant can be deleted only if there are no volumes being used by it. To delete the tenant specified in myapp_tenant_cr.yaml, enter the command:

kubectl delete -f myapp_tenant_cr.yaml

To validate the changes were successful for a tenant with id tenant-sample1, enter one of the following commands:

kubectl get tenants tenant-sample1 -o wide

kubectl describe tenants tenant-sample1

 

 

Next: SSD Management