Performing installation

You can install the IBM® Storage Enabler for Containers software on a compatible version of Kubernetes. For more information, refer to the release notes of this software package.

Before you begin

Verify that you have completed the preliminary configuration steps, as detailed in Compatibility and requirements.

Procedure

Follow these steps to install IBM Storage Enabler for Containers:

  1. Download the installer. See Downloading the software package).
  2. Use the kubectl command to copy the installer to a local folder on a host that can access the Kubernetes cluster. Usually, a master node has access to the cluster.
  3. Extract the installer file ('* ' represents the build number):
    # tar -xzvf installer-for-ibm-storage-enabler-for-containers-x.y.z-*.tar.gz
  4. Update the ubiquity_installer.conf configuration file, according to your environment requirements. Replace the VALUE placeholders in the files with your values.
    Table 1. Configuration parameters in ubiquity_installer.conf
    Parameter Description
    UBIQUITY_IMAGE Docker image of the IBM Storage Enabler for Containers to be deployed as Kubernetes deployment/ubiquity. Set by default to ibmcom/ibm-storage-enabler-for-containers:x.y.z. The image is available in the Docker Hub.
    UBIQUITY_DB_IMAGE Docker image of the IBM Storage Enabler for Containers database to be deployed as Kubernetes deployment/ubiquity-db. 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
    Docker image of the IBM Storage Dynamic Provisioner to be deployed as Kubernetes deployment//ubiquity-k8s-provisioner. 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
    Docker image of the IBM Storage FlexVolume to be deployed as Kubernetes daemonset/ubiquity-k8s-flex. Set by default to ibmcom/ibm-storage-flex-volume-for-kubernetes:x.y.z. The image is available in the Docker Hub.
    SCBE_MANAGEMENT_IP_
    VALUE
    IP address or FQDN of the Spectrum Connect server.
    SCBE_MANAGEMENT_
    PORT_VALUE
    Communication port of the Spectrum Connect server. Default value is 8440.
    SCBE_DEFAULT_SERVICE_
    VALUE
    Default Spectrum Connect storage service to be used, if not specified by the storage class.
    UBIQUITY_INSTANCE_
    NAME_VALUE
    A prefix for any new volume created on the storage system. For example, u_<instance_name>_<PVC_ID>.
    DEFAULT_FSTYPE_VALUE File system type of a new volume, if not specified by the user in the storage class.

    Allowed values: ext4 or xfs. Default value is ext4.

    DEFAULT_VOLUME_SIZE_
    VALUE
    Default volume size (in GB), if not specified by the user when creating a new volume. Default value is 1.
    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.) or verify-full (Certificates are provided by the user.).

    The verify-full mode requires additional configuration steps, as detailed in the Managing SSL certificates section.

    SCBE_USERNAME_VALUE Username defined for the IBM Storage Enabler for Containers interface in Spectrum Connect.

    Note: The IBM Storage Enabler for Containers interface appears as Spectrum Connect GUI.

    SCBE_PASSWORD_VALUE Password defined for the IBM Storage Enabler for Containers interface in Spectrum Connect.

    Note: The IBM Storage Enabler for Containers interface appears as Enabler for Containers in Spectrum Connect GUI.

    UBIQUITY_DB_PV_NAME_
    VALUE
    Name of the persistent volume to be used for the ubiquity-db database.

    For the Spectrum Virtualize and Spectrum Accelerate storage systems, use the default value (ibm-ubiquity-db). For the DS8000 storage system, use a shorter value, such as (ibmdb). This is necessary because the DS8000 volume name length cannot exceed 16 characters. As a result, the UBIQUITY_INSTANCE_NAME and UBIQUITY_DB_PV_NAME combination (u_<instance_name>_<PV_name>) cannot exceed 16 characters.

    UBIQUITY_DB_USERNAME_
    VALUE
    Username and password for the deployment of ubiquity-db database.

    Do not use the postgres username, because it already exists.

    UBIQUITY_DB_PASSWORD_
    VALUE
    Username and password for the deployment of ubiquity-db database.
    STORAGE_CLASS_NAME_
    VALUE
    Storage class name.

    Note: 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.

    It is recommended to set the storage class name to be the same as the Spectrum Connect storage service name.

    STORAGE_CLASS_PROFILE_
    VALUE
    Storage class profile, directing to the Spectrum Connect storage service name.
    STORAGE_CLASS_FSTYPE_
    VALUE
    File system type for the storage class profile.

    Allowed values: ext4 or xfs. Default value is ext4.

    FLEX_LOG_DIR_VALUE Directory for storing the ubiquity-k8s-flex.log file. Set by default to /var/log.
  5. Apply the ubiquity_installer.conf settings to the relevant yml files of the installer. Run the
    $> ./ubiquity_installer.sh -s update-ymls -c ubiquity_installer.conf command to do this. The code example below illustrates a successful configuration of the yml files.
    [root@k8s-18-master-ibm installer-for-ibm-storage-enabler-for-containers-x.y.z-*]# 
      ./ubiquity_installer.sh -s update-ymls -c /var/tmp/ubiquity_installer.conf
    Executing STEP [update-ymls]...
    Updating yml files with placeholders from /var/tmp/ubiquity_installer.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 [STORAGE_CLASS_NAME_VALUE      ] in files : ./yamls/storage-class.yml 
      ./yamls/ubiquity-db-pvc.yml ./yamls/sanity_yamls/sanity-pvc.yml
    Update placeholder [STORAGE_CLASS_PROFILE_VALUE   ] in files : ./yamls/storage-class.yml
    Update placeholder [STORAGE_CLASS_FSTYPE_VALUE    ] in files : ./yamls/storage-class.yml
    Finished updating yml files according to /var/tmp/ubiquity_installer.conf
    
  6. Start the installation by running the $> ./ubiquity_installer.sh -s install command.
    The installation is complete, illustrated by the following message
    "IBM Storage Enabler for Containers" installation finished successfully in the Kubernetes cluster".

What to do next

  1. Verify the post-installation status of the IBM Storage Enabler for Containers service. Run the following command: $>./ubiquity_cli.sh -a status. Check that the database status is Bound, and all other elements are available and running, as illustrated in the following example.
    Figure 1. IBM Storage Enabler for Containers post-installation status
    This image shows the post-installation status of the IBM Storage Enabler for Containers
  2. Perform the sanity test to spin up and down the Kubernetes PVC and pod. Run this command: $>./ubiquity_cli.sh -a sanity. The following message must be displayed: 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.conf file, was created during the installation. Template for setting storage classes is included in the ./yamls/templates/storage-class-template.yml file. See Configuring storage classes, PVCs and pods for details.
  4. Use the IBM Storage Enabler for Containers for creating persistent volume claims (PVCs) on IBM storage systems. Template for PVC configuration is included in the ./yamls/templates/pvc-template.yml file. See Configuring storage classes, PVCs and pods for details.