Guide: Updating the test bed

Track

Test bed operation

This guide walks you through the process of updating a test bed instance to the latest release.

What you will achieve

At the end of this guide you will have updated a test bed instance to the latest test bed release. The update process assumes that your target instance has been installed using either Docker or Kubernetes as described in the installation guide for development or for production.

What you will need

  • About 5 minutes.

  • A text editor (if new configuration is needed).

  • A web browser.

  • A working test bed installation based on Docker or Kubernetes.

  • Command line access to the machine hosting the test bed.

  • Access to the internet (from the host machine).

How to complete this guide

Completing the update steps will be done by issuing commands on a command line interface. All commands are provided and explained in each relevant step.

Steps

Carry out the following steps to update your test bed instance.

Step 1: Update the test bed

Depending on how your test bed instance was installed, follow the section for a Docker-based, or Kubernetes-based installation. Note that upgrading to a newer release requires no manual migration actions, and newer releases are always guaranteed to be backwards compatible.

Warning

Updating to 1.13.0+: When updating from a release prior to 1.13.0 to a release starting from 1.13.0, the database container itb-mysql may take several minutes to update. Make sure you do not stop itb-mysql before this upgrade completes.

Updating a Docker-based installation

Open a command prompt and go to the folder containing your docker-compose.yml file. From here, and in case your container images are set to a fixed release tag (e.g. isaitb/gitb-ui:1.24.3) update these to refer to the latest release:

services:
  gitb-redis:
    image: isaitb/gitb-redis:1.25.0
    ...
  gitb-mysql:
    image: isaitb/gitb-mysql:1.25.0
    ...
  gitb-srv:
    image: isaitb/gitb-srv:1.25.0
    ...
  gitb-ui:
    image: isaitb/gitb-ui:1.25.0
    ...

If you are referring to the latest or nightly tags no change is necessary. Once you are ready issue:

docker compose pull

This command will check the Docker Hub for each of the test bed’s components and will proceed to download newer versions as needed. Note that executing this command has no effect on your currently running test bed instance. To apply the new release issue:

docker compose up -d

To ensure the test bed is successfully updated check the logs of the itb-srv and itb-ui containers. For itb-srv issue docker logs -f itb-srv for which you should see in the end:

> docker logs -f itb-srv

...
31/01/2025 15:36:51 INFO  c.g.t.c.TestbedServiceContextListener - [] Started ITB test engine (itb-srv) - release 1.25.0
 _____ _______ ____                       _
|_   _|__   __|  _ \                     | |
  | |    | |  | |_) |  _ __ ___  __ _  __| |_   _
  | |    | |  |  _ <  | '__/ _ \/ _` |/ _` | | | |
 _| |_   | |  | |_) | | | |  __/ (_| | (_| | |_| |
|_____|  |_|  |____/  |_|  \___|\__,_|\__,_|\__, |
                                             __/ |
                                            |___/

Exit the log display using CTRL-C. Then check itb-ui by issuing docker logs -f itb-ui for which the output should complete as follows (note also the listed release number and date):

> docker logs -f itb-ui

...
31/01/2025 15:36:52 INFO  hooks.PostStartHook - Started ITB frontend (itb-ui) in production mode - release 1.25.0 (2025-01-31 09:35:19)
 _____ _______ ____                       _
|_   _|__   __|  _ \                     | |
  | |    | |  | |_) |  _ __ ___  __ _  __| |_   _
  | |    | |  |  _ <  | '__/ _ \/ _` |/ _` | | | |
 _| |_   | |  | |_) | | | |  __/ (_| | (_| | |_| |
|_____|  |_|  |____/  |_|  \___|\__,_|\__,_|\__, |
                                             __/ |
                                            |___/

Once again exit the log display by issuing CTRL-C. Your test bed should now be online and updated to the latest release.

Updating a Kubernetes-based installation

Note

This section assumes use of the Helm package manager and the test bed’s Helm chart. If you are using manifest files follow the instructions listed here.

If you haven’t added the test bed’s chart repository to your Helm installation, do this by issuing:

helm repo add itb https://www.itb.ec.europa.eu/helm

With the test bed’s repository added you can pull the latest chart definition by issuing:

helm repo update itb

This command will pull the latest chart definitions, including the one for the latest test bed release.

Assuming you have defined an override.yaml file for your instance’s configuration, open a command prompt and go to the folder containing it. In case you have specified here image tags for a specific release (e.g. isaitb/gitb-ui:1.24.3), update these to refer to the latest one:

redis:
  image: isaitb/gitb-redis:1.25.0
  ...
mysql:
  image: isaitb/gitb-mysql:1.25.0
  ...
srv:
  image: isaitb/gitb-srv:1.25.0
  ...
ui:
  image: isaitb/gitb-ui:1.25.0
  ...

Alternatively if you are referring to the latest or nightly tags you need to make sure that Helm pulls their latest definitions. You can force this by setting the image pull policy to “Always” as follows (considering itb-ui as an example):

ui:
  image: isaitb/gitb-ui:nightly
  imagePullPolicy: Always
  ...

Once you have made the above changes, or in case you never set image tags in your override.yaml file, you are ready to proceed with the update. To do this issue:

helm upgrade itb itb/itb -f override.yaml -n itb

Optionally, as part of the update, you may also choose to check the provenance and integrity of the chart by verifying its signature. A failed signature verification will prevent the update from proceeding. To do so:

  1. If you haven’t done this before, add to your PGP keyring the test bed’s public PGP key.

  2. Add to your helm upgrade command the --verify flag, adding also --keyring <path_to_keyring> if your keyring is not at the default location.

Once the update completes successfully you will see the test bed’s post-installation notes. These will also include the number of the installed release:

> helm upgrade itb itb/itb -f override.yaml -n itb

Release "itb" has been upgraded. Happy Helming!
NAME: itb
LAST DEPLOYED: Thu Nov 28 10:32:46 2024
NAMESPACE: itb
STATUS: deployed
REVISION: 4
TEST SUITE: None
NOTES:
----------------------------------------------------------------------------
  ___  _____  ____                   _     ___
 |_ _||_   _|| __ )    ___   _ __   | | __( _ )  ___
  | |   | |  |  _ \   / _ \ | '_ \  | |/ // _ \ / __|
  | |   | |  | |_) | | (_) || | | | |   <| (_) |\__ \
 |___|  |_|  |____/   \___/ |_| |_| |_|\_\\___/ |___/


