Upgrade Existing Helm Deployment
If you are using the kasm chart, follow the steps below to upgrade your Kasm Helm deployment.
If you are currently on the legacy kasm-single-zone chart, you must first follow the steps in Upgrade Legacy Helm Deployment to upgrade to the kasm chart at version 1.1181.0 before proceeding with this guide.
Upgrade Paths
This guide covers the following upgrade paths:
- Older version → 1.1181.0 — Follow the legacy upgrade guide to upgrade from the old
kasm-single-zonechart to thekasmchart at version1.1181.0. - 1.1181.0 → 1.1190.0 — Follow the steps in this guide.
developbranch → 1.1190.0 — If you installed the Helm chart from thedevelopbranch (between the 1.18.1 and 1.19.0 releases), follow the same 1.1181.0 → 1.1190.0 steps in this guide.
Upgrade from 1.1181.0 to 1.1190.0
At a Glance
- Retrieve your current values
- Review field changes and migrate your values
- Run the Helm upgrade
- Upgrade standalone PostgreSQL (if applicable)
- Verify the upgrade
- Kasm log in
1. Retrieve Your Current Values
Before upgrading, export your current Helm values so you can migrate them to the new chart format.
-
If you deployed using a custom
my-values.yaml, retrieve it with:helm get values {RELEASE_NAME} -n {NAMESPACE}Replace the placeholders:
{RELEASE_NAME}: Your Kasm Helm release name. Runhelm list -n {NAMESPACE}if you are unsure.{NAMESPACE}: The namespace where your Kasm deployment is running.
-
If you edited
values.yamldirectly, you will need to diff your changes against the1.1181.0defaults to identify what you customised. Follow these steps:-
Download the
1.1181.0default values:curl -o default-values.yaml https://raw.githubusercontent.com/kasmtech/kasm-helm/release/1.18.1/charts/kasm/values.yaml -
Export your currently deployed values:
helm -n {NAMESPACE} get values {RELEASE_NAME} --all -o yaml > current-values.yaml -
Compare the two files to identify your customisations. The recommended tool is
dyff:dyff between default-values.yaml current-values.yaml
Apply the same customisations to the new
1.1190.0values.yaml, taking into account the field changes described in Step 2. -
2. Review Field Changes and Migrate Your Values
Version 1.1190.0 introduces several renamed, removed, and restructured fields. Review the tables below and update your my-values.yaml accordingly before running the upgrade.
Fields Renamed
| Old field (1.1181.0) | New field (1.1190.0) | Notes |
|---|---|---|
imagePullSecrets.server + imagePullSecrets.type | imagePullSecrets.registry | Both old fields are merged into a single registry field |
kasmZones[].upstream_auth_addr | kasmZones[].proxyAddress | Renamed to better reflect its purpose |
annotations | extraAnnotations | The nested annotation sub-keys (configMap, cron, deployment, etc.) have moved under extraAnnotations; a new simple annotations: {} top-level key is now used for chart-wide annotations |
Fields Removed
| Removed field | Action required |
|---|---|
imagePullSecrets.type | Merged into imagePullSecrets.registry — see above |
imagePullSecrets.server | Merged into imagePullSecrets.registry — see above |
dbManagement.upgrade.oldDbBackupPvc | Removed; no longer used. Remove from your values. |
annotations.certSecret (previously extraAnnotations.certSecret) | Use certificate.certManager.annotations instead |
extraLabels.certSecret | Use certificate.certManager.labels instead |
Fields with Behaviour Changes
| Field | Change |
|---|---|
database.hostname | Previously used as the DB service name. Now empty by default and only used when database.standalone: true. Remove this value from your custom values if you are not using a standalone DB. |
Many new fields and features have been added in 1.1190.0. Refer to the chart documentation for the full list of available configuration options.
Configure Values for the DB Upgrade
The upgrade chart will automatically back up your existing database, apply the schema migration, and upgrade Kasm. To enable this, add the following to your my-values.yaml:
dbManagement:
initialize: false
upgrade:
enable: true
oldDbHostname: ""
backupStorageClass: ""
oldDbSecretsName: ""
oldDbBackupFileName: kasm_dump.tar
Replace the placeholders:
-
oldDbSecretsName: Leave empty ("") in nearly all cases — the chart will auto-resolve to{RELEASE_NAME}-secrets, which is the standard secret name created by 1.1181.0+ deployments. Only set this if you manually renamed the Kasm secrets object before upgrading; if so, the value MUST exactly match the in-cluster secret name. To check the current name, run:kubectl -n {NAMESPACE} get secret | grep secrets -
oldDbHostname: The database hostname from your previous Helm release. Only required if your old deployment used a non-default DB hostname (i.e. notdatabase.hostname=kasm-db). Leave empty ("") if using a standalone DB, or if you did not changedatabase.hostnamefrom its default value ofkasm-dbin your previous deployment. If you are unsure, you can check your DB service name by running:kubectl -n {NAMESPACE} get service -
backupStorageClass: The storage class used to create the PersistentVolume for the backup PVC. Leave empty ("") to use the cluster default. -
oldDbBackupFileName: Leave askasm_dump.tar.
3. Run the Helm Upgrade
Once your my-values.yaml is ready, run the upgrade:
OCI Registry (Recommended)
helm upgrade {RELEASE_NAME} oci://registry-1.docker.io/kasmweb/kasm-helm \
--version 1.1190.0 --namespace {NAMESPACE} -f my-values.yaml
Classic Helm Repository
helm repo add kasm https://helm.kasm.com
helm repo update
helm upgrade {RELEASE_NAME} kasm/kasm-helm --version 1.1190.0 --namespace {NAMESPACE} -f my-values.yaml
Make sure you are using the same {RELEASE_NAME} as your previous installation.
This will:
- Back up the existing database
- Apply the schema migration
- Upgrade the Kasm deployment
You can monitor the backup job with:
kubectl logs -n {NAMESPACE} -l app.kubernetes.io/component=pre-upgrade-backup
Expected backup job pod output when the backup completes successfully:
Starting backup to /data/kasm-db-dump/kasm_dump.tar
Backup complete
4. Upgrade Standalone PostgreSQL (if applicable)
Only follow this section if you are using a standalone PostgreSQL database. If you are using the included database, skip to Step 5.
Do NOT upgrade your database until the backup job has finished.
- Run the Helm upgrade command from Step 4.
- Wait until the
pre-upgrade-backupjob completes and all new pods are in theInitstate:kubectl get pods -n {NAMESPACE} - Once the backup is confirmed complete, upgrade your standalone PostgreSQL instance from version 14 to version 16.
- The
db-upgradejob will wait for PostgreSQL 16 to be detected before proceeding. You can monitor this with:You will see output like the following while it waits, then a confirmation once the upgrade is detected:kubectl -n {NAMESPACE} logs -l app.kubernetes.io/component=db-upgrade -c db-major-version-is-readyPostgreSQL 14.x detected (need 16.x) ... waiting...PostgreSQL 14.x detected (need 16.x) ... waitingDB not reachable yet... waiting...DB not reachable yet... waitingPostgreSQL 16.x detected (server_version_num=160012)
5. Verify the Upgrade
kubectl get pods -n {NAMESPACE}
Confirm all pods have a Running status (job pods should show Completed), then log in to the Kasm web interface to verify the upgrade completed successfully.
6. Kasm Log In
-
Add your ingress address to your DNS
-
Access your Kasm environment using the
publicAddrvalue you set. -
For admin and user credentials, see the helm note via:
helm get notes {RELEASE_NAME} -n {NAMESPACE}
Rollback and Troubleshooting
Failure during backup
If the upgrade fails during the backup stage, roll back and clean up the incomplete jobs before retrying:
helm rollback {RELEASE_NAME} -n {NAMESPACE}
kubectl -n {NAMESPACE} delete jobs {RELEASE_NAME}-db-upgrade {RELEASE_NAME}-pre-upgrade-backup
After resolving the underlying issue, re-run the upgrade from Step 3.
For additional troubleshooting assistance, see Kubernetes Troubleshooting.