************************************ Upgrading Robin Cloud Native Storage ************************************ You can upgrade your Robin Cloud Native Storage (CNS) cluster from your current version to a later CNS version. After you upgrade your cluster, you can use the latest Robin CNS features. This section describes the steps to upgrade the Robin CNS cluster. .. .. Note:: If you are upgrading Kubernetes on your cluster nodes, you must upgrade it sequentially, one node after the other. .. Robin Upgrade Path Matrix .. ============================ .. The following is the upgrade path for Robin CNS. .. - Robin v5.3.8-595 **to** Robin v5.3.14-72 .. .. Note:: This is a reference document only for performing upgrades to the next higher version. Pre Robin Upgrade Checklist =========================== - All nodes within the Kubernetes cluster must be in the healthy state. - Make sure that no control plane operations, including those associated with applications and volumes, are performed by any user(s) until the entire upgrade process is completed. Upgrade using Robin installer ============================= You can upgrade your Robin CNS cluster using the Robin installer. You must run the Robin installer command on the node from which you can access the CNS cluster using the kubectl command. Upgrade on Google GKE ^^^^^^^^^^^^^^^^^^^^^ You can upgrade your Robin CNS cluster installed on Google GKE. Complete the following steps to upgrade the Robin CNS cluster on Google GKE: .. Note:: If you have already downloaded the Robin installation tar file, proceed to step 7. 1. Access the `get.robin.io `_ website. 2. In the **DOWNLOAD FOR FREE** box, enter your business email address and click **Sign in to Download**. 3. Check the email ID you provided for the passwordless login link and click the link. 4. After logging in to the **get.robin.io** website, hover over to the **Deploy on Google GKE/Anthos** box and click **Download and Install**. 5. In the **Deploy on Google GKE/Anthos** window, copy either the ``wget`` or ``curl`` command. 6. Access your Robin CNS cluster and run the copied command on the node from which you can access your cluster using the kubectl command to download the installation tar file: .. code-block:: text $ wget "http://get.robin.io/download/storage?id=&type=gke" -O robin-install.tar 7. After downloading the installation tar file, run the following command to untar the contents into a new directory: .. code-block:: text $ mkdir -p ./robin-upgrade && tar -xf robin-install.tar -C ./robin-upgrade 8. Run the following command to make the newly created directory your current working directory: .. code-block:: text $ cd robin-upgrade 9. Run the following command to upgrade Robin CNS: .. code-block:: text $ ./install-robin.sh --version= --upgrade --cluster-name= --zone-name= **Example** .. code-block:: text $ ./install-robin.sh --version=5.3.14-72 --upgrade --cluster-name=nightly-cluster --zone-name=us-central1 Validating Kubernetes cluster......Done Validating kubernetes cluster permissions......Done Validating robin cluster yaml......Done Installing Robin operator...........Done Upgrading Robin Operator to version 5.3.14-72 ......Done Upgrading Robin CR from version 5.3.8-595 to 5.3.14-72 .........Done Upgrading Robin cluster......Done Upgrade on Google Anthos ^^^^^^^^^^^^^^^^^^^^^^^^ You can upgrade your Robin CNS cluster installed on Google Anthos. Complete the following steps to upgrade the Robin CNS cluster on Google Anthos: .. Note:: If you have already downloaded the Robin installation tar file, proceed to step 7. 1. Access the `get.robin.io `_ website. 2. In the **DOWNLOAD FOR FREE** box, enter your business email address and click **Sign in to Download**. 3. Check the email ID you provided for the passwordless login link and click the link. 4. After logging in to the **get.robin.io** website, hover over to the **Deploy on Google GKE/Anthos** box and click **Download and Install**. 5. In the **Deploy on Google GKE/Anthos** window, copy either the ``wget`` or ``curl`` command. 6. Access your Robin CNS cluster and run the copied command on the node from which you can access your cluster using the kubectl command to download the installation tar file: .. code-block:: text $ wget "http://get.robin.io/download/storage?id=&type=gke" -O robin-install.tar 7. After downloading the installation tar file, run the following command to untar the contents into a new directory: .. code-block:: text $ mkdir -p ./robin-upgrade && tar -xf robin-install.tar -C ./robin-upgrade 8. Run the following command to make the newly created directory your current working directory: .. code-block:: text $ cd robin-upgrade 9. Run the following command to upgrade Robin CNS: .. code-block:: text $ ./install-robin.sh --version= --upgrade **Example** .. code-block:: text $ ./install-robin.sh --version=5.3.14-72 --upgrade Validating Kubernetes cluster......Done Validating kubernetes cluster permissions......Done Validating robin cluster yaml......Done Installing Robin operator...........Done Upgrading Robin Operator to version 5.3.14-72 ......Done Upgrading Robin CR from version 5.3.8-595 to 5.3.14-72 .........Done Upgrading Robin cluster......Done .. Upgrade on IKS .. ^^^^^^^^^^^^^^ .. You can upgrade your Robin CNS cluster installed on IBM IKS. .. Complete the following steps to upgrade the Robin CNS cluster on IBM IKS: .. .. Note:: If you have already downloaded the Robin installation tar file, proceed to step 7. .. 1. Access the `get.robin.io `_ website. .. 2. In the **DOWNLOAD FOR FREE** box, enter your business email address and click **Sign in to Download**. .. 3. Check the email ID you provided for the passwordless login link and click the link. .. 4. After logging in to the **get.robin.io** website, hover over to the **Deploy on IBM IKS** box and click **Download and Install**. .. 5. In the **Deploy on IBM IKS** window, copy either the ``wget`` or ``curl`` command. .. 6. Access your Robin CNS cluster and run the copied command on the node from which you can access your cluster using the kubectl command to download the installation tar file: .. .. code-block:: text .. $ wget "http://get.robin.io/download/storage?id=&type=iks" -O robin-install.tar .. 7. After downloading the installation tar file, run the following command to untar the contents into a new directory: .. .. code-block:: text .. $ mkdir -p ./robin-upgrade && tar -xf robin-install.tar -C ./robin-upgrade .. 8. Run the following command to make the newly created directory your current working directory: .. .. code-block:: text .. $ cd robin-upgrade .. 9. Run the following command to upgrade Robin CNS: .. .. code-block:: text .. $ ./install-robin.sh --version= --upgrade .. **Example** .. .. code-block:: text .. $ ./install-robin.sh --version=5.3.14-72 --upgrade .. Validating Kubernetes cluster......Done .. Enter IBM api key: .. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .. Validating kubernetes cluster permissions......Done .. Validating robin cluster yaml......Done .. Installing Robin operator...........Done .. Upgrading Robin Operator to version 5.3.14-72 ......Done .. Upgrading Robin CR from version 5.3.8-595 to 5.3.14-72 .........Done .. Upgrading Robin cluster......Done Manual Upgrade Steps ===================== When upgrading to Robin CNS, if Zalando Postgres operator is already installed on your cluster, you must skip the Postgres operator installation as part of the Robin CNS upgrade. To skip Postgres operator installation, you must use the ``skip_postgres_operator`` option as part of the Robin cluster CR YAML file. If the value of the option is set to ``1``, Robin CNS upgrade operation skips the Postgres operator installation. By default, the option is set to ``0`` enabling the installation of the Zalando Postgres operator. Complete the following steps to upgrade to the latest Robin CNS version: 1. Untar the Robin CNS folder. 2. Apply the Robin cluster CR by running the following command. .. code-block:: text kubectl apply -f robinclusters_crd.yaml 3. Run the following command to update the ``robin-operator`` deployment to the latest version .. Note:: Wait for the ``robin-operator`` Pod to come up with the new version. .. code-block:: text # kubectl set image deployment/robin-operator robin-operator=gcr.io/robinio-public/robin-storage/robin-operator:5.4.6-90 -n robinio .. Note:: Use your current registry path from the current deployment and change the image version. 4. Run the following command to wait for the ``robin-operator`` Pod to come up with the new Robin CNS version. .. code-block:: text # kubectl rollout status -n robinio deploy/robin-operator 6. Run the following command to update the RobinCluster Custom Resource. .. code-block:: text # kubectl edit robincluster robin Change the ``image_robin`` and ``image_ubbagent`` to point to the latest Robin CNS version. .. code-block:: text spec: image_robin: robinsys/robinimg:5.4.6-90 image_ubbagent: robinsys/ubbagent:5.4.6-ent-1 image_puller: robinsys/robin-image-puller:v1 image_nfs_server: robinsys/nfs-server:v1 After running the above command and making changes, Pods in the ``robinio`` namespace will be redeployed with the new version. Upgrade Verification ^^^^^^^^^^^^^^^^^^^^^ Perform the following steps to verify that the upgrade is complete: 1. Run the following command to make sure that all the images are properly upgraded to the latest image: .. code-block:: text # kubectl get pods -n robinio -o=custom-columns=PODNAME:.metadata.name,IMAGE:.spec.containers[*].image 2. Run the following command to check the progress of the upgrade: .. code-block:: text # kubectl rollout status -n robinio ds/robin-worker 3. Log in to ``robinds`` Pod on the master node and run the following command to verify that all the hosts are displaying the Robin CNS v5.4.6 version and are in the ``Ready`` status: .. code-block:: text # robin host list **Example** .. code-block:: text [robin ~]# robin host list Id | Hostname | Version | Status | RPool | Avail. Zone | LastOpr | Roles | Isol Shared Cores | Isol Dedicated Cores | Non-Isol Cores | GPUs | Mem | HDD(#/Alloc/Total) | SSD(#/Alloc/Total) | Pod Usage | Joined Time -------------+-------------------------------+---------- +--------+---------+-------------+---------+-------+-------------------+----------------------+----------------+-------+---------------+--------------------+--------------------+-----------+---------------------- 1694024781:1 | sms210p-01.robinsystems.com | 5.4.6-90 | Ready | default | N/A | ONLINE | S | 0/0/0 | 0/0/0 | 637/3/640 | 0/0/0 | 101G/23G/125G | -/-/- | 2/55G/476G | 80/30/110 | 06 Sep 2023 04:27:17 1694024781:2 | sms201p-02.robinsystems.com | 5.4.6-90 | Ready | default | N/A | ONLINE | S | 0/0/0 | 0/0/0 | 634/6/640 | 0/0/0 | 104G/20G/125G | -/-/- | 2/55G/476G | 74/36/110 | 06 Sep 2023 04:27:19 1694024781:3 | sms210p-03.robinsystems.com | 5.4.6-90 | Ready | default | N/A | ONLINE | S | 0/0/0 | 0/0/0 | 633/7/640 | 0/0/0 | 103G/21G/125G | -/-/- | 2/55G/476G | 53/57/110 | 06 Sep 2023 04:27:20 * Note: all values indicated above in the format XX/XX/XX represent the Free/Allocated/Total values of the respective resource unless otherwise specified. In addition allocated values for compute resource such as cpu, memory and pod usage includes reserved values for the corresponding resource.