Installing and Configuring KumoScale Provisioner

The KumoScale Provisioner service is a software entity that provides the following functionality:

  • Maintains relevant KumoScale inventory of the data center.
  • Extracts analytic information from an analysis server (relevant for future versions).
  • Receives volume requests with various storage classes and criteria.
  • Selects the best location for a requested volume according to storage class and criteria.
  • Maintains the volume mapping across the data center.

The KumoScale Provisioner Software is delivered as a binary container for Kubernetes deployment or as an rpm package for installation on bare-metal servers. To set up and use the Provisioner, you will need to complete the steps applicable to your environment. If you are using:

Once you complete the above, you will be ready to provision storage as explained in Configuring Storage Nodes.

Installing the Provisioner for an Existing Kubernetes Cluster

To install the KumoScale Provisioner, you will use the KumoScale install operator provisioner.kumoscale.com_v1_provisionerservice_cr.yaml.

1.  Edit kumoscale.com_v1_provisionerservice_cr.yaml and provide the following values:

Argument

Description

externalIP

Provisioner IP                                                    

externalPort

The Provisioner port. We recommend port 30100

image tag

The image version number (specified in the release name, for example: v3.20-1871

token

The authentication token. Note that the default outcome works in LOCAL.

authentication mode

If you want to use OpenID Connect (OIDC), see the KumoScale User Manual for additional CRs that you will need to use.

2.  Create the KumoScale Provisioner service:
kubectl create -f provisioner.kumoscale.com_v1_provisionerservice_cr.yaml
3.  Change the provisioner service type by changing the type from ClusterIP to LoadBalancer
kubectl edit svc ks-provisioner-service -n kumo-services

Under type:

type: LoadBalancer
4.  Verify the KumoScale Provisioner service is active:
kubectl get pods -A | grep provisioner

You should receive something similar to the following

kumo-services ks-provisioner-deployment-7c7f57c44-lh2dr 2/2 Running 0 94s

Configuring the Provisioner for an Existing Kubernetes Cluster

Before you begin, confirm you have a pod that that supports load balancing. This pod will act as the Provisioner load balancer. We recommend using metallb. See https://metallb.org/ for more information.

To configure the Provisioner for your existing Kubernetes cluster, you will need to complete the following steps:

  1. Set the Provisioner license.
  2. Set the Provisioner secret.
  3. Set the KumoScale secret.

We will show you how to use custom resource files to complete these steps. See the Provisioner REST API or Provisioner CLI if you wish to use those tools instead.

1.  Set the license custom resource file with the key provided to you by KIOXIA.
    1. Edit the license Custom Resource located in operators/ks-config-operator/samples/kumoscale.kioxia.com_v1_license_cr.yaml, and replace the value of license with the license key provided by KIOXIA.
    2. Save the file then run this command to install the license:
kubectl create -f kumoscale.kioxia.com_v1_license_cr.yaml
installman-fig5

c.  This will return a message about the KumoScale Provisioner service license being created similar to the screenshot shown above. You can validate that the KumoScale software license was installed with the following command:
kubectl describe licenses provisioner-license
2.  Set the Provisioner secret with the file the provisioner-secret.yaml. An example file is located in the directory operators/ks-config-operator/samples. Below is a table showing the parameters and possible values for each.

Argument

Description

url

Provisioner full URL                                                    

token

Provisioner valid authorization token; applies to Local and LDAP authentication mode only.

authServerTokenUrl

URL for authorization server used for generating tokens; applies to OpenIDC authentication mode only.

provisionerClientID

Client ID of a client, which has a service account role of ADMIN at the provisioner resource; applies to OpenIDC authentication mode only.

provisionerClientSecret

The client secret; applies to OpenIDC authentication mode only.

ksClientID

Client ID of a client, which has a service account role of ADMIN at the KumoScale resource; not for a private cluster

ksClientSecret

The client secret; not for a private cluster

storagenodeClientID

 

The Client ID of a client. Applies to a private cluster in OpenIDC authentication mode only.

storagenodeClientSecret

The client secret. Applies to a private cluster in OpenIDC authentication mode only.

Create the Provisioner secret with:

kubectl create -f provisioner-secret

3.  If you are OpenID Connect (OIDC) for authentication, you will also need to set up the custom resources authorization-secret.yaml and yaml as described in the KumoScale User Manual.

4.  Create the KumoScale secret with the file kumoscale-secret.yaml. An example file is located in the directory operators/ks-config-operator/samples. The secret should contain the desired admin password base64 encoded. Password requirements are defined according to the current Linux OS password policy.

    1. To encode the admin password, run the command:
echo -n 'YourPassword' | base64
b.  Edit kumoscale-secret.yaml and copy the password returned above into the password field as shown below:
apiVersion: v1
kind: Secret
metadata:
   name: kumoscale-secret
   namespace: default
type: Opaque
data:
   password: <password-returned-from-step-4a>
c.  Set the secret with:
kubectl create -f kumoscale-secret.yaml
d.  The system will return confirmation that the secret file was created.

Installing KumoScale Provisioner on Bare-Metal Servers

The KumoScale Provisioner service is a software entity that provides the following functionality:

  • Maintains relevant KumoScale inventory of the data center.
  • Extracts analytic information from an analysis server (relevant for future versions).
  • Receives volume requests with various storage classes and criteria.
  • Selects the best location for a requested volume according to storage class and criteria.
  • Maintains the volume mapping across the data center.

To install, the KumoScale Provisioner software, complete the following steps.

  1. Confirm you have installed:
    1. Java Runtime Environment (JRE) 1.8 or above; /usr/bin/java should point to a Java executable of 1.8.XXX
    2. epel-release
  2. Install the rpm:
yum install ks-provisioner-<major>.<minor>.<release>.x86_64.rpm -y
3.  The KumoScale Provisioner service, ks-provisioner, will start automatically after the installation. You can verify it is running with:
systemctl status ks-provisioner.service

 

Note: The installation installs some python dependencies as root so you might see a warning:

WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.

You can ignore this warning; no action is required.

 

4.  Open the firewall port. Edit the environment file /usr/lib/systemd/system/ks-provisioner.conf for the application and specify:
  • ip=[server.address], or auto to get the server IP automatically from platform
  • port=[server.port]; the default is 8090      
5.  Configure the Provisioner as documented in Configuring the KumoScale Provisioner for Bare Metal.

Configuring the KumoScale Provisioner for Bare Metal

 

You will need to use the Provisioner CLI or Provisioner REST API to configure KumoScale Provisioner by

  • Setting the Provisioner license.
  • Adding the storage nodes to be managed, to the Provisioner.

The steps below show how to complete the above using the Provisioner CLI. For details on how to use the REST API to complete the same steps, see the Provisioner REST API Reference Manual.

Set the Provisioner license with the Provisioner CLI command set-license. At the CLI> prompt, issue the command below where the parameters with values in brackets are defined in the table.

set-license --path <PATH> --host-ip <HOST_IP> --user <USER> --pass <PASS>

set-license
Parameter Name

Description

path

A full path to the license file location.

host-ip

The IP address of the remote host.

user

The username to access to the remote host.

pass

The password value for access to the remote host.

Using the KumoScale Provisioner

This section includes information helpful when using the KumoScale Provisioner to support provisioning and volume management.

Provisioner REST API

The Provisioner REST API is available for provisioning and managing storage. See the KumoScale Provisioner Rest API Reference Manual for information on using the REST API for the Provisioner.

KumoScale Provisioner CLI

The KumoScale Provisioner CLI tool is included in the KumoScale Provisioner service installation. Similarly, when you uninstall KumoScale Provisioner service, the Provisioner CLI is uninstalled automatically.

To use the Provisioner CLI, log into the machine hosting the KumoScale Provisioner:

#>ks_prov

User root: Provisioner CLI started

Enter port number [8090]:

Enter token value: (pre generated admin access rights token)

CLI>

For details on available commands, see the Provisioner CLI Reference Manual.

Logs Path

/usr/local/ks-provisioner/logs/ks-provisioner.log

Stopping and Starting KumoScale Provisioner for Bare-Metal

To stop the KumoScale Provisioner service :

systemctl stop ks-provisioner.service

To start the KumoScale Provisioner service:

systemctl start ks-provisioner.service

 Upgrading KumoScale Provisioner for Bare-Metal

To upgrade KumoScale Provisioner, enter the following:

rpm -Uvh ks-provisioner-<major>.<minor>.<release>.x86_64

Uninstalling KumoScale Provisioner for Bare-Metal

To uninstall KumoScale Provisioner, enter the following:

rpm -ev ks-provisioner-<major>.<minor>.<release>.x86_64

 

 

Next: Configuring Storage Nodes