Chapter 3. Standalone upgrade In general, Red Hat Quay supports upgrades from a prior (N-1) minor version only. For example, upgrading directly from Red Hat Quay 3.8 to the latest version of 3 is not supported. Instead, users would have to upgrade as follows: 3.8.z 3.9.z 3.9.z 3.10.z 3.10.z 3.11.z 3.11.z 3.12.z 3.12.z 3.13.z This is required to ensure that any necessary database migrations are done correctly and in the right order during the upgrade. In some cases, Red Hat Quay supports direct, single-step upgrades from prior (N-2, N-3) minor versions. This exception to the normal, prior minor version-only, upgrade simplifies the upgrade procedure for customers on older releases. The following upgrade paths are supported for Red Hat Quay 3: 3.10.z 3.13.z 3.11.z 3.13.z 3.12.z 3.13.z For users wanting to upgrade the Red Hat Quay Operator, see Upgrading the Red Hat Quay Operator Overview . This document describes the steps needed to perform each individual upgrade. Determine your current version and then follow the steps in sequential order, starting with your current version and working up to your desired target version. Upgrade to 3.13.z from 3.12.z Upgrade to 3.13.z from 3.11.z Upgrade to 3.13.z from 3.10.z See the Red Hat Quay Release Notes for information on features for individual releases. The general procedure for a manual upgrade consists of the following steps: Stop the Quay and Clair containers. Backup the database and image storage (optional but recommended). Start Clair using the new version of the image. Wait until Clair is ready to accept connections before starting the new version of Quay. 3.1. Accessing images Red Hat Quay image from version 3.4.0 and later are available from registry.redhat.io and registry.access.redhat.com , with authentication set up as described in Red Hat Container Registry Authentication . 3.2. Upgrading the Clair PostgreSQL database If you are upgrading Red Hat Quay to version 13, you must migrate your Clair PostgreSQL database version from PostgreSQL version 13 version 15. This requires bringing down your Clair PostgreSQL 13 database and running a migration script to initiate the process. Use the following procedure to upgrade your Clair PostgreSQL database from version 13 to version 15. Important Clair security scans might become temporarily disrupted after the migration procedure has succeeded. Procedure Stop the Red Hat Quay container by entering the following command: USD sudo podman stop <quay_container_name> Stop the Clair container by running the following command: USD sudo podman stop <clair_container_id> Run the following Podman process from SCLOrg's Data Migration procedure, which allows for data migration from a remote PostgreSQL server: USD sudo podman run -d --name <clair_migration_postgresql_database> 1 -e POSTGRESQL_MIGRATION_REMOTE_HOST=<container_ip_address> \ 2 -e POSTGRESQL_MIGRATION_ADMIN_PASSWORD=remoteAdminP@ssword \ -v </host/data/directory:/var/lib/pgsql/data:Z> \ 3 [ OPTIONAL_CONFIGURATION_VARIABLES ] registry.redhat.io/rhel8/postgresql-15 1 Insert a name for your Clair PostgreSQL 15 migration database. 2 Your new Clair PostgreSQL 15 database container IP address. Can obtained by running the following command: sudo podman inspect -f "{{.NetworkSettings.IPAddress}}" postgresql-quay . 3 You must specify a different volume mount point than the one from your initial Clair PostgreSQL 13 deployment, and modify the access control lists for said directory. For example: USD mkdir -p /host/data/clair-postgresql15-directory USD setfacl -m u:26:-wx /host/data/clair-postgresql15-directory This prevents data from being overwritten by the new container. Stop the Clair PostgreSQL 13 container: USD sudo podman stop <clair_postgresql13_container_name> After completing the PostgreSQL migration, run the Clair PostgreSQL 15 container, using the new data volume mount from Step 3, for example, </host/data/clair-postgresql15-directory:/var/lib/postgresql/data> : USD sudo podman run -d --rm --name <postgresql15-clairv4> \ -e POSTGRESQL_USER=<clair_username> \ -e POSTGRESQL_PASSWORD=<clair_password> \ -e POSTGRESQL_DATABASE=<clair_database_name> \ -e POSTGRESQL_ADMIN_PASSWORD=<admin_password> \ -p 5433:5432 \ -v </host/data/clair-postgresql15-directory:/var/lib/postgresql/data:Z> \ registry.redhat.io/rhel8/postgresql-15 Start the Red Hat Quay container by entering the following command: USD sudo podman run -d --rm -p 80:8080 -p 443:8443 --name=quay \ -v /home/<quay_user>/quay-poc/config:/conf/stack:Z \ -v /home/<quay_user>/quay-poc/storage:/datastorage:Z \ {productrepo}/{quayimage}:{productminv} Start the Clair container by entering the following command: USD sudo podman run -d --name clairv4 \ -p 8081:8081 -p 8088:8088 \ -e CLAIR_CONF=/clair/config.yaml \ -e CLAIR_MODE=combo \ registry.redhat.io/quay/clair-rhel8:{productminv} For more information, see Data Migration . 3.3. Upgrade to 3.13.z from 3.12.z 3.3.1. Target images Quay: registry.redhat.io/quay/quay-rhel8:v3.13.3 Clair: registry.redhat.io/quay/clair-rhel8:v3.13.3 PostgreSQL: registry.redhat.io/rhel8/postgresql-13 Redis: registry.redhat.io/rhel8/redis-6:1-110 Clair-PosgreSQL: registry.redhat.io/rhel8/postgresql-15 3.4. Upgrade to 3.13.z from 3.11.z 3.4.1. Target images Quay: registry.redhat.io/quay/quay-rhel8:v3.13.3 Clair: registry.redhat.io/quay/clair-rhel8:v3.13.3 PostgreSQL: registry.redhat.io/rhel8/postgresql-13 Redis: registry.redhat.io/rhel8/redis-6:1-110 Clair-PosgreSQL: registry.redhat.io/rhel8/postgresql-15 3.5. Upgrade to 3.13.z from 3.10.z 3.5.1. Target images Quay: registry.redhat.io/quay/quay-rhel8:v3.13.3 Clair: registry.redhat.io/quay/clair-rhel8:v3.13.3 PostgreSQL: registry.redhat.io/rhel8/postgresql-13 Redis: registry.redhat.io/rhel8/redis-6:1-110 Clair-PosgreSQL: registry.redhat.io/rhel8/postgresql-15

