Exploring GitOps with Argo CD for IBM Software Hub
Authors: Hongwei Jia, Kaihua Zhou
Background
IBM Software Hub 5.3.0 introduces a major milestone - using Argo CD to install and upgrade IBM Software Hub and the services. This capability, part of the Software Hub Premium offering - bringing automation, scalability, and confidence to enterprise deployments. The article Deploying and Managing IBM Software Hub and its services using Argo CD – GA gives briefing to the delivered values and addressed changes of this powerful feature. In this article, I will introduce the implementation of this feature in more technical details.
Note:
There are few services on IBM Software Hub still not supporting Argo CD yet.
Architecture pattern
IBM Software Hub deployment using GitOps with dedicated ArgoCD instance has been certified in IBM Software Hub 5.3.0. This article will focus on exploring GitOps with dedicated ArgoCD instance for IBM Software Hub deployment.
The high-level architecture looks like below.

Note:
The GitOps deployment with the Hub-Spoke ArgoCD clusters may also work. However, we'll introduce it in a separate article later.
Implementation
In this article, I'll take the installation of IBM Software 5.3.0, DataStage and Orchestrator Pipeline in an internet connected environment as an example.
Pre-requisites
An Openshift cluster with valid storage classes
Openshift Gitops installed on the cluster.
Red Hat Cert Manager installed on the cluster.
Purchase IBM Software Hub Premium and download cpd-cli. It should allow access to cpd-cli manage create-argo-apps command for this deployment.
Deploy other dependency required by specific services (e.g. Openshift AI, Eventing operator)
Set up workstation
Install Podman and Git
yum install podman git -y
Installing the cpd-cli
Download Version 14.3.0 of the cpd-cli from the IBM repository on GitHub
1.Download with wget
mkdir -p /opt/ibm/argocd
export ARGO_CD_DIR=/opt/ibm/argocd
cd $ARGO_CD_DIR
wget https://github.com/IBM/cpd-cli/releases/download/v14.3.0_refresh_2/cpd-cli-linux-EE-14.3.0.tgz
2.Extract the tar file
tar -xvf cpd-cli-linux-EE-14.3.0.tgz
3.Make the cpd-cli executable from any directory.
export PATH=$ARGO_CD_DIR/cpd-cli-linux-EE-14.3.0-2819:$PATH
Validate with the following command
cpd-cli version
Creating an environment variables file
1.Create an environment variable file named cpd_vars.sh
You can follow this IBM Documentation Setting up installation environment variables for creating the environment variable file. The content looks like below.
# ------------------------------------------------------------------------------
# Cluster
# ------------------------------------------------------------------------------
export OCP_URL=<enter your Red Hat OpenShift Container Platform URL>
export OPENSHIFT_TYPE=<enter your deployment type>
export IMAGE_ARCH=<enter your cluster architecture>
export OCP_USERNAME=<enter your username>
export OCP_PASSWORD=<enter your password>
# export OCP_TOKEN=<enter your token>
export SERVER_ARGUMENTS="--server=${OCP_URL}"
export LOGIN_ARGUMENTS="--username=${OCP_USERNAME} --password=${OCP_PASSWORD}"
export CPDM_OC_LOGIN="cpd-cli manage login-to-ocp ${SERVER_ARGUMENTS} ${LOGIN_ARGUMENTS}"
export OC_LOGIN="oc login ${OCP_URL} ${LOGIN_ARGUMENTS}"
# ------------------------------------------------------------------------------
# Projects
# ------------------------------------------------------------------------------
export PROJECT_LICENSE_SERVICE=ibm-licensing
export PROJECT_IBM_EVENTS=ibm-knative-events
export PROJECT_CPD_INST_OPERATORS=<enter your IBM Software Hub operator project>
export PROJECT_CPD_INST_OPERANDS=<enter your IBM SoftwareHub operand project>
# ------------------------------------------------------------------------------
# Storage
# ------------------------------------------------------------------------------
export STG_CLASS_BLOCK=ocs-storagecluster-ceph-rbd
export STG_CLASS_FILE=ocs-storagecluster-cephfs
# ------------------------------------------------------------------------------
# IBM Entitled Registry
# ------------------------------------------------------------------------------
export IBM_ENTITLEMENT_KEY=<enter your IBM entitlement API key>
export IMAGE_PULL_SECRET=ibm-entitlement-key
export IMAGE_PULL_CREDENTIALS=$(echo -n "cp:$IBM_ENTITLEMENT_KEY" | base64 -w 0)
export IMAGE_PULL_PREFIX=icr.io
# export IMAGE_PULL_PREFIX=${PRIVATE_REGISTRY_LOCATION}
# ------------------------------------------------------------------------------
# Components
# ------------------------------------------------------------------------------
export VERSION=5.3.0
export COMPONENTS=ibm-licensing,cpfs,cpd_platform,datastage_ent_plus,ws_pipelines
# ------------------------------------------------------------------------------
# ArgoCD
# ------------------------------------------------------------------------------
export OLM_UTILS_IMAGE=cp.icr.io/cp/cpd/olm-utils-premium-v4:5.3.0
export APP_SUFFIX="-my-app" #this string is added to all applications created in this doc
export PROJECT_ARGOCD=openshift-gitops
export HELM_REPO_URL=https://raw.githubusercontent.com/IBM/charts/refs/heads/master/repo/ibm-helm
2.Source the environment variable
source cpd_vars.sh
Start up olm-utils container with Premium
podman login cp.icr.io -u cp -p $IBM_ENTITLEMENT_KEY
cpd-cli manage restart-container
Once the above steps completed, we are ready to start the deployment of IBM Software Hub and services using Argo CD. We'll continue the implementation procedures in another particle (Part 2).