6.3. Upgrading cns-deploy and Heketi Server

The following commands must be executed on the client machine.
  1. Execute the following command to update the heketi client and cns-deploy packages:

    Note

    "yum update cns-deploy -y" is not required to be executed if OCS 3.10 was deployed via Ansible.
    # yum update cns-deploy -y
    # yum update heketi-client -y
  2. Backup the Heketi database file
    # oc rsh <heketi_pod_name>
    # cp -a /var/lib/heketi/heketi.db /var/lib/heketi/heketi.db.`date +%s`.`heketi --version | awk '{print $2}'`
    # exit
  3. Execute the following steps if OCS 3.10 is deployed via cns-deploy:
    1. Execute the following command to delete the heketi template.
      # oc delete templates heketi
    2. Execute the following command to install the heketi template.
      # oc create -f /usr/share/heketi/templates/heketi-template.yaml
      template "heketi" created
    3. Execute the following command to grant the heketi Service Account the necessary privileges.
      # oc policy add-role-to-user edit system:serviceaccount:<project_name>:heketi-service-account
      # oc adm policy add-scc-to-user privileged -z heketi-service-account
      For example,
      # oc policy add-role-to-user edit system:serviceaccount:storage-project:heketi-service-account
      # oc adm policy add-scc-to-user privileged -z heketi-service-account
    4. Execute the following command to generate a new heketi configuration file.
      # sed -e "s/\${HEKETI_EXECUTOR}/kubernetes/" -e "s#\${HEKETI_FSTAB}#/var/lib/heketi/fstab#" -e "s/\${SSH_PORT}/22/" -e "s/\${SSH_USER}/root/" -e "s/\${SSH_SUDO}/false/" -e "s/\${BLOCK_HOST_CREATE}/true/" -e "s/\${BLOCK_HOST_SIZE}/500/" "/usr/share/heketi/templates/heketi.json.template" > heketi.json
      • The BLOCK_HOST_SIZE parameter controls the size (in GB) of the automatically created Red Hat Gluster Storage volumes hosting the gluster-block volumes (For more information, see https://access.redhat.com/documentation/en-us/red_hat_openshift_container_storage/3.11/html/operations_guide/block_storage). This default configuration will dynamically create block-hosting volumes of 500GB in size as more space is required.
      • Alternatively, copy the file /usr/share/heketi/templates/heketi.json.template to heketi.json in the current directory and edit the new file directly, replacing each "${VARIABLE}" string with the required parameter.

        Note

        JSON formatting is strictly required (e.g. no trailing spaces, booleans in all lowercase).
    5. Note

      If the heketi-config-secret file already exists, then delete the file and run the following command.
      Execute the following command to create a secret to hold the configuration file.
      # oc create secret generic heketi-config-secret --from-file=heketi.json
  4. Execute the following step if OCS 3.10 is installed via Ansible:
    Update the heketi template to change the HEKETI_ROUTE, IMAGE_NAME, IMAGE_VERSION and CLUSTER_NAME.
    	# oc get templates
    	NAME			  DESCRIPTION		     PARAMETERS		OBJECTS
    	glusterblock-provisioner  glusterblock provisioner   3 (2 blank)	4
    				  template
    	glusterfs		  GlusterFS DaemonSet 	     5 (1 blank)	1
    				  template
    	heketi			  Heketi service deployment  7 (3 blank)	3
    				  template
    # oc edit template heketi
    
    - description: Set the hostname for the route URL
      displayName: heketi route name
      name: HEKETI_ROUTE
      value: heketi-storage
    - displayName: heketi container image name
      name: IMAGE_NAME
      required: true
      value: rhgs3/rhgs-volmanager-rhel7
    - displayName: heketi container image version
      name: IMAGE_VERSION
      required: true
      value: v3.10
    - description: A unique name to identify this heketi service, useful for running multiple
        heketi instances
      displayName: GlusterFS cluster name
      name: CLUSTER_NAME
      value: storage
  5. Execute the following command to delete the deployment configuration, service, and route for heketi:
    • For cns-deploy:
      # oc delete deploymentconfig,service,route heketi
    • For Ansible:
      # oc delete deploymentconfig,service,route heketi-storage
  6. Execute the following command to deploy the Heketi service which will be used to create persistent volumes for OpenShift:
    # oc process heketi | oc create -f -
    For example:
    # oc process heketi | oc create -f -
    
    service "heketi" created
    route "heketi" created
    deploymentconfig "heketi" created
  7. Execute the following command to verify that the containers are running:
    # oc get pods
    For example:
    # oc get pods
    NAME                             READY     STATUS    RESTARTS   AGE
    glusterfs-0h68l                  1/1       Running   0          3d
    glusterfs-0vcf3                  1/1       Running   0          3d
    glusterfs-gr9gh                  1/1       Running   0          3d
    heketi-1-zpw4d                   1/1       Running   0          3h
    storage-project-router-2-db2wl   1/1       Running   0          4d