The Interoperability Test Bed (ITB) is now deployed on your cluster (release "1.24.4").

...

To ensure the test bed has completed its initialisation you should check the logs of itb-srv and itb-ui. For itb-srv issue kubectl logs -f deployment/itb-srv -n itb for which you should see output completing as follows:

> kubectl logs -f deployment/itb-srv -n itb

...
31/01/2025 15:36:51 INFO  c.g.t.c.TestbedServiceContextListener - [] Started ITB test engine (itb-srv) - release 1.25.0
 _____ _______ ____                       _
|_   _|__   __|  _ \                     | |
  | |    | |  | |_) |  _ __ ___  __ _  __| |_   _
  | |    | |  |  _ <  | '__/ _ \/ _` |/ _` | | | |
 _| |_   | |  | |_) | | | |  __/ (_| | (_| | |_| |
|_____|  |_|  |____/  |_|  \___|\__,_|\__,_|\__, |
                                             __/ |
                                            |___/

You can exit the log display by issuing a CTRL-C. To check itb-ui issue kubectl logs -f deployment/itb-ui -n itb for which the output should complete as follows (note also the listed release number and date):

> kubectl logs -f deployment/itb-ui -n itb

...
31/01/2025 15:36:52 INFO  hooks.PostStartHook - Started ITB frontend (itb-ui) in production mode - release 1.25.0 (2025-01-31 09:35:19)
 _____ _______ ____                       _
|_   _|__   __|  _ \                     | |
  | |    | |  | |_) |  _ __ ___  __ _  __| |_   _
  | |    | |  |  _ <  | '__/ _ \/ _` |/ _` | | | |
 _| |_   | |  | |_) | | | |  __/ (_| | (_| | |_| |
|_____|  |_|  |____/  |_|  \___|\__,_|\__,_|\__, |
                                             __/ |
                                            |___/

Once again exit the log display by issuing CTRL-C. Your test bed should now be online and updated to the latest release.

Using manifest files

If you have directly used manifest files to install the test bed you will need to ensure they are updated for the new release. Open a command prompt and go to the folder containing your manifest files. In case you have specified in your deployment manifests image tags for a specific release (e.g. isaitb/gitb-ui:1.24.3) update these to refer to the latest release. Assuming you have used the test bed’s manifests, these would be:

  • 03-mysql-deployment.yaml for the itb-mysql component.

  • 05-redis-deployment.yaml for the itb-redis component.

  • 07-srv-deployment.yaml for the itb-srv component.

  • 09-ui-deployment.yaml for the itb-ui component.

Ensure here that the container image is updated to the latest release (taking 09-ui-deployment.yaml as an example):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: "itb-ui"
spec:
  ...
  template:
    ...
    spec:
      containers:
        - image: "isaitb/gitb-ui:1.25.0"
          ...

In case you are referring in the deployment manifests to the latest or nightly tags, you need to ensure these will be pulled. You can force this by changing in each manifest the image pull policy to “Always” as follows:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: "itb-ui"
spec:
  ...
  template:
    ...
    spec:
      containers:
        - image: "isaitb/gitb-ui:nightly"
          imagePullPolicy: "Always"
          ...

You can proceed with updating your test bed instance. Update itb-mysql by issuing …

kubectl apply -f 03-mysql-deployment.yaml

… followed by itb-srv by issuing …

kubectl apply -f 07-srv-deployment.yaml

… and finally itb-ui by issuing:

kubectl apply -f 09-ui-deployment.yaml

To ensure the test bed has completed its initialisation you should check the logs of itb-srv and itb-ui as described in the previous section.

Step 2: Verify the new release

To check that the new release has been successfully installed you can also verify the version number displayed on the test bed’s interface. To do this visit the test bed’s welcome page where you will find the version number in the bottom right corner.

../_images/login_version.png

Summary

Congratulations! You have just updated your test bed to the latest version. In doing so you downloaded the test bed’s latest component versions, applied configuration changes, and confirmed that the update completed successfully.

See also

For more information on the Docker and Docker Compose tools, commands and properties used in this guide, check out the Docker online documentation. Further information on Helm and Kubernetes can similarly be found in their respective documentation.

In terms of relevant guides, be sure to check: