Overview

This information includes the procedures to upgrade your VMware Tanzu RabbitMQ for Kubernetes deployments to a new version.

Note:

Prerequisite

These procedures assume the following is in place:

  • A running Kubernetes cluster
  • Kubernetes CLI tools such as kubectl are installed
  • The Carvel toolchain is installed locally

Upgrade

To upgrade your Tanzu RabbitMQ package, complete the following procedures:

  • Upgrade the rabbitmq-cluster-operator and messaging-topology-operator Operators
  • Upgrade RabbitMQ Instances

Upgrade the Operators

Note: This scenario only applies if you are upgrading from versions 1.2.0 or 1.2.1 to version 1.3.0. It does not apply if you are upgrading from version 1.2.2 to version 1.3.0. When you upgrade the rabbitmq-cluster-operator, you are updating the RabbitMQ clusters which causes a rolling update of the underlying StatefulSets. If you want to control when a RabbitMQ cluster gets updated, ensure to pause reconciliation before upgrading the rabbitmq-cluster-operator. After the rabbitmq-cluster-operator upgrade is complete, resume reconciliation whenever it is safe to update the RabbitMQ cluster.

  1. To upgrade the operators, you must first update the PackageRepository for Tanzu RabbitMQ:
kubectl edit packagerepository tanzu-rabbitmq-repo
apiVersion: packaging.carvel.dev/v1alpha1
kind: PackageRepository
metadata:
   name: tanzu-rabbitmq-repo
spec:
   fetch:
      imgpkgBundle:
         image: registry.tanzu.vmware.com/p-rabbitmq-for-kubernetes/tanzu-rabbitmq-package-repo:${NEW_VERSION} # Replace with new release version
  1. After this is installed, verify that the expected new versions are visible to your client:
$ kubectl get packages
NAME                                      PACKAGEMETADATA NAME        VERSION           AGE
rabbitmq.tanzu.vmware.com.<NEW VERSION>   rabbitmq.tanzu.vmware.com   <NEW VERSION>     7s
rabbitmq.tanzu.vmware.com.1.2.0           rabbitmq.tanzu.vmware.com   1.2.0             7s
  1. Update the PackageInstall for the Tanzu RabbitMQ rabbitmq-cluster-operator and messaging-topology-operator operators:
kubectl edit packageinstall tanzu-rabbitmq
apiVersion: packaging.carvel.dev/v1alpha1
kind: PackageInstall
metadata:
   name: tanzu-rabbitmq
spec:
   serviceAccountName: ${SERVICE_ACCOUNT} # Replace with service account name
   packageRef:
      refName: rabbitmq.tanzu.vmware.com
      versionSelection:
         constraints: ${NEW_VERSION} # Replace with release version
  1. When the the command finishes, run kapp inspect -a tanzu-rabbitmq-ctrl to verify everything is running and all conditions (Conds column) are true. It should look similar to this:
# [...]
# rabbitmq-system  messaging-topology-leader-election-role         Role                            kapp     -       ok  -   9d
# ^                messaging-topology-leader-election-rolebinding  RoleBinding                     kapp     -       ok  -   9d
# ^                messaging-topology-operator                     Deployment                      kapp     2/2 t   ok  -   11s
# ^                messaging-topology-operator                     ServiceAccount                  kapp     -       ok  -   9d
# ^                messaging-topology-operator-59c887bf9b          ReplicaSet                      cluster  -       ok  -   11s
# ^                messaging-topology-operator-59c887bf9b-24z29    Pod                             cluster  4/4 t   ok  -   11s
# ^                rabbitmq-cluster-leader-election-role           Role                            kapp     -       ok  -   9d
# ^                rabbitmq-cluster-leader-election-rolebinding    RoleBinding                     kapp     -       ok  -   9d
# ^                rabbitmq-cluster-operator                       Deployment                      kapp     2/2 t   ok  -   11s
# ^                rabbitmq-cluster-operator                       ServiceAccount                  kapp     -       ok  -   9d
# ^                rabbitmq-cluster-operator-5c479456b             ReplicaSet                      cluster  -       ok  -   11s
# ^                rabbitmq-cluster-operator-5c479456b-lwsxf       Pod                             cluster  4/4 t   ok  -   11s
# [...]

The rabbitmq-cluster-operator and messaging-topology-operator upgrades should now be complete.

Upgrade the RabbitMQ Instances

Complete the following steps to upgrade individual RabbitMQ instances. Please note that this procedure will restart RabbitMQ in a rolling strategy; which means, it will restart one RabbitMQ Pod at a time.

  1. Use the following command to open the manifest for each RabbitmqCluster you wish to upgrade:
    kubectl edit rmq my-tanzu-rabbit
    # Replace 'my-tanzu-rabbit' with the name of your RabbitMQ cluster
    
  2. Remove the line containing image: in the spec and save & exit the file:
    [...]
    spec:
      image: dev.registry.pivotal.io/rabbitmq/vmware-tanzu-rabbitmq:1.2.0 # Remove this line
    [...]
    

This will reset the image of the RabbitmqCluster to the default of the operator, which will be the uplevel version of Tanzu RabbitMQ. This will trigger the rolling upgrade of your cluster.

check-circle-line exclamation-circle-line close-line
Scroll to top icon