19. 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.
19.1. Migration Webhook Deployment for API conversion¶
During the upgrade process, Robin CNS automatically deploys a new migration-webhook pod in the robin.io namespace. This webhook is a Kubernetes custom resource definition (CRD) conversion webhook. It handles the conversion between the manage.robin.io/v1 and manage.robin.io/v2 versions of RobinCluster CRs, allowing existing v1 CRs to continue work after the upgrade without any manual intervention.
During conversion, the following v1 spec fields are automatically mapped to their custom_config equivalents when the CR is converted to v2:
v1 field |
Mapped to in v2 |
|
|
|
|
|
|
|
|
|
|
Note
custom_config fields that have no v1 equivalent (such as security_context, annotations, and per-component customization for components other than robin-master, robin-patroni, and robin-iomgr) are silently dropped when the CR is read as v1. To preserve all custom_config settings, update your CR to use apiVersion: manage.robin.io/v2.
19.2. 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.
If you want to disable the
robin-master-extservice before upgrade, follow the instructions provided here. For more information, see Disable robin-master-ext Service before installing or upgrading.
19.3. 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.
19.3.1. 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.
Access the get.robin.io website.
In the DOWNLOAD FOR FREE box, enter your business email address and click Sign in to Download.
Check the email ID you provided for the passwordless login link and click the link.
After logging in to the get.robin.io website, hover over to the Deploy on Google GKE/Anthos box and click Download and Install.
In the Deploy on Google GKE/Anthos window, copy either the
wgetorcurlcommand.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:
$ wget "http://get.robin.io/download/storage?id=<USERID>&type=gke" -O robin-install.tar
After downloading the installation tar file, run the following command to untar the contents into a new directory:
$ mkdir -p ./robin-upgrade && tar -xf robin-install.tar -C ./robin-upgrade
Run the following command to make the newly created directory your current working directory:
$ cd robin-upgrade
Run the following command to upgrade Robin CNS:
$ ./install-robin.sh --version=<version number> --upgrade --cluster-name=<cluster_name> --zone-name=<zone_name>
Example
$ ./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
19.3.2. 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.
Access the get.robin.io website.
In the DOWNLOAD FOR FREE box, enter your business email address and click Sign in to Download.
Check the email ID you provided for the passwordless login link and click the link.
After logging in to the get.robin.io website, hover over to the Deploy on Google GKE/Anthos box and click Download and Install.
In the Deploy on Google GKE/Anthos window, copy either the
wgetorcurlcommand.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:
$ wget "http://get.robin.io/download/storage?id=<USERID>&type=gke" -O robin-install.tar
After downloading the installation tar file, run the following command to untar the contents into a new directory:
$ mkdir -p ./robin-upgrade && tar -xf robin-install.tar -C ./robin-upgrade
Run the following command to make the newly created directory your current working directory:
$ cd robin-upgrade
Run the following command to upgrade Robin CNS:
$ ./install-robin.sh --version=<version number> --upgrade
Example
$ ./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
19.4. Manual Upgrade Steps¶
If you have installed the Robin CNS using the skip_postgres_operator parameter to use the Zalando PostgreSQL operator, then you must first upgrade the Zalando PostgreSQL operator to v1.11.0 or later before upgrading the Robin CNS.
Complete the following steps to upgrade to the latest Robin CNS version:
Untar the Robin CNS folder.
Run the
cdcommand to access the folder where you untarred the Robin CNS binaries.Generate the Robin Operator and Robin CR YAML files:
# ./install-robin.sh -g --image-registry-path="gcr.io/robinio-public/robin-storage"
Apply the
robin-operator.tmpYAML file generated in step 3:# kubectl apply -f ./robin-operator.yaml.tmp
Note
Wait for the
robin-operatorPod to come up.
Check if the
robin-operatorPod is up with the new Robin CNS version:# kubectl rollout status -n robinio deploy/robin-operator
Apply the
robin.yaml.tmpfile generated in step 3:
# kubectl apply -f ./robin.yaml.tmp
After running the above command, Pods in the robinio namespace will be redeployed with the new version of Robin CNS.
19.4.1. Upgrade Verification¶
Perform the following steps to verify that the upgrade is successfully completed:
Run the following command to make sure that all the images are properly upgraded to the latest image:
# kubectl get pods -n robinio -o=custom-columns=PODNAME:.metadata.name,IMAGE:.spec.containers[*].image
Run the following command to check the progress of the upgrade:
# kubectl rollout status -n robinio ds/robin-worker
Log in to the Robin Master Pod and run the following command to verify that all the hosts are displaying the Robin CNS v5.4.14-57 version and are in the
Readystatus:# robin host list
Example
robinmaster@master ~]# 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 -------------+---------------------------------+-----------+--------+---------+-------------+---------+-------+-------------------+----------------------+----------------+-------+-------------+--------------------+--------------------+-----------+---------------------- 1739153351:1 | hypervvm-70-55.robinsystems.com | 5.4.14-57 | Ready | default | N/A | ONLINE | S | 0/0/0 | 0/0/0 | 398/2/400 | 0/0/0 | 21G/9G/31G | 1/3G/100G | -/-/- | 86/24/110 | 09 Feb 2025 10:10:27 1739153351:2 | hypervvm-70-54.robinsystems.com | 5.4.14-57 | Ready | default | N/A | ONLINE | S | 0/0/0 | 0/0/0 | 393/7/400 | 0/0/0 | 15G/15G/31G | 1/15G/100G | -/-/- | 37/73/110 | 09 Feb 2025 10:10:27 1739153351:3 | hypervvm-70-56.robinsystems.com | 5.4.14-57 | Ready | default | N/A | ONLINE | S | 0/0/0 | 0/0/0 | 398/2/400 | 0/0/0 | 21G/9G/31G | 1/13G/100G | -/-/- | 85/25/110 | 09 Feb 2025 10:10:30 * 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.
Note
After upgrading to Robin CNS v5.4.14-57, if you are using the Robin Client outside the
robincliPod, you must upgrade to the latest version of the Robin Client.