Performing installation

During installation of the IBM Storage Enabler for Containers, the IBM Storage Kubernetes FlexVolume driver is automatically installed on all master and worker nodes in a Kubernetes cluster, using the ubiquity-k8s-flex DaemonSet.

A single IBM Storage Enabler for Containers instance can be installed per one Kubernetes cluster.

  1. Download the installer.

    IBM Storage Enabler for Containers is available as a free software solution for IBM Spectrum Scale customers. You can download the latest version of the installer for IBM Storage Enabler for Container from the IBM Fix Central.

  2. Copy the installer to a local folder on a host that can manage the Kubernetes cluster. The kubectl command can be used to deploy and manage applications on Kubernetes.
  3. Extract the installer file # tar -xzvf installer-for-ibm-storage-enabler-for-containers-x.y.z-*.tar.gz.
  4. Update the ubiquity_installer_scale.conf configuration file according to your environment requirements. Replace the VALUE placeholders in the files with your values. The following parameters are applicable to this configuration file:
    Table 1. Configuration parameters in ubiquity_installer_scale.conf
    Parameter Description
    UBIQUITY_IMAGE This parameter defines the name of the Docker image file for the Storage Enabler for Containers code to be deployed as Kubernetes deployment/ubiquity. It is set by default to ibmcom/ibm-storage-enabler-for-containers:x.y.z. The image is available in the Docker Hub.
    UBIQUITY_DB_IMAGE

    This parameter defines the name of the Docker image file for the Storage Enabler for Containers code to be deployed as Kubernetes deployment/ubiquity- db. It is set by default to ibmcom/ibm-storage-enabler-for- containers-db:x.y.z. The image is available in the Docker Hub.

    UBIQUITY_K8S_PROVISIONER_IMAGE

    This parameter defines the name of the Docker image file for the Storage Enabler for Containers code to be deployed as Kubernetes deployment/ubiquity-k8s- provisioner. It is set by default to ibmcom/ibm-storage-dynamic- provisioner-for-kubernetes:x.y.z. The image is available in the Docker Hub.

    UBIQUITY_K8S_FLEX_IMAGE This parameter defines the name of the Docker image file for the IBM Storage FlexVolume to be deployed as Kubernetes daemonset/ubiquity-k8s-flex. It is set by default to ibmcom/ibm-storage-flex-volume-for-kubernetes:x.y.z. The image is available in the Docker Hub.
    SPECTRUMSCALE_MANAGEMENT_IP_VALUE IP address or FQDN of the IBM Spectrum Scale Management API(GUI) server.
    SPECTRUMSCALE_MANAGEMENT_PORT_VALUE Communication port of the IBM Spectrum Scale Management API(GUO) server. Default value is 443.
    SPECTRUMSCALE_DEFAULT_FILESYSTEM_NAME_VALUE

    Default IBM Spectrum Scale file system to be used for creating persistent volumes, if not specified by the storage class. This file system is used to create persistent volume for ubiquity-db.

    LOG_LEVEL_VALUE

    Log level.

    Allowed values: debug, info, error.

    Default value is info.

    SSL_MODE_VALUE

    SSL verification mode.

    Allowed values:
    require
    No validation is required, the IBM Storage Enabler for containers server generates self-signed certificates on the fly.
    verify-full
    Certificates are provided by the user.
    Note: The verify-full mode requires additional configuration steps, as detailed in Managing SSL certificates.
    SPECTRUMSCALE_USERNAME_VALUE Username defined for the IBM Storage Enabler for Containers interface in IBM Spectrum Scale Management API server(GUI).
    SPECTRUMSCALE_PASSWORD_VALUE Password defined for the IBM Storage Enabler for Containers interface in IBM Spectrum Scale Management API server(GUI).
    UBIQUITY_DB_PV_NAME_VALUE Name of the persistent volume to be used for the ubiquity-db database.
    UBIQUITY_DB_USERNAME_VALUE

    Username for the deployment of ubiquity-db database.

    Note: Do not use the username postgres, because it already exists.
    UBIQUITY_DB_PASSWORD_VALUE Password for the deployment of ubiquity-db database.
    FLEX_LOG_DIR_VALUE Directory for storing the ubiquity-k8s-flex.log file. Set by default to /var/log.
    STORAGE_CLASS_NAME_VALUE The storage class parameters are used for creating an initial storage class for the ubiquity-db PVC. You can use this storage class for other applications as well.

  5. Apply the ubiquity_installer_scale.conf settings to the relevant yml files of the installer. Run the $> ./ubiquity_installer.sh -s update-ymls -c ubiquity_installer_scale.conf command to do this.
    The following code displays an example of successfully configured yml files:
    
    ./ubiquity_installer.sh -s update-ymls -c ubiquity_installer_scale.conf
    Executing STEP [update-ymls]...
    Updating yml files with placeholders from ubiquity_installer_scale.conf file. Are you sure (y/n): y
    Update placeholder [UBIQUITY_IMAGE                ] in files : ./yamls/ubiquity-deployment.yml
    Update placeholder [UBIQUITY_DB_IMAGE             ] in files : ./yamls/ubiquity-db-deployment.yml
    Update placeholder [UBIQUITY_K8S_PROVISIONER_IMAGE] in files : ./yamls/ubiquity-k8s-provisioner-deployment.yml
    Update placeholder [UBIQUITY_K8S_FLEX_IMAGE       ] in files : ./yamls/ubiquity-k8s-flex-daemonset.yml
    Update placeholder [SPECTRUMSCALE_MANAGEMENT_IP_VALUE] in files : ./ubiquity-configmap.yml
    Update placeholder [SPECTRUMSCALE_MANAGEMENT_PORT_VALUE] in files : ./ubiquity-configmap.yml
    Update placeholder [SPECTRUMSCALE_DEFAULT_FILESYSTEM_NAME_VALUE] in files : 
    ./yamls/storage-class-spectrumscale.yml ./ubiquity-configmap.yml
    .....
    Update placeholder [IBM_UBIQUITY_DB_PV_NAME_VALUE ] in files : ./yamls/ubiquity-db-pvc.yml ./ubiquity-configmap.yml
    Update placeholder [FLEX_LOG_DIR_VALUE            ] in files : ./yamls/ubiquity-k8s-flex-daemonset.yml 
    ./yamls/ubiquity-k8s-flex-daemonset.yml ./ubiquity-configmap.yml
    Update placeholder [LOG_LEVEL_VALUE               ] in files : ./ubiquity-configmap.yml
    Update placeholder [SSL_MODE_VALUE                ] in files : ./ubiquity-configmap.yml
    Update (base64) placeholder [SPECTRUMSCALE_USERNAME_VALUE  ] in files : ./spectrumscale-credentials-secret.yml
    Update (base64) placeholder [SPECTRUMSCALE_PASSWORD_VALUE  ] in files : ./spectrumscale-credentials-secret.yml
    Update (base64) placeholder [UBIQUITY_DB_USERNAME_VALUE    ] in files : ./ubiquity-db-credentials-secret.yml
    Update (base64) placeholder [UBIQUITY_DB_PASSWORD_VALUE    ] in files : ./ubiquity-db-credentials-secret.yml
    Update placeholder [STORAGE_CLASS_NAME_VALUE      ] in files : ./yamls/storage-class-spectrumscale.yml 
    ./yamls/storage-class.yml ./yamls/ubiquity-db-pvc.yml ./yamls/sanity_yamls/sanity-pvc.yml
    Finished updating yml files according to ubiquity_installer_scale.conf 

  6. Run the $> ./ubiquity_installer.sh -s install command to start the installation.

    It is recommended to remove the plain text password specified for SPECTRUMSCALE_PASSWORD_VALUE and UBIQUITY_DB_PASSWORD_VALUE in the ubiquity_installer_scale.conf file immediately after the installation.

Once the installation is complete, ensure that the following steps are taken:
  1. Run the $>./ubiquity_cli.sh-a status command to verify the post-installation status of the IBM Storage Enabler for containers service. Check that the database status is set to Bound, and all other elements are available and running.
  2. Run the $>./ubiquity_cli.sh-a sanity command to perform a test that verifies the expected behavior of a pod creating a PVC. When running this verification test, the following output is expected:
     Sanity finished successfully (pvc1 and pod1 were successfully created and deleted).
  3. In addition to the default storage class, define more Kubernetes storage classes, if needed. This default storage class, named as a value of the STORAGE_CLASS_NAME_VALUE parameter in the ubiquity_installer_scale.conf file, was created during the installation. The template for the setting storage classes is included in the ./yamls/templates/storage-class-spectrumscale-template.yml file.