Commands:
sudo podman stop <quay_container_name>
sudo podman stop <clair_container_id>
sudo podman run -d --name <clair_migration_postgresql_database> 1 -e POSTGRESQL_MIGRATION_REMOTE_HOST=<container_ip_address> \ 2 -e POSTGRESQL_MIGRATION_ADMIN_PASSWORD=remoteAdminP@ssword -v </host/data/directory:/var/lib/pgsql/data:Z> \ 3 [ OPTIONAL_CONFIGURATION_VARIABLES ] registry.redhat.io/rhel8/postgresql-15
mkdir -p /host/data/clair-postgresql15-directory
setfacl -m u:26:-wx /host/data/clair-postgresql15-directory
sudo podman stop <clair_postgresql13_container_name>
sudo podman run -d --rm --name <postgresql15-clairv4> -e POSTGRESQL_USER=<clair_username> -e POSTGRESQL_PASSWORD=<clair_password> -e POSTGRESQL_DATABASE=<clair_database_name> -e POSTGRESQL_ADMIN_PASSWORD=<admin_password> -p 5433:5432 -v </host/data/clair-postgresql15-directory:/var/lib/postgresql/data:Z> registry.redhat.io/rhel8/postgresql-15
sudo podman run -d --rm -p 80:8080 -p 443:8443 --name=quay -v /home/<quay_user>/quay-poc/config:/conf/stack:Z -v /home/<quay_user>/quay-poc/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}
sudo podman run -d --name clairv4 -p 8081:8081 -p 8088:8088 -e CLAIR_CONF=/clair/config.yaml -e CLAIR_MODE=combo registry.redhat.io/quay/clair-rhel8:{productminv}