---
title: Swimlane 10.16.0 Upgrade Instructions
slug: 10x-upgrade-guides/swimlane-10160-upgrade-instructions
docTags: 
createdAt: 2025-11-27T22:08:46.681Z
---

Use these upgrade instructions to upgrade your instance of Swimlane 10.x. The instructions are organized by subsections of this document that will help you upgrade by specific installation type, whether you have an embedded, or existing cluster installation.

## Upgrade Swimlane on Embedded Cluster Installations

Use the following instructions to upgrade this version of Swimlane on an embedded cluster installation.

### Prerequisites:

· Swimlane version 10.14+

If you are not on a version that is >= 10.13, contact your Swimlane support representative.

· MongoDB 5.0.24

**Important!&#x20;**&#x53;wimlane recommends that you perform a MongoDB backup before starting this update. For more information, see Backup and Restore on an Embedded Cluster with Snapshots.

### Upgrade Instructions:

1. SSH into any node in your deployment and execute the following command to begin the Swimlane Platform Installer component upgrade:&#x20;

:::BlockQuote{indent="1"}
$ curl -sSL [https://kurl.sh/swimlane-platform-stable-10-16-0](https://kurl.sh/swimlane-platform-stable-10-16-0) | sudo bash -s ha
:::

:::Paragraph{indent="1"}
**NOTE**: If you have configured SELinux, add this to the end of the command above:&#x20;
:::

:::BlockQuote{indent="1"}
installer-spec-files=se.yaml
:::

2. For a multi-node (HA) cluster, the script prompts you to drain node one (1) and apply the upgrade. Once the upgrade on node one (1) is complete, the process continues running. It then asks for confirmation to drain node two (2) as well as a command to run in that node.
   See this example:

:::BlockQuote{indent="1"}
✔ Kubernetes host packages installed
node/ip-10-1-0-147.swimlane.io already uncordoned
Drain node ip-10-1-0-186.swimlane.io to prepare for upgrade? (Y/n) y
...
pod/swimlane-syslog-receiver-86f79c8fd6-2rvwt evicted
pod/swimlane-tasks-5dfd4d5f94-tkrb2 evicted
node/ip-10-1-0-186.swimlane.io evicted

&#x20;   Run the upgrade script on remote node to proceed: ip-10-1-0-186.swimlane.io

&#x20;     curl https\://kurl.sh/swimlane-platform-stable-10-16-0/upgrade.sh | sudo bash -s kubernetes-version=1.26.6
:::

3. Run the upgrade command on the node that was drained. Use `kubectl get nodes -o wide` to find the IP of the node that was drained.

:::Paragraph{indent="1"}
The primary script that ran in node (1) will detect that node (2) has been upgraded, and will now ask to drain and upgrade node (3). Follow the same steps for node (2) to complete the kubernetes portion of the upgrade.
:::

4. Once the additional nodes are complete, press ***Enter*** in the terminal window of the first node in which you ran the install command to complete the installation.
5. Log in to the Swimlane Platform Installer dashboard (https\://\<SwimlaneDNS>:8800).
6. Go to the Version History tab and look for the new published version

:::Paragraph{indent="1"}
If this version doesn’t show up initially, click ***Check For Updates**.*
:::

7. A pop-up window appears, click ***Go to updated version****.*
8. Click **Deploy** on the new 10.16.0 version with the highest sequence number at the top of the versions list (currently 10.16.0\_XXX).
9. Once the Application tab shows ‘Ready’ your upgrade is complete.

See Update the Swimlane Python Driver Python Package if you want to update the driver at this time.

## Upgrade Swimlane on Existing Cluster Installations

### Prerequisites:

· Swimlane version 10.6 or greater
If you are not on a version that is > 10.6, contact your Swimlane support representative.

· MongoDB 5.0.24

· Kubernetes 1.25-1.28

· KOTS kubectl plugin 1.107.x

· Velero 1.12.x

**Important!&#x20;**&#x53;wimlane recommends that you perform a MongoDB backup prior to starting this update. For more information, see Backup and Restore on an Existing Cluster with Snapshots.

### Upgrade Kotsadm to v1.107.3:

Download the latest SPI kubectl add-on for the OS version where you run kubectl commands from:

:::BlockQuote
$ curl [https://kots.io/install/v1.107.3](https://kots.io/install/v1.107.3) | bash
:::

:::BlockQuote
$ kubectl kots version
:::

The KOTS kubectl plugin version should match what is listed in the prerequisites above.

### Upgrading past velero 1.11.x:

Velero 1.11 includes a change that replaces the restic daemonset with the node-agent daemonset. Depending on what version you are upgrading from, there are different steps for patching the container images. See the Velero Documentation for details. upgrade to 1.11

1. Download Velero 1.11.x for your OS version:

:::BlockQuote{indent="1"}
https\://github.com/vmware-tanzu/velero/releases/tag/v1.11.0
:::

:::Paragraph{indent="1"}
Untar the file and then change directory (cd) into the uncompressed directory:
:::

:::BlockQuote{indent="1"}
$ tar -zxf .tar.gz
$ cd \<DIRECTORY
:::

2. Update Velero custom resource definitions:

:::BlockQuote{indent="1"}
$ ./velero install --crds-only --dry-run -o yaml | kubectl apply -f -Upgrade container images as instructed in the Velero upgrade to 1.12 article
:::

4. Confirm that both the client and server versions are on the same 1.12.0 release:

### Upgrade the Swimlane KOTS application:

1. Next, upgrade the Swimlane Platform Installer (SPI):

:::BlockQuote{indent="1"}
$ kubectl kots admin-console upgrade -n \<namespace>
:::

2. Log in to the Swimlane Platform Installer dashboard (https\://\<SwimlaneDNS>:8800).
3. Go to the Version History tab and look for the new published version

:::Paragraph{indent="1"}
If this version doesn’t show up initially, click ***Check For Updates***.
:::

4. A pop-up window appears, click ***Go to updated version*** or visit the ***Version History****&#x20;tab.*
5. Click **Deploy** on the new 10.16.0 version with the highest sequence number at the top of the versions list.
6. Once the Application tab shows ‘Ready’ your upgrade is complete.

See Update the Swimlane Python Driver Python Package if you want to update the driver at this time.

## Upgrade Swimlane on Embedded Airgap Cluster Installations

### Prerequisites:

- Swimlane version 10.14+

:::Paragraph{indent="1"}
If you are not on a version that is >= 10.13, contact your Swimlane support representative.
:::

- MongoDB 5.0.24
- Links to the Offline Installer Package and Offline Airgap Bundle
  If you do not have these linked, contact your Swimlane support representative.

**Important!&#x20;**&#x53;wimlane recommends that you perform a MongoDB backup prior to starting this update. For more information, see Backup and Restore on an Embedded Cluster with Snapshots.

### Upgrade Instructions:

1. Copy the latest offline installer package to each airgapped server. Untar the offline installer package on each server.
   `$ tar -xzvf swimlane-platform-10.16.0_XXX.tar.gz`
2. Copy *kubernetes-1.27.10.tar.gz* on each server. The file could be downloaded in the jump server using the following command.
   `curl -LO `[`https://kurl.sh/bundle/version/v2024.02.05-0/swimlane-platform-rgarcia/packages/kubernetes-1.27.10.tar.gz`](https://kurl.sh/bundle/version/v2024.02.05-0/swimlane-platform-rgarcia/packages/kubernetes-1.27.10.tar.gz)
3. Run the Swimlane Platform Installer update on any node in your deployment:
   `$ cat install.sh | sudo bash -s airgap ha`
   Provide the absolute of path for kubernetes-1.27.10.tar.gz , downloaded as part of step 2, when prompted during installation.
4. Once the install is complete, if you have a multi-node (HA) cluster, the script prompts you to run an additional command on every node:

:::BlockQuote{indent="1"}
Run this script on node swimlane-2 to load required images before proceeding:

cat ./tasks.sh | sudo bash -s load-images

Have images been loaded on node swimlane-2? (Y/n)
:::

5. Run `cat ./tasks.sh | sudo bash -s load-images` on nodes (2) and node (3) before proceeding to run the command on node (1).&#x20;
6. This command can be run simultaneously on nodes (2) and (3).

:::Paragraph{indent="1"}
Once the load-images script completes on nodes (2) and (3), enter **Y&#x20;**&#x69;n the node (1) terminal session twice.
:::

7. The install script now runs on node 1 for a few minutes. Once it completes, follow the prompts to run the upgrade script on nodes 2 and 3, similar to this example (the IP address will depend on your deployment):

:::BlockQuote{listRestartPolite="8" indent="1"}
✔ Kubernetes host packages installed
node/ip-10-1-0-147.swimlane.io already uncordoned
Drain node ip-10-1-0-186.swimlane.io to prepare for upgrade? (Y/n) y
...
pod/swimlane-syslog-receiver-86f79c8fd6-2rvwt evicted
pod/swimlane-tasks-5dfd4d5f94-tkrb2 evicted
node/ip-10-1-0-186.swimlane.io evicted
&#x20;
&#x20;   Run the upgrade script on remote node to proceed: ip-10-1-0-186.swimlane.io
&#x20;
&#x20;    cat upgrade.sh | sudo bash -s kubernetes-version=1.26.6 docker-registry-ip=10.96.3.115
:::

8. When both upgrade scripts are complete, press **Enter&#x20;**&#x6F;n node 1 and then upload the airgap bundle to the SPI dashboard.
9. Log in to the Swimlane Platform Installer dashboard (https\://\<SwimlaneDNS>:8800).
10. Go to the Version History tab and click ***Upload a new version***, then browse to the swimlane-platform-10.16.0\_XXX.airgap file and click ***Upload***.
    1. The sequence number “\_XXX” of the airgap file may be higher than shown if a new sequence has been published.
    2. Once the upload of the airgap completes, refresh the page or switch tabs to see the status of the file extraction.
11. Go back to the Version History tab and click **Deploy** on the new 10.16.0 version at the top of the versions list.
12. Once the Application tab shows ‘Ready’ your upgrade is complete.

See Update the Swimlane Python Driver Python Package if you want to update the driver at this time.

## Upgrade Swimlane on Existing Airgap Cluster Installations

### Prerequisites

- Swimlane version 10.6+
  If you are not on a version that is > 10.6, contact your Swimlane support representative.
- MongoDB 5.0.24
- Kubernetes 1.25-1.28
- KOTS kubectl plugin 1.107.3
- Velero 1.12.x

**Important!&#x20;**&#x53;wimlane recommends that you perform a MongoDB backup prior to starting this update. For more information, see Backup and Restore on an Existing Cluster with Snapshots.

### Upgrade Kotsadm to v1.107.3:

1. Download the latest SPI Kubectl Add-on

:::Paragraph{indent="1"}
`Linux: `[`https://get.swimlane.io/existing-cluster/install/linux`](https://get.swimlane.io/existing-cluster/install/linux)``
:::

:::Paragraph{indent="1"}
`OSX: `[`https://get.swimlane.io/existing-cluster/install/osx`](https://get.swimlane.io/existing-cluster/install/osx)
:::

2. Download the latest SPI offline package:
   [`https://get.swimlane.io/existing-cluster/install/offline-package`](https://get.swimlane.io/existing-cluster/install/offline-package)
3. Copy the latest SPI Kubectl Add-on and SPI offline packages to your jumpbox:

:::BlockQuote{indent="1"}
$ scp kots\_\<OS version>.tar.gz user@\<swimlaneDNS>:/tmp/kots\_\<OS version>.tar.gz

$ scp kotsadm.tar.gz user@\<swimlaneDNS>:/tmp/kotsadm.tar.gz

:::

4. Untar the SPI Kubectl Add-on:

:::BlockQuote{indent="1"}
$ tar -zxvf kots\_\<OS version>.tar.gz
:::

5. Rename or remove the *original* kubectl-kots file:

:::BlockQuote{indent="1"}
$ rm /usr/local/bin/kubectl-kots
:::

6. Rename and move the latest SPI Kubectl Add-on file t&#x6F;*&#x20;/usr/local/bin/kubectl-kots*

:::BlockQuote{indent="1"}
$ mv kots kubectl-kots
$ mv kubectl-kots /usr/local/bin/

:::

7. Verify version

:::BlockQuote{indent="1"}
$ kubectl kots version
:::

## Upgrade past Velero 1.11.x:

Velero 1.11 includes a change that replaces the restic daemonset with the node-agent daemonset. Depending on what version you are upgrading from, there are different steps for patching the container images. See the Velero Documentation for details upgrade to 1.11

1. Download Velero 1.11 to the jumpbox for the jumpbox's OS version:

:::Paragraph{indent="1"}
[https://github.com/vmware-tanzu/velero/releases/tag/v1.11.0](https://github.com/vmware-tanzu/velero/releases/tag/v1.11.0)
:::

2. Untar the file and then change directory into the uncompressed directory:

:::BlockQuote{indent="1"}
$ tar -zxf \<FILENAME>.tar.gz
cd \<DIRECTORY>
:::

3. Update Velero custom resource definitions:

:::BlockQuote{indent="1"}
$ ./velero install --crds-only --dry-run -o yaml | kubectl apply -f -
:::

4. Download the new Velero images and push them to your private registry from your jumpbox.
5. Upgrade container images as instructed in the Velero upgrade to 1.12 article
6. Confirm both client and server version are on the same 1.12.0 release:

:::BlockQuote{indent="1"}
$ ./velero version
:::

## Upgrade the Swimlane KOTS application:

1. Push the SPI (kotsadm) images to your registry:

:::BlockQuote{indent="1"}
$ kubectl kots admin-console push-images kotsadm.tar.gz / --registry-username  --registry-password&#x20;
:::

2. Next, upgrade the Swimlane Platform Installer (SPI):

:::BlockQuote{indent="1"}
$ kubectl kots admin-console upgrade --kotsadm-registry / --registry-username  --registry-password  -n&#x20;
:::

:::Paragraph{indent="1"}
When the SPI upgrade is complete, upload the Swimlane airgap bundle to the SPI dashboard.
:::

3. Log in to the Swimlane Platform Installer dashboard (https\://\<SwimlaneDNS>:8800).
4. Go to the Version History tab and click ***Upload a new version***, then browse to the swimlane-platform-10.16.0\_XXX.airgap file and click ***Upload***.
   1. The sequence number “\_XXX” of the airgap file may be higher than shown if a new sequence has been published
   2. Once the upload of the airgap completes, refresh the page or switch tabs to see the status of the file extraction.
5. Go to the Version History tab - you will see a version for 10.16.0\_XXX.
6. Click Deploy on the new 10.16.0\_XXX version with the highest sequence number at the top of the versions list.
7. Once the Application tab shows ‘Ready’ your upgrade is complete.

See Update the Swimlane Python Driver Python Package if you want to update the driver at this time.

## Update the Swimlane Python Driver Python Package

Beginning with Swimlane version 10.2.0, the Python Driver *swimlane* Python package must be manually updated after an upgrade.

1. Delete the old *swimlane* Python package.
2. Update the *swimlane* Python package in the Swimlane UI to version **10.9.1**
   If this is an embedded airgapped upgrade, please download the *swimlane* Python wheel (.whl) package from here and update it in the Swimlane UI.&#x20;

![](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/8126341897/original/fJvlhTwxsxvVj9HiSEpOXdMYqh1-Stn-Ng.png?1709197965)

3. &#x20;Restart the Swimlane API and tasks pods with this command:

:::BlockQuote{indent="1"}
kubectl rollout restart deployments/swimlane-api deployments/swimlane-tasks
:::

## Download and Push New Velero Images

Use these commands to download and push new Velero images.

:::BlockQuote
$ docker pull velero/velero\:v1.11.0
$ docker tag velero/velero\:v1.11.0 //velero/velero\:v1.11.0
$ docker push //velero/velero\:v1.11.0
$ docker pull velero/velero-restic-restore-helper\:v1.11.0
$ docker tag velero/velero-restic-restore-helper\:v1.11.0 //velero/velero-restic-restore-helper\:v1.11.0
$ docker push //velero/velero-restic-restore-helper\:v1.11.0
$ docker pull velero/velero-plugin-for-aws\:v1.7.1
$ docker tag velero/velero-plugin-for-aws\:v1.7.1 //velero/velero-plugin-for-aws\:v1.7.1
$ docker push //velero/velero-plugin-for-aws\:v1.7.1
$ docker pull velero/velero-plugin-for-gcp\:v1.7.1
$ docker tag velero/velero-plugin-for-gcp\:v1.7.1 //velero/velero-plugin-for-gcp\:v1.7.1
$ docker push //velero/velero-plugin-for-gcp\:v1.7.1
$ docker pull velero/velero-plugin-for-microsoft-azure\:v1.7.1
$ docker tag velero/velero-plugin-for-microsoft-azure\:v1.7.1 //velero/velero-plugin-for-microsoft-azure\:v1.7.1
$ docker push //velero/velero-plugin-for-microsoft-azure\:v1.7.1
:::

## Troubleshooting

Upgrading will sometimes leave the Hangfire notifications in a corrupted state. The swimlane-api and swimlane-tasks pods will be crashlooping with logs of this form

:::BlockQuote
swimlane-api:
Hangfire.Mongo.Migration.MongoMigrationException: Migration failed in Hangfire.Mongo.Migration.Steps.Version17.AddNotificationsCollection
:::

:::BlockQuote
swimlane-tasks:
Core.ErrorHandling.ContractRequiresException: RabbitMQConnectionString is not defined in Orchestration configuration.

:::

Dropping the Hangfire notifcations collection in Mongo will remedy this.

:::BlockQuote
kubectl exec  swimlane-tools-0 -- /bin/bash -c  'mongo $SWIMLANE\_Data\_\_Mongo\_\_SwimlaneConnectionString --quiet --tls --tlsAllowInvalidCertificates --eval 'db\["hangfire.notifications"].drop()''
:::

