Installing DevOps Loop on IBM Cloud Kubernetes Service (IKS)
You can find information about the tasks that you can perform to install HCL DevOps Loop on IBM Cloud Kubernetes Service (IKS) by using a newly created cluster. You can use the Helm chart to perform the installation.
Before you begin
- Read and understood System Requirements for DevOps Loop 2025.06 (1.0.2).
- Installed the following CLI tools:
- Kubectl
- IBM Cloud CLI
- Installed Helm on the system from which you access the Kubernetes cluster. For more information, refer to Installing Helm.
- Set up a Kubernetes cluster. For more information, refer to Getting started with IBM Cloud Kubernetes Service.
- Set up the Secrets Manager in your Kubernetes Service cluster. For more information refer to IBM Cloud Secrets Manager.
- Obtained valid public certificates issued by trusted Certificate Authorities (CAs). Also, read and understood about managing certificates and secrets. For more information refer to Managing TLS and non-TLS certificates and secrets.
Procedure
- Navigate to in your IBM Cloud account and associate the kubectl context with your cluster.
- Navigate to and note down the IP address of the public ingress controller.
- Navigate to and note down the region in the domain name of your cluster, which is in the format, <cluster_name-id>.<region>.containers.appdomain.com.
-
Click Create in the Domain tab
and perform the following steps:
- Provide a domain name in the format, <custom_name>.<region>.containers.appdomain.com, by using the region noted down in the previous step.
- Provide the IP address of the public ingress controller noted down in step 2.
- Set the domain as the default domain.
Note: If you do not set this as the default domain, you must delete and re-create the domain to set it as the default domain. -
Make the certificate and key available as a Kubernetes secret in the Kubernetes
namespace that you use for DevOps Loop.
You must use the IBM Secrets Manager to manage the life cycle of the certificate. You must also note down the name of the secret that contains the TLS certificate and key. For more information, refer to See https://cloud.ibm.com/docs/containers?topic=containers-secrets&interface=ui#tls-custom.
-
Perform the following steps to install Emissary-ingress in your cluster:
- Run the following commands to set the Ambassador Edge Stack Helm
chart:
helm repo add datawire https://app.getambassador.io helm repo update - Run the following commands to create a namespace and install the
Ambassador Edge
stack:
kubectl create namespace emissary && \ kubectl apply -f https://app.getambassador.io/yaml/emissary/3.9.1/emissary-crds.yaml kubectl wait --timeout=90s --for=condition=available deployment emissary-apiext -n emissary-system - Perform the following step to create
emissary-ports.yaml:
cat <<EOF > emissary-ports.yaml service: ports: - name: https port: 443 targetPort: 8443 #nodePort: <optional> - name: http port: 80 targetPort: 8080 #nodePort: <optional> - name: deploy-wss port: 7919 targetPort: 7919 #nodePort: <optional> - name: build-wss port: 7920 targetPort: 7920 #nodePort: <optional> - name: control-ssh port: 9022 targetPort: 9022 #nodePort: <optional> EOF - Install
Emissary-ingress:
helm install emissary-ingress --namespace emissary datawire/emissary-ingress -f emissary-ports.yaml && \ kubectl -n emissary wait --for condition=available --timeout=90s deploy -lapp.kubernetes.io/instance=emissary-ingress
- Run the following commands to set the Ambassador Edge Stack Helm
chart:
-
Note down the domain name for your cluster, which is in the format,
<custom_name>.<region>.containers.appdomain.com.
You can navigate to in the IBM Cloud console or run the following command to list the domains in your cluster:
ibmcloud ks ingress domain ls --cluster <CLUSTER_NAME> -
Perform the following steps to access the HCL Harbor container registry:
- Get a key to the HCL Harbor container registry.
- Log in to HCL Harbor container registry with the HCL ID and password that are associated with the entitled software.
- Copy the pre-generated CLI secret from the User Profile page.
- Create the following three secrets in the target namespace to pull
images from the HCL Harbor container
registry:
kubectl create secret docker-registry hcl-entitlement-key \ --namespace [namespace_name] \ --docker-username=<Harbor User ID> \ --docker-password=<CLI secret> \ --docker-server=hclcr.ioNote: Secrets are namespace-specific and they are required to install DevOps Plan.
-
Run the following command to view the README.md
file:
helm show readme oci://hclcr.io/devops-automation-helm/hcl-devops-loop --version 1.0.2 -
Update the following parameters and the other required parameters in the script
in the Helm README with the correct values:
- DOMAIN
- TLS_CERT_SECRET_NAME
- RWO_STORAGE_CLASS=nfs-client
- RWX_STORAGE_CLASS=nfs-client
For DOMAIN and TLS_CERT_SECRET_NAME, you must provide the values noted down in the previous steps.
- Run the script in the Helm README for K8 installation.
-
Perform the following steps to enable non-HTTP and additional special
services:
- Run the following command to display the IP of the L4 load balancer
installed as part of DevOps Loop:
kubectl get svc --namespace emissary emissary-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}' - Perform the following steps to create a new domain by using the IP of
the L4 load balancer:
- Navigate to .
- Copy the default domain name.
- Click Create.
- Enter service-<copied_domain_name> in Name.
- Enter the IP of the L4 load balancer in IP address.
- Click Create.
ibmcloud ks ingress domain create --cluster CLUSTER [--crn CRN] [--is-default] [--domain DOMAIN] [--hostname HOSTNAME] [--ip IP] [--output OUTPUT] [--domain-provider PROVIDER] [-q] [--secret-namespace NAMESPACE] [--zone ZONE]Note: You must ensure that the domain created in this step is not the default domain.
- Run the following command to display the IP of the L4 load balancer
installed as part of DevOps Loop:
