Acquire Images
Before installation, you will first need to copy the Tetrate GSLB images from the Tetrate repository (an account and API key is needed) into your private repository.
Configure the Helm repository
# Add the Tetrate TSB Helm repo
helm repo add tetrate-tsb-helm 'https://charts.dl.tetrate.io/public/helm/charts/'
helm repo update
# List the available versions
helm search repo tetrate-tsb-helm -l | grep -i gslb
Expect to see output resembling:
tetrate-tsb-helm/tetrate-gslb 1.2.1 1.2.1 A Helm chart for Kubernetes
tetrate-tsb-helm/tetrate-gslb 1.2.0 1.2.0 A Helm chart for Kubernetes
...
Acquire the Tetrate GSLB Controller and External DNS images and dependencies
Pull the Tetrate GSLB images to a private repository. You can obtain the appropriate container version tags from the Helm chart; the following is appropriate for release 1.2.1:
TETRATE_GSLB_VERSION=v1.2.1
EXTERNAL_DNS_VERSION=v0.21.0-4200000f24
BUSYBOX_VERSION=1.36.1
REGISTRY=https://PRIVATE_REGISTRY_LOCATION
# Login to the Docker repository using your username and APIKEY
docker login containers.dl.tetrate.io
# ${REGISTRY} is your private Docker registry
# Make sure to run the command from an architecture compatible machine, say amd64, or use --platform linux/amd64
docker pull containers.dl.tetrate.io/tetrate-gslb:${TETRATE_GSLB_VERSION}
docker tag containers.dl.tetrate.io/tetrate-gslb:${TETRATE_GSLB_VERSION} ${REGISTRY}/tetrate-gslb:${TETRATE_GSLB_VERSION}
docker push ${REGISTRY}/tetrate-gslb:${TETRATE_GSLB_VERSION}
docker pull containers.dl.tetrate.io/external-dns:${EXTERNAL_DNS_VERSION}
docker tag containers.dl.tetrate.io/external-dns:${EXTERNAL_DNS_VERSION} ${REGISTRY}/external-dns:${EXTERNAL_DNS_VERSION}
docker push ${REGISTRY}/external-dns:${EXTERNAL_DNS_VERSION}
docker pull containers.dl.tetrate.io/busybox:${BUSYBOX_VERSION}
docker tag containers.dl.tetrate.io/busybox:${BUSYBOX_VERSION} ${REGISTRY}/busybox:${BUSYBOX_VERSION}
docker push ${REGISTRY}/busybox:${BUSYBOX_VERSION}
Example: Pull images to the Azure Container Registry
For this example, we used the container registry created with one of the Kubernetes clusters in one of the Edge Gateway resource groups. Note that the registry name must be in lower-case, and contain the .azurecr.io part of the FQDN:
# Make sure to run the command from an architecture compatible machine, say amd64
az login
az account set --subscription 8a42948e-6087-47d2-bdb8-b530d558db22
# The lowercased version of your registry name; also note the .azurecr.io suffix used below
az acr login --name glbdemo010tsbacr6lfmcxsbybkkvopl
docker pull containers.dl.tetrate.io/tetrate-gslb:${TETRATE_GSLB_VERSION}
docker tag containers.dl.tetrate.io/tetrate-gslb:${TETRATE_GSLB_VERSION} glbdemo010tsbacr6lfmcxsbybkkvopk.azurecr.io/tetrate-gslb/tetrate-gslb:${TETRATE_GSLB_VERSION}
docker push glbdemo010tsbacr6lfmcxsbybkkvopk.azurecr.io/tetrate-gslb/tetrate-gslb:${TETRATE_GSLB_VERSION}
docker pull containers.dl.tetrate.io/external-dns:${EXTERNAL_DNS_VERSION}
docker tag containers.dl.tetrate.io/external-dns:${EXTERNAL_DNS_VERSION} glbdemo010tsbacr6lfmcxsbybkkvopk.azurecr.io/tetrate-gslb/external-dns:${EXTERNAL_DNS_VERSION}
docker push glbdemo010tsbacr6lfmcxsbybkkvopk.azurecr.io/tetrate-gslb/external-dns:${EXTERNAL_DNS_VERSION}
docker pull containers.dl.tetrate.io/busybox:${BUSYBOX_VERSION}
docker tag containers.dl.tetrate.io/busybox:${BUSYBOX_VERSION} glbdemo010tsbacr6lfmcxsbybkkvopk.azurecr.io/tetrate-gslb/busybox:${BUSYBOX_VERSION}
docker push glbdemo010tsbacr6lfmcxsbybkkvopk.azurecr.io/tetrate-gslb/busybox:${BUSYBOX_VERSION}
You will need to create a pull secret on each cluster in order to pull the images from the container registry. If you're using the Azure CR, the following instructions (based on the Azure documentation) are representative:
- In the Azure portal, go to your selected registry, then Access Keys. Take note of the server, username and password.
- Create the secret in each Edge Gateway cluster (repeat the commands below, using the appropriate kubectl context for each cluster):
kubectl config use-context aks-glbdemo01-eastus-0
kubectl create ns tetrate-gslb-system
kubectl create secret docker-registry glbdemo010tsbacr6lfmcxsbybkkvopk-secret \
--namespace tetrate-gslb-system \
--docker-server=glbdemo010tsbacr6lfmcxsbybkkvopl.azurecr.io \
--docker-username=glbdemo010tsbacr6LfMCxsBybkKVOPL \
--docker-password=5whHMbnCNTUq+uT7PrrLHNZXaWt85NiYSUUgSr6lv6+ACRBBmZUz
You have now configured each cluster with the required credentials to pull images from the Azure container registry.