Installing Emissary-ingress

You must install Emissary-ingress to terminate Transport Layer Security (TLS) and route traffic to HCL DevOps Test Hub (Test Hub). You can install Emissary-ingress by pulling the images from Azure Container Registry (ACR) when you do not want to pull the images from the public registries.

Before you begin

You must have completed the following tasks:

  • Set up the Azure Kubernetes Service (AKS) cluster with Kubernetes. For more information, refer to Azure Kubernetes Service documentation.

  • Installed the following software:

    • Git Bash. For more information, refer to the Git documentation.

    • Helm. For more information, refer to the Helm documentation. For more information about specific versions of software requirements, see System Requirements for DevOps Test Hub 2023.12 (11.0.0).
      Note: The Helm command must be in one of the directories in your PATH environment variable.
    • kubectl tool. For more information, refer to the Kubernetes documentation.

    • Azure command-line interface (Azure CLI) 2.51.0. For more information, refer to the Azure CLI documentation.

      Note: You can run the az version command to find the version and dependent libraries that are installed.
    • Azure Bicep CLI version 0.20.4.
  • Logged in to the AKS cluster.

    Note: You can run the az login command to log in to AKS interactively.
  • Subscribed to active Azure subscription.

    Note: You can run the az account set --subscription {subscription_name} command to set your active subscription.
  • Configured the location of your AKS cluster.

    Note: You can run the az configure --defaults location={location_name} command to set the location of your AKS cluster.
    Tip: You can run the following command to get the list of all the available locations:
    az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table

About this task

The following table lists the variables that you must replace with the actual value in the command.

Variables Description
{resource_group}

The name of the resource group that you created during the creation of the AKS cluster.

{azure_cluster}

The name of the Azure cluster that you created during the creation of the AKS cluster.

{azure_container_registry}

The name of the ACR that you created during the AKS setup.

{ip_address}

The internal IP address to use with the Emissary-ingress.

Note: You must ensure that the IP address is not in use within your virtual network.

Procedure

  1. Run the following command to configure kubectl to connect to the AKS cluster:
    az aks get-credentials -g {resource_group} -n {azure_cluster} --public-fqdn --overwrite-existing
    kubectl get nodes
    Note: You can verify the connection to the AKS cluster by running the kubectl get nodes command that displays a list of the cluster nodes.
  2. Run the following command to pull images into ACR:
    az acr import -n {azure_container_registry} -g {resource_group} \
      --source docker.io/emissaryingress/emissary:3.5.1 \
      --image emissaryingress/emissary:3.5.1
    Remember: emissary-ingress is the name of the namespace. If you created a namespace by using a different value, then you must use that value in place of the emissary-ingress in all the instances in this procedure.
  3. Run the following commands to install the Emissary-ingress:
    kubectl create namespace emissary 2>/dev/null || true
    sed -e "s#docker.io/#azure_container_registry}.azurecr.io/#" ibm-rtas-prod/files/azure/manifests/emissary-crds.yaml \
      | kubectl apply -f -
    kubectl wait deployment emissary-apiext --for condition=available -n emissary-system --timeout=90s
    sed -e "s#docker.io/#{azure_container_registry}.azurecr.io/#; s/\$INGRESS_IP/$INGRESS_IP/" ibm-rtas-prod/files/azure/manifests/emissary-emissaryns-azure.yaml \
      | kubectl apply -f -
    
    kubectl rollout status -n emissary deployment/emissary-ingress -w
  4. Run the following command to verify that external-IP is assigned to Emissary-ingress:
    kubectl get svc -n emissary -w emissary-ingress
    Note: The status of EXTERNAL-IP is displayed as Pending for a few minutes. If the status does not change to {ip_address}, then that indicates you have a permission issue.
    You can run the following command to investigate the issue:
    kubectl describe svc -n emissary emissary-ingres

Results

You have installed Emissary-ingress.

What to do next

You can install Test Hub. See Installing DevOps Test Hub on Azure Kubernetes Service.