Helm
Last updated: May 29, 2026
Upgrade instructions for Helm-based installations (Kubernetes and OpenShift). See Release Notes for the full changelog.
Upgrade Paths
Click a version to expand upgrade instructions. Orange rows are migration boundaries. All Helm upgrades require helm uninstall before helm upgrade --install because StatefulSets cannot be updated in-place. PVCs/PVs are preserved.
5.0.0
latest
May 28, 2026
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 5.0.0
kubectl get pods # verify all pods are running
4.3.5166-384943f
December 11, 2025
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.3.5166-384943f
kubectl get pods # verify all pods are running
⚠️ PVC migration — MinIO backup/restore required
Version 4.3.4811 introduces a new PVC xt-git-repositories which replaces the old xt-source-xltrail-volume-xt-git-web-0. Migration uses MinIO as temporary storage.
1. Snapshot the PVC xt-source-xltrail-volume-xt-git-web-0 for backup. Ensure the MinIO PVC has enough space:
kubectl exec xt-git-web-0 -c git -n xltrail -- df -h /source/repositories
kubectl exec xt-minio-0 -n xltrail -- df -h /data2. Uninstall, then run in backup mode (copies repos from old PVC to MinIO):
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version <target> \
--set maintenanceMode=true --set backupRepositories=true
kubectl logs -f xt-git-web-0 -c ops # wait until Running3. Run in restore mode (copies repos from MinIO to new PVC):
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version <target> \
--set maintenanceMode=true --set restoreRepositories=true
kubectl logs -f xt-app-0 -c ops # wait until Running4. Start normally:
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version <target>5. Verify everything works, then delete the old PVC:
kubectl delete pvc xt-source-xltrail-volume-xt-git-web-0
4.3.4811-3f509cc
July 4, 2025
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.3.4811-3f509cc
kubectl get pods # verify all pods are running
⚠️ StatefulSet migration — xt-git-web → xt-app
Version 4.2.4548 renamed the StatefulSet from xt-git-web to xt-app. This requires a manual backup and restore of git repositories via MinIO.
1. Backup repositories from xt-git-web-0:
kubectl exec xt-git-web-0 -c git -n xltrail -- \
mc cp --recursive /source/repositories/ minio/xltrail-repositories/2. Uninstall and deploy the new version (creates xt-app StatefulSet):
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.2.45483. Restore repositories to xt-app-0:
kubectl exec xt-app-0 -c git -n xltrail -- \
mc cp --recursive minio/xltrail-repositories/ /source/repositories/4. Verify: kubectl get pods — everything should be up and running.
4.2.4548
April 28, 2025
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.2.4548
kubectl get pods # verify all pods are running
4.1.12
March 18, 2025
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.12
kubectl get pods # verify all pods are running
4.1.11
March 9, 2025
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.11
kubectl get pods # verify all pods are running
4.1.10
February 13, 2025
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.10
kubectl get pods # verify all pods are running
4.1.8
January 31, 2025
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.8
kubectl get pods # verify all pods are running
4.1.7
October 30, 2024
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.7
kubectl get pods # verify all pods are running
4.1.6
October 9, 2024
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.6
kubectl get pods # verify all pods are running
⚠️ Non-root migration — fsGroup / chown required
Since 4.1.6, all containers run as non-root user (UID 1001). When upgrading from < 4.1.6, existing files under /source/repositories may be owned by root.
The chart handles this automatically via an init container controlled by git.provisionMountPath (default: true). If your cluster does not allow init containers to run as root, run a one-off pod:
kubectl run chown-repositories -n xltrail \
--image=alpine --restart=Never \
--overrides='{"spec":{"securityContext":{"runAsUser":0},"containers":[{"name":"chown-repositories","image":"alpine","command":["chown","-R","1001:0","/source/repositories"],"volumeMounts":[{"name":"source","mountPath":"/source/repositories"}]}],"volumes":[{"name":"source","persistentVolumeClaim":{"claimName":"xt-source-xltrail-volume-xt-git-web-0"}}]}}'
kubectl wait pod chown-repositories -n xltrail \
--for=jsonpath='{.status.phase}'=Succeeded --timeout=5m
kubectl delete pod chown-repositories -n xltrailThen continue with the standard upgrade for your target version.
Symptom of incorrect ownership: Sync error: repository path '/source/repositories/<repo-id>/origin/' is not owned by current user
4.1.5
September 22, 2024
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.5
kubectl get pods # verify all pods are running
4.1.4
September 13, 2024
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.4
kubectl get pods # verify all pods are running
4.1.3
July 26, 2024
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1.3
kubectl get pods # verify all pods are running
4.1
July 18, 2024
helm repo add xltrail https://xltrail.com/charts
helm repo update
helm show values xltrail/xltrail > values.yaml
# Merge your settings into values.yaml
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version 4.1
kubectl get pods # verify all pods are running
⚠️ v4.0 upgrade — PVC resize + reprocessing
Upgrading to v4.0 triggers reprocessing of all repositories (may take hours). The xltrail PVC must be resized to match the git PVC.
1. Snapshot PVC xt-source-xltrail-volume-xt-git-web-0 for backup.
2. Uninstall and resize PVC:
kubectl config set-context --current --namespace=xltrail
helm uninstall xltrail
kubectl get pods # wait until no pods remain
kubectl patch pvc xt-source-xltrail-volume-xt-git-web-0 \
-p '{ "spec": { "resources": { "requests": { "storage": "100Gi" }}}}'
kubectl get pvc # verify size3. Install the latest version:
helm upgrade --install xltrail xltrail/xltrail -f values.yaml4. Migrate drag-and-drop projects (once pods are running):
kubectl exec -it svc/xt-web -c server -- python /server/scripts/k8s_repo_migration.pyNote: Reprocessing may take up to a few hours.
5. Clean up old PVCs (once everything works):
kubectl delete pvc/xt-filestore-volume-xt-filestore-0
kubectl delete pvc/xt-source-git-volume-xt-git-web-0
3.5.0
Update the imageTag under minio in your values.yaml:
imageTag: RELEASE.2021-12-10T23-03-39ZThen follow the standard upgrade steps.