Upgrading Rucio
Rucio’s base images are stored on DockerHub. Since DockerHub has pull rate limits, it is best to pull new images into a
proxy cache. To do so (in Harbor), pull the image to the proxy-cache project, e.g. for release-1.29.6
docker pull harbor.srcdev.skao.int/rucio-dockerhub-cache/rucio/rucio-daemons:release-1.29.6
docker pull harbor.srcdev.skao.int/rucio-dockerhub-cache/rucio/rucio-server:release-1.29.6
Database Upgrade
For major version updates, the database schema may have changed. Database upgrades proceed via Alembic.
To upgrade, first create a new postgres client container and clone the release of the code that the server is being upgraded to inside this container.
Next, check the etc/alembic.ini.template file’s sqlalchemy.url fields and update to point to the Rucio
application database with the correct credentials and schema. Rename this file to alembic.ini.
The Alembic revision should be in the database table alembic_version. This can be checked by issuing
alembic current from inside the postgres client container, e.g.
alembic current
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
2190e703eb6e (head)
and can be verified directly against the database by, e.g.
psql --host rucio-postgresql -U rucio -d rucio -p 5432
rucio=> SELECT * FROM test.alembic_version;
version_num
--------------
2190e703eb6e
If the two are consistent, the database can be upgraded via:
alembic upgrade head
Otherwise you will need to add this table and field manually to match the current version.
Server/Daemons Upgrade (k8s/helm)
Note
The assumption here is that the deployment uses the base Rucio images. This is currently not the case for our 1.29.* deployment.
First check the helm repository is up to date:
helm repo add rucio https://rucio.github.io/helm-charts
helm repo update
Update the values for image.repository and image.tag in the server yaml to point to the new images pushed to
the proxy-cache, e.g.
image:
repository: harbor.srcdev.skao.int/rucio-dockerhub-cache/rucio/rucio-server
tag: release-X.Y.Z
And install:
helm upgrade --install server --namespace <namespace> rucio/rucio-server --version X.Y.Z -f /path/to/server/yaml
Likewise, do the same for the daemons:
image:
repository: harbor.srcdev.skao.int/rucio-dockerhub-cache/rucio/rucio-daemons
tag: release-1.29.6
helm upgrade daemons --namespace <namespace> rucio/rucio-daemons --version X.Y.Z -f /path/to/daemons/yaml