Upgrading Ice Flow
This guide covers how to upgrade Ice Flow to a new version. Upgrades replace the running binary, image, or chart and restart the service. Because all catalog, warehouse, scope, monitor, and replication state lives in Symphony's JetStream buckets—not on the Ice Flow host—upgrades are stateless from the extension's point of view. Active replications and monitors resume from their last bucket-tracked position on restart.
The commands below vary by deployment method. Ensure the required tools are installed for your environment.
Pre-Upgrade Checklist
Before upgrading:
- Review the release notes for breaking changes or migration steps.
- Verify the extension is healthy. Confirm Ice Flow is connected and
running:
cirata extension list - Plan for downtime. Ice Flow stops accepting work while the new version starts. Active replications pause and resume after restart; expect 30–60 seconds of unavailability for the restart itself.
- Note custom configuration edits. The RPM marks
iceflow.env,application.properties, andlogback.xmlasCONFIG | NOREPLACE, so admin edits survive upgrades. New defaults land in.rpmnewfiles for review.
RPM Upgrade
sudo dnf upgrade cirata-iceflow-<new-version>.x86_64.rpm
On SLES:
sudo zypper update cirata-iceflow-<new-version>.x86_64.rpm
The package post-install scriptlet restarts the service automatically.
After the upgrade, review any .rpmnew files that appeared in
/etc/cirata/symphony/extensions/iceflow/ and merge new defaults into your
edited configuration as needed:
ls /etc/cirata/symphony/extensions/iceflow/*.rpmnew
Docker Upgrade
# Pull or load the new image
docker pull cirata/iceflow:<new-version>
# Compose: update IMAGE_TAG and recreate
IMAGE_TAG=<new-version> SYMPHONY_TOKEN=<token> \
docker compose up -d --force-recreate
For direct docker run workflows, stop and remove the old container, then
start a new one against the new image tag:
docker stop cirata-iceflow && docker rm cirata-iceflow
docker run -d \
--name cirata-iceflow \
--restart unless-stopped \
-e SYMPHONY_TOKEN=<token> \
-v iceflow-logs:/var/log/cirata \
cirata/iceflow:<new-version>
Kubernetes Upgrade
helm upgrade my-iceflow iceflow-<new-version>.tgz \
--reuse-values
kubectl rollout status deployment/my-iceflow
Pass --set image.tag=<new-version> if the chart version itself has not
changed but you only want to roll a new image. Use --reset-values instead of
--reuse-values to pick up new default values introduced by the chart.
Post-Upgrade Verification
- Extension reconnects. Allow 30–60 seconds, then confirm:
Ice Flow should appear with the new version.
cirata extension list - Logs are clean. Review startup output for token, NATS, or Kerberos
errors:
# RPM
sudo journalctl -u cirata-iceflow --since "5 min ago"
# Docker
docker logs --tail 100 cirata-iceflow
# Kubernetes
kubectl logs -l app.kubernetes.io/instance=my-iceflow --tail 100 - Work resumes. Open at least one active monitor or replication in the Symphony UI and confirm a fresh event or operation timestamped after the restart.
Rollback
If the upgrade causes issues, roll back to the previous version.
RPM
sudo dnf downgrade cirata-iceflow-<previous-version>.x86_64.rpm
Docker
IMAGE_TAG=<previous-version> SYMPHONY_TOKEN=<token> \
docker compose up -d --force-recreate
Kubernetes
helm rollback my-iceflow
Or roll back the underlying Deployment:
kubectl rollout undo deployment/my-iceflow
Rollback is safe when no release between the two versions changed the schema of the JetStream buckets Ice Flow owns. Release notes call out any such change. When in doubt, take a backup of the Symphony configuration directory before upgrading so the bucket state can be restored alongside the binary.
Data Migration
Ice Flow's persistent state lives in Symphony's iceflow_* JetStream
buckets. The extension creates and migrates these on startup—new buckets
introduced by a release are created automatically, and existing buckets are
preserved across upgrades.
No host-local data migration is required.
Token Handling Across Upgrades
If you installed Ice Flow with the registration-token flow, the permanent API
key the SDK provisioned on first start lives in the OS credential store (or
~/.config/cirata/ as a fallback) under the cirata user. Upgrades leave
this storage untouched, so no re-provisioning happens and you do not need to
re-issue a registration token.
For Docker and Kubernetes installs that use a pre-provisioned SYMPHONY_TOKEN
secret, the secret is independent of the image or chart version—upgrades pick
up the same secret and reconnect immediately.
See Also
- Installation—first-time install procedures
- Uninstallation—remove Ice Flow cleanly
- Configuration Reference—environment variables and deployment options
- Troubleshooting—solutions for common errors