Upgrades & versioning
The platform and the operator version independently. How to roll each one forward, the one component Helm won't upgrade for you, and how to back out.
An Industric install has two independently-versioned halves: the platform image (adaptivelive/exo:vX.Y.Z) and the operator image (adaptivelive/autonomic-manager:vX.Y.Z), plus the CRDs that move with the operator. Apply database migrations explicitly before rolling out the new platform image.
Versioning
Both images are semver-tagged. The platform's /api/health stays green through a rolling update; with leader election, the operator's WebSocket reconnects within a second of the new pod taking the lease.
Upgrading the platform
First run exo-server --migrations from the target image in a migration job with the application's database and encryption configuration. Wait for success, then bump the image on the exo-app Deployment and watch the rollout. See Database migrations.
kubectl -n exo set image deployment/exo-app exo=adaptivelive/exo:vX.Y.Z
kubectl -n exo rollout status deployment/exo-app
exo-install platform --namespace exo --image adaptivelive/exo:vX.Y.Z
EXO_ENCRYPTION_KEY or EXO_JWT_SECRET during an upgrade. A new encryption key makes existing encrypted columns unreadable; a new JWT secret logs everyone out. Upgrades touch the image, not the Secret.Upgrading the operator
This is the same sequence the dashboard shows under Update the connector on your deployment's connect dialog: definitions first, then the chart, then a restart so the new image takes over even when the chart version is unchanged.
kubectl apply --server-side --force-conflicts -f https://exo.assets.adaptive.live/manifests/crds.yaml
kubectl apply --server-side --force-conflicts -f https://exo.assets.adaptive.live/manifests/rbac.yaml
helm repo update exo
helm upgrade autonomic exo/autonomic --namespace autonomic-system --reuse-values
kubectl -n autonomic-system rollout restart deploy/autonomic-manager
Upgrading CRDs
crds/ directory, which Helm installs once but never upgrades or deletes. When a release adds fields to a CRD, apply the new definitions yourself before (or alongside) the operator upgrade:kubectl apply --server-side --force-conflicts -f https://exo.assets.adaptive.live/manifests/crds.yaml
v1alpha1; applying the newer definitions is safe for existing objects.Rolling back
Both halves are standard Deployments, so a bad upgrade rolls back the usual way:
kubectl -n exo rollout undo deployment/exo-app
kubectl -n autonomic-system rollout undo deployment/autonomic-manager
An image rollback does not undo database migrations. Check the target release's schema compatibility and restore the pre-upgrade snapshot if the older image cannot use the migrated schema.