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.
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:
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:
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
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
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