Skip to main content
Version: Deploy 25.1

Setup Custom Image Registry

Setting up a custom image registry for Deploy installation enables you to host Docker images in your own registry, whether public (non-authenticated) or private (password-protected). This guide walks you through the process of configuring and using a custom registry for Deploy installation or upgrades.

The xl kube command provides options to configure either default or custom registries through its interactive setup process.

important

This guide focuses on setting up the custom image registry specifically for Deploy installation. While the setup process remains the same, only the required images will differ based on your configuration.

Setting Up Your Custom Registry

Follow these steps to manually pull and configure images in your registry.

1. Prepare Required Images

Before beginning the installation, ensure all necessary images are available in your custom registry. For Deploy version 25.1.x, you'll need the following images:

note

For the most current image versions, refer to the Deploy values.yaml file or use the xl kube images list command.

Checking Latest Image Versions

To retrieve the current list of required images:

note

The kube images list command requires:

  • Docker CLI installed on your system
  • Active internet connection to pull images from docker.io
xl kube images list --server-type deploy

To list only the images needed for your specific configuration:

xl kube images list --server-type deploy --custom-resource "path_to-cr-file.yaml"

In the next sections, we will list the images required depending on the setup.

For Deploy

  • docker.io/xebialabs/xl-deploy:<version>
  • docker.io/xebialabs/deploy-task-engine:<version>
  • docker.io/xebialabs/central-configuration:<version>
  • docker.io/library/busybox:stable
  • docker.io/xebialabs/deploy-operator:<version>
  • docker.io/xebialabs/xl-client:<version>
  • docker.io/bitnami/os-shell:<version>
  • docker.io/bitnami/kubectl:<version>

For Nginx

  • docker.io/bitnami/nginx:<version>
  • docker.io/bitnami/nginx-ingress-controller:<version>

For HAProxy

  • quay.io/jcmoraisjr/haproxy-ingress:<version>

For embedded PostgreSQL

  • docker.io/bitnami/postgresql:<version>

For embedded RabbitMQ

  • docker.io/bitnami/rabbitmq:<version>

2. Pull and Push Images to Custom Image Registry

note

Before pushing a Docker image to a registry, ensure that you're logged into the Docker registry.

Example:

Create a Docker registry called customrepo_host to push the Docker image xl-deploy to the repository customrepo. Run the following commands:

docker pull docker.io/xebialabs/xl-deploy:<version>
docker tag docker.io/xebialabs/xl-deploy:<version> customrepo_host/customrepo/xl-deploy:<version>
docker push customrepo_host/customrepo/xl-deploy:<version>

Use xl kube images pack Command to Pull Images

An easier way to pull all images to a remote location without direct access to docker.io is to use the xl kube images pack command. This command saves all images to a tar file, which you can then transfer to the remote location and load there.

xl kube images pack --server-type deploy --package-file deploy-images.tar.gz

You can also use the --custom-resource option to specify the CR file, so only images required for your setup are included in the tar file.

xl kube images pack --server-type deploy --custom-resource "path_to-cr-file.yaml" --package-file deploy-images.tar.gz

Transfer the deploy-images.tar.gz file to the remote location and load it to the local Docker:

xl kube images unpack --input-package-file deploy-images.tar.gz

After that, tag and push the images to the custom registry as described above.

Examples

Custom Public Registry

The following example lists the questions asked when you select a custom public registry:

? Select type of image registry: public [Custom Public Registry (Uses a specific custom registry)]
? Enter the custom docker image registry name (eg: <imageRegistryName> from <imageRegistryName>/<repositoryName>/<imageName>:<tagName>): customrepo_host
? Enter the repository name for the application and operator images (eg: <repositoryName> from <repositoryName>/<imageName>:<tagName>): customrepo

Custom Private Registry

The following example lists the questions asked when you select a custom private registry:

? Select type of image registry: private [Custom Private Registry - Password protected (Uses a specific custom registry with password)]
? Enter the custom docker image registry name (eg: <imageRegistryName> from <imageRegistryName>/<repositoryName>/<imageName>:<tagName>): customrepo_host
? Provide the custom docker image registry secret: private-registry
? Enter the repository name for the application and operator images (eg: <repositoryName> from <repositoryName>/<imageName>:<tagName>): customrepo
note

It's required to create a secret when you use a private image registry.

Run the following command:

kubectl create secret docker-registry regcred \
--docker-server=customrepo_host \
--docker-username=<reg-user> \
--docker-password=<reg-password> \
-n digitalai