AIOps

 View Only

Streamline Air-Gapped Product Images with New IBM Plugin

By Liam Salazar posted Mon May 16, 2022 02:27 PM

  
If you've tried to install IBM Cloud Pak for Watson AIOps AI Manager on an offline cluster, then you are probably familiar with the cloudctl command-line interface (CLI) and the difficulty in its usage. The IBM Cloud Pak Certification Content Team has developed a new solution, available for technology preview, to streamline the process of discovering IBM product images. By the end of this post, you will have learned some general information about the new tool, seen the differences between "cloudctl" vs "oc ibm-pak", and read a brief walkthrough on how to download the ibm-cp-waiops CASE.

What is It?
The IBM Catalog Management Plug-in for IBM Cloud Paks  is a new tool which streamlines and separates the discovery of product images from the  mirroring action in a transparent manner. A list of images is established by using standard Red Hat tooling (Openshift CLI or oc), and this list is used to mirror the images by using a bastion host or a new Filesystem option. The new tool eliminates the need to do that. This is the first step on a journey to further align with offline support by Red Hat.

What's New?
Today, the air-gapped installation process consists of a handful of lengthy commands using the cloudctl CLI. For instance, when using cloudctl to save a CASE file:
cloudctl case save \ 
  --repo https://github.com/IBM/cloud-pak/raw/master/repo/case
  --case ibm-cp-waiops
  --version 1.2.0
  --outputDir $HOME/offline​


With the new tool, this is
shortened to:

oc ibm-pak get ibm-cp-waiops \
  --version 1.2.0


This is just one example. All the existing cloudctl commands are mapped to oc ibm-pak commands, some providing better functionality. The following Process Mapping table shows the mapping of the existing cloudctl commands to the corresponding IBM Catalog Management Plug-in for IBM Cloud Paks commands.



Walkthrough
The following walkthrough will show you how to download the ibm-cp-waiops v1.1.1 CASE, and what to expect from the new plug-in commands. 

1. Login to Your Registries
Log in to the registry that you are pulling the images from, and to the registry where you intend to store your images for transfer to your air-gapped cluster.
export REGISTRY_AUTH_FILE=<path to the file which will store the auth credentials generated on podman login> 
podman login <source-registry>
podman login <target-registry>​
2. Retrieve the CASE
Use the `oc ibm-pak get <case>` to fetch the CASE. By default, this command will pull the latest version of the CASE. In this demonstration, we'll add a parameter "--version" to pull a specific version of ibm-cp-waiops.
❯ oc ibm-pak get ibm-cp-waiops --version 1.1.1            
Downloading and extracting the CASE ...
- Success
Retrieving CASE version ...
- Success
Validating the CASE ...
Validating the signature for the ibm-cp-waiops CASE...
- Success
Creating inventory ...
- Success
Finding inventory items
- Success
Resolving inventory items ...
Parsing inventory items
Validating the signature for the ibm-watson-ai-manager CASE...
Validating the signature for the ibm-camel-k CASE...
Validating the signature for the ibm-watson-aiops-ui-operator-case CASE...
Validating the signature for the ibm-management-kong CASE...
Validating the signature for the ibm-asm-operator-case CASE...
Validating the signature for the ibm-secure-tunnel CASE...
Validating the signature for the ibm-postgreservice CASE...
Validating the signature for the ibm-aiops-ir-core-operator CASE...
Validating the signature for the ibm-cp-automation-foundation CASE...
Validating the signature for the ibm-automation-foundation-core CASE...
Validating the signature for the ibm-cp-common-services CASE...
Validating the signature for the ibm-auditlogging CASE...
Validating the signature for the ibm-cert-manager CASE...
Validating the signature for the ibm-cs-commonui CASE...
Validating the signature for the ibm-crossplane-bundle CASE...
Validating the signature for the ibm-events-operator CASE...
Validating the signature for the ibm-cs-healthcheck CASE...
Validating the signature for the ibm-cs-iam CASE...
Validating the signature for the ibm-cpp CASE...
Validating the signature for the ibm-zen CASE...
Validating the signature for the ibm-licensing CASE...
Validating the signature for the ibm-management-ingress CASE...
Validating the signature for the ibm-cs-mongodb CASE...
Validating the signature for the ibm-cs-monitoring CASE...
Validating the signature for the ibm-platform-api-operator CASE...
Validating the signature for the ibm-automation-foundation-insights-engine CASE...
Validating the signature for the ibm-ai-wmltraining CASE...
Validating the signature for the ibm-ai-wmlserving CASE...Validating the signature for the ibm-etcd-operator CASE...
Validating the signature for the ibm-crossplane-bundle CASE...
Validating the signature for the ibm-couchdb CASE...
Validating the signature for the ibm-cloud-databases-redis CASE...
Validating the signature for the ibm-aiops-lifecycle CASE...
Validating the signature for the ibm-aiops-analytics CASE...
Validating the signature for the ibm-aiopsedge-bundle CASE...
Validating the signature for the ibm-vault-operator CASE...
Validating the signature for the ibm-cloud-databases-redis CASE...
- Success


The output of `oc ibm-pak get` creates a hidden directory called `.ibm-pak` in the root directory.  Run the command `tree .ibm-pak` to see the overall structure of the directory. The path of ".ibm-pak" can be altered by changing the IBMPAK_HOME environment variable.

❯ tree .
.
├── config
│   └── config.yaml
├── data
│   ├── cases
│   │   └── ibm-cp-waiops
│   │       └── 1.1.1
│   │           ├── caseDependencyMapping.csv
│   │           ├── charts
│   │           ├── ibm-ai-wmlserving-1.1.0-airgap-metadata.yaml
│   │           ├── ibm-ai-wmlserving-1.1.0-charts.csv
│   │           ├── ibm-ai-wmlserving-1.1.0-images.csv
│   │           ├── ibm-ai-wmlserving-1.1.0.tgz
│   │           ├── ibm-ai-wmltraining-1.1.1-airgap-metadata.yaml
│   │           ├── ibm-ai-wmltraining-1.1.1-charts.csv
│   │           ├── ibm-ai-wmltraining-1.1.1-images.csv
│   │           ├── ibm-ai-wmltraining-1.1.1.tgz
│   │           ├── ibm-aiops-analytics-1.0.1-airgap-metadata.yaml
│   │           ├── ibm-aiops-analytics-1.0.1-charts.csv
│   │           ├── ibm-aiops-analytics-1.0.1-images.csv
│   │           ├── ibm-aiops-analytics-1.0.1.tgz
│   │           ├── ibm-aiops-ir-core-operator-1.0.1-airgap-metadata.yaml
│   │           ├── ibm-aiops-ir-core-operator-1.0.1-charts.csv
│   │           ├── ibm-aiops-ir-core-operator-1.0.1-images.csv
│   │           ├── ibm-aiops-ir-core-operator-1.0.1.tgz
│   │           ├── ibm-aiops-lifecycle-1.0.1-airgap-metadata.yaml
│   │           ├── ibm-aiops-lifecycle-1.0.1-charts.csv
│   │           ├── ibm-aiops-lifecycle-1.0.1-images.csv
│   │           ├── ibm-aiops-lifecycle-1.0.1.tgz
│   │           ├── ibm-aiopsedge-bundle-1.0.2-airgap-metadata.yaml
│   │           ├── ibm-aiopsedge-bundle-1.0.2-charts.csv
│   │           ├── ibm-aiopsedge-bundle-1.0.2-images.csv
│   │           ├── ibm-aiopsedge-bundle-1.0.2.tgz
│   │           ├── ibm-asm-operator-case-2.2.1-airgap-metadata.yaml
│   │           ├── ibm-asm-operator-case-2.2.1-charts.csv
│   │           ├── ibm-asm-operator-case-2.2.1-images.csv
│   │           ├── ibm-asm-operator-case-2.2.1.tgz
│   │           ├── ibm-auditlogging-1.14.0-airgap-metadata.yaml
│   │           ├── ibm-auditlogging-1.14.0-charts.csv
│   │           ├── ibm-auditlogging-1.14.0-images.csv
│   │           ├── ibm-auditlogging-1.14.0.tgz
│   │           ├── ibm-automation-foundation-core-1.3.6-airgap-metadata.yaml
│   │           ├── ibm-automation-foundation-core-1.3.6-charts.csv
│   │           ├── ibm-automation-foundation-core-1.3.6-images.csv
│   │           ├── ibm-automation-foundation-core-1.3.6.tgz
│   │           ├── ibm-automation-foundation-insights-engine-1.0.5-airgap-metadata.yaml
│   │           ├── ibm-automation-foundation-insights-engine-1.0.5-charts.csv
│   │           ├── ibm-automation-foundation-insights-engine-1.0.5-images.csv
│   │           ├── ibm-automation-foundation-insights-engine-1.0.5.tgz
│   │           ├── ibm-camel-k-1.1.1-airgap-metadata.yaml
│   │           ├── ibm-camel-k-1.1.1-charts.csv
│   │           ├── ibm-camel-k-1.1.1-images.csv
│   │           ├── ibm-camel-k-1.1.1.tgz
│   │           ├── ibm-cert-manager-1.13.0-airgap-metadata.yaml
│   │           ├── ibm-cert-manager-1.13.0-charts.csv
│   │           ├── ibm-cert-manager-1.13.0-images.csv
│   │           ├── ibm-cert-manager-1.13.0.tgz
│   │           ├── ibm-cloud-databases-redis-1.3.2-airgap-metadata.yaml
│   │           ├── ibm-cloud-databases-redis-1.3.2-charts.csv
│   │           ├── ibm-cloud-databases-redis-1.3.2-images.csv
│   │           ├── ibm-cloud-databases-redis-1.3.2.tgz
│   │           ├── ibm-cloud-databases-redis-1.5.0-airgap-metadata.yaml
│   │           ├── ibm-cloud-databases-redis-1.5.0-charts.csv
│   │           ├── ibm-cloud-databases-redis-1.5.0-images.csv
│   │           ├── ibm-cloud-databases-redis-1.5.0.tgz
│   │           ├── ibm-couchdb-1.0.10-airgap-metadata.yaml
│   │           ├── ibm-couchdb-1.0.10-charts.csv
│   │           ├── ibm-couchdb-1.0.10-images.csv
│   │           ├── ibm-couchdb-1.0.10.tgz
│   │           ├── ibm-cp-automation-foundation-1.3.6-airgap-metadata.yaml
│   │           ├── ibm-cp-automation-foundation-1.3.6-charts.csv
│   │           ├── ibm-cp-automation-foundation-1.3.6-images.csv
│   │           ├── ibm-cp-automation-foundation-1.3.6.tgz
│   │           ├── ibm-cp-common-services-1.13.0-airgap-metadata.yaml
│   │           ├── ibm-cp-common-services-1.13.0-charts.csv
│   │           ├── ibm-cp-common-services-1.13.0-images.csv
│   │           ├── ibm-cp-common-services-1.13.0.tgz
│   │           ├── ibm-cp-waiops-1.1.1-airgap-metadata.yaml
│   │           ├── ibm-cp-waiops-1.1.1-charts.csv
│   │           ├── ibm-cp-waiops-1.1.1-images.csv
│   │           ├── ibm-cp-waiops-1.1.1.tgz
│   │           ├── ibm-cpp-1.4.0-airgap-metadata.yaml
│   │           ├── ibm-cpp-1.4.0-charts.csv
│   │           ├── ibm-cpp-1.4.0-images.csv
│   │           ├── ibm-cpp-1.4.0.tgz
│   │           ├── ibm-crossplane-bundle-1.0.0-airgap-metadata.yaml
│   │           ├── ibm-crossplane-bundle-1.0.0-charts.csv
│   │           ├── ibm-crossplane-bundle-1.0.0-images.csv
│   │           ├── ibm-crossplane-bundle-1.0.0.tgz
│   │           ├── ibm-crossplane-bundle-1.6.0-airgap-metadata.yaml
│   │           ├── ibm-crossplane-bundle-1.6.0-charts.csv
│   │           ├── ibm-crossplane-bundle-1.6.0-images.csv
│   │           ├── ibm-crossplane-bundle-1.6.0.tgz
│   │           ├── ibm-cs-commonui-1.15.0-airgap-metadata.yaml
│   │           ├── ibm-cs-commonui-1.15.0-charts.csv
│   │           ├── ibm-cs-commonui-1.15.0-images.csv
│   │           ├── ibm-cs-commonui-1.15.0.tgz
│   │           ├── ibm-cs-healthcheck-1.13.0-airgap-metadata.yaml
│   │           ├── ibm-cs-healthcheck-1.13.0-charts.csv
│   │           ├── ibm-cs-healthcheck-1.13.0-images.csv
│   │           ├── ibm-cs-healthcheck-1.13.0.tgz
│   │           ├── ibm-cs-iam-1.13.0-airgap-metadata.yaml
│   │           ├── ibm-cs-iam-1.13.0-charts.csv
│   │           ├── ibm-cs-iam-1.13.0-images.csv
│   │           ├── ibm-cs-iam-1.13.0.tgz
│   │           ├── ibm-cs-mongodb-1.12.0-airgap-metadata.yaml
│   │           ├── ibm-cs-mongodb-1.12.0-charts.csv
│   │           ├── ibm-cs-mongodb-1.12.0-images.csv
│   │           ├── ibm-cs-mongodb-1.12.0.tgz
│   │           ├── ibm-cs-monitoring-1.13.0-airgap-metadata.yaml
│   │           ├── ibm-cs-monitoring-1.13.0-charts.csv
│   │           ├── ibm-cs-monitoring-1.13.0-images.csv
│   │           ├── ibm-cs-monitoring-1.13.0.tgz
│   │           ├── ibm-etcd-operator-2.0.16-airgap-metadata.yaml
│   │           ├── ibm-etcd-operator-2.0.16-charts.csv
│   │           ├── ibm-etcd-operator-2.0.16-images.csv
│   │           ├── ibm-etcd-operator-2.0.16.tgz
│   │           ├── ibm-events-operator-3.15.0-airgap-metadata.yaml
│   │           ├── ibm-events-operator-3.15.0-charts.csv
│   │           ├── ibm-events-operator-3.15.0-images.csv
│   │           ├── ibm-events-operator-3.15.0.tgz
│   │           ├── ibm-licensing-1.14.0-airgap-metadata.yaml
│   │           ├── ibm-licensing-1.14.0-charts.csv
│   │           ├── ibm-licensing-1.14.0-images.csv
│   │           ├── ibm-licensing-1.14.0.tgz
│   │           ├── ibm-management-ingress-1.13.0-airgap-metadata.yaml
│   │           ├── ibm-management-ingress-1.13.0-charts.csv
│   │           ├── ibm-management-ingress-1.13.0-images.csv
│   │           ├── ibm-management-ingress-1.13.0.tgz
│   │           ├── ibm-management-kong-3.2.1-airgap-metadata.yaml
│   │           ├── ibm-management-kong-3.2.1-charts.csv
│   │           ├── ibm-management-kong-3.2.1-images.csv
│   │           ├── ibm-management-kong-3.2.1.tgz
│   │           ├── ibm-platform-api-operator-1.13.0-airgap-metadata.yaml
│   │           ├── ibm-platform-api-operator-1.13.0-charts.csv
│   │           ├── ibm-platform-api-operator-1.13.0-images.csv
│   │           ├── ibm-platform-api-operator-1.13.0.tgz
│   │           ├── ibm-postgreservice-1.0.1-airgap-metadata.yaml
│   │           ├── ibm-postgreservice-1.0.1-charts.csv
│   │           ├── ibm-postgreservice-1.0.1-images.csv
│   │           ├── ibm-postgreservice-1.0.1.tgz
│   │           ├── ibm-secure-tunnel-3.2.1-airgap-metadata.yaml
│   │           ├── ibm-secure-tunnel-3.2.1-charts.csv
│   │           ├── ibm-secure-tunnel-3.2.1-images.csv
│   │           ├── ibm-secure-tunnel-3.2.1.tgz
│   │           ├── ibm-vault-operator-1.0.1-airgap-metadata.yaml
│   │           ├── ibm-vault-operator-1.0.1-charts.csv
│   │           ├── ibm-vault-operator-1.0.1-images.csv
│   │           ├── ibm-vault-operator-1.0.1.tgz
│   │           ├── ibm-watson-ai-manager-1.2.3-airgap-metadata.yaml
│   │           ├── ibm-watson-ai-manager-1.2.3-charts.csv
│   │           ├── ibm-watson-ai-manager-1.2.3-images.csv
│   │           ├── ibm-watson-ai-manager-1.2.3.tgz
│   │           ├── ibm-watson-aiops-ui-operator-case-1.1.1-airgap-metadata.yaml
│   │           ├── ibm-watson-aiops-ui-operator-case-1.1.1-charts.csv
│   │           ├── ibm-watson-aiops-ui-operator-case-1.1.1-images.csv
│   │           ├── ibm-watson-aiops-ui-operator-case-1.1.1.tgz
│   │           ├── ibm-zen-2.8.0-airgap-metadata.yaml
│   │           ├── ibm-zen-2.8.0-charts.csv
│   │           ├── ibm-zen-2.8.0-images.csv
│   │           ├── ibm-zen-2.8.0.tgz
│   │           └── resourceIndexes
│   │               ├── ibm-ai-wmlserving-resourcesIndex.yaml
│   │               ├── ibm-ai-wmltraining-resourcesIndex.yaml
│   │               ├── ibm-aiops-analytics-resourcesIndex.yaml
│   │               ├── ibm-aiops-ir-core-operator-resourcesIndex.yaml
│   │               ├── ibm-aiops-lifecycle-resourcesIndex.yaml
│   │               ├── ibm-aiopsedge-bundle-resourcesIndex.yaml
│   │               ├── ibm-asm-operator-case-resourcesIndex.yaml
│   │               ├── ibm-auditlogging-resourcesIndex.yaml
│   │               ├── ibm-automation-foundation-core-resourcesIndex.yaml
│   │               ├── ibm-automation-foundation-insights-engine-resourcesIndex.yaml
│   │               ├── ibm-camel-k-resourcesIndex.yaml
│   │               ├── ibm-cert-manager-resourcesIndex.yaml
│   │               ├── ibm-cloud-databases-redis-resourcesIndex.yaml
│   │               ├── ibm-couchdb-resourcesIndex.yaml
│   │               ├── ibm-cp-automation-foundation-resourcesIndex.yaml
│   │               ├── ibm-cp-common-services-resourcesIndex.yaml
│   │               ├── ibm-cp-waiops-resourcesIndex.yaml
│   │               ├── ibm-cpp-resourcesIndex.yaml
│   │               ├── ibm-crossplane-bundle-resourcesIndex.yaml
│   │               ├── ibm-cs-commonui-resourcesIndex.yaml
│   │               ├── ibm-cs-healthcheck-resourcesIndex.yaml
│   │               ├── ibm-cs-iam-resourcesIndex.yaml
│   │               ├── ibm-cs-mongodb-resourcesIndex.yaml
│   │               ├── ibm-cs-monitoring-resourcesIndex.yaml
│   │               ├── ibm-etcd-operator-resourcesIndex.yaml
│   │               ├── ibm-events-operator-resourcesIndex.yaml
│   │               ├── ibm-licensing-resourcesIndex.yaml
│   │               ├── ibm-management-ingress-resourcesIndex.yaml
│   │               ├── ibm-management-kong-resourcesIndex.yaml
│   │               ├── ibm-platform-api-operator-resourcesIndex.yaml
│   │               ├── ibm-postgreservice-resourcesIndex.yaml
│   │               ├── ibm-secure-tunnel-resourcesIndex.yaml
│   │               ├── ibm-vault-operator-resourcesIndex.yaml
│   │               ├── ibm-watson-ai-manager-resourcesIndex.yaml
│   │               ├── ibm-watson-aiops-ui-operator-case-resourcesIndex.yaml
│   │               └── ibm-zen-resourcesIndex.yaml
│   └── mirror
└── logs
    └── oc-ibm_pak.log


9 directories, 192 files

3. Generate the Mirror Manifests
Next, in order to generate mirror manifests for copying images into your cluster, run the `oc ibm-pak generate mirror-manifests` command. This will populate your mirror directory in ~/.ibm-pak, create an image mapping file, and an ImageContentSourcePolicy manifest.
export TARGET_REGISTRY=<your-target-registry>


❯ oc ibm-pak generate mirror-manifests ibm-cp-waiops $TARGET_REGISTRY --version 1.1.1
ibm-cpp-1.3.0 ∙∙∙ 0s
ibm-cs-iam-1.11.0 ∙∙∙ 0s
ibm-zen-2.6.0 ∙∙∙ 0s
ibm-postgreservice-1.0.1 ∙∙∙ 0s
ibm-cpp-1.3.0 done
ibm-cs-iam-1.11.0 done
ibm-zen-2.6.0 done
ibm-postgreservice-1.0.1 done
ibm-cert-manager-1.11.0 done
ibm-secure-tunnel-3.2.1 done
ibm-cp-waiops-1.1.1 done
ibm-management-kong-3.2.1 done
ibm-automation-foundation-insights-engine-1.0.3 done
ibm-cs-mongodb-1.10.0 done
ibm-management-ingress-1.11.0 done
ibm-aiops-analytics-1.0.1 done
ibm-watson-aiops-ui-operator-case-1.1.1 done
ibm-ai-wmltraining-1.1.1 done
ibm-cloud-databases-redis-1.4.5 done
ibm-vault-operator-1.0.1 done
ibm-ai-wmlserving-1.1.0 done
ibm-licensing-1.12.0 done
ibm-auditlogging-1.12.0 done
ibm-cs-healthcheck-1.11.0 done
ibm-asm-operator-case-2.2.1 done
ibm-crossplane-bundle-1.4.1 done
ibm-etcd-operator-2.0.14 done
ibm-aiops-ir-core-operator-1.0.1 done
ibm-camel-k-1.1.1 done
ibm-aiops-lifecycle-1.0.1 done
ibm-aiopsedge-bundle-1.0.2 done
ibm-cp-common-services-1.11.1 done
ibm-cs-monitoring-1.11.0 done
ibm-events-operator-3.15.0 done
ibm-cloud-databases-redis-1.3.2 done
ibm-cs-commonui-1.13.0 done
ibm-crossplane-bundle-1.0.0 done
ibm-platform-api-operator-1.11.0 done
ibm-cp-automation-foundation-1.3.4 done 
ibm-watson-ai-manager-1.2.3 done
ibm-couchdb-1.0.10 done
ibm-automation-foundation-core-1.3.4 done
After that, use the "oc image mirror -f ~/.ibm-pak/data/mirror/ibm-cp-waiops/1.1.1/images-mapping.txt --filter-by-os '.*' --insecure --skip-multiple-scopes --max-per-registry=1" to finally mirror the images found by the new tool. This time this command will vary. At the time of testing, this took approximately 4 hours.

Output of image mirror command

Snippet of image-mapping.txt
❯ cat images-mapping.txt
cp.icr.io/cp/ai/ibm-ai-wmltraining-controller@sha256:e88703323ac3b2b6c972006e8b4ee022b57f823b0291ad2572677fae9df561da=hyc-katamari-cicd-team-cp4waiops-install-docker-local.artifactory.swg-devops.com/liamsalazar/case-test/cp/ai/ibm-ai-wmltraining-controller:0.3.0-dev_636
cp.icr.io/cp/ai/ibm-ai-wmltraining-init-sidecar@sha256:a2543e986e9958236793176b0c606b92b3059022f8e0cd8c1aa4b3e7a19b4858=hyc-katamari-cicd-team-cp4waiops-install-docker-local.artifactory.swg-devops.com/liamsalazar/case-test/cp/ai/ibm-ai-wmltraining-init-sidecar:0.3.0-dev_636
cp.icr.io/cp/ai/ibm-ai-wmltraining-proxy-controller@sha256:07e4ca7e5fb17bc173370a3a4c7c5626d058dc82978531ad85b2d79157d285a8=hyc-katamari-cicd-team-cp4waiops-install-docker-local.artifactory.swg-devops.com/liamsalazar/case-test/cp/ai/ibm-ai-wmltraining-proxy-controller:0.3.0-dev_636
cp.icr.io/cp/ai/ibm-ai-wmltraining-sidecar@sha256:8242e055f091749145bd64722fedf38b673f6c5c8a86b299c00cac79dcf5ab6b=hyc-katamari-cicd-team-cp4waiops-install-docker-local.artifactory.swg-devops.com/liamsalazar/case-test/cp/ai/ibm-ai-wmltraining-sidecar:0.3.0-dev_636
cp.icr.io/cp/ai/model-mesh@sha256:91d0925590e342afc4b7b9edd560cad27295983d1d3c1dccd7114459a2698bce=hyc-katamari-cicd-team-cp4waiops-install-docker-local.artifactory.swg-devops.com/liamsalazar/case-test/cp/ai/model-mesh:0.0.1-main_20210826-50
cp.icr.io/cp/ai/model-serving-runtime-adapter@sha256:7f2e485cf0f2bb10031b273b602527312444c076f1f77d3cddf4ded9f7bdcc16=hyc-katamari-cicd-team-cp4waiops-install-docker-local.artifactory.swg-devops.com/liamsalazar/case-test/cp/ai/model-serving-runtime-adapter:0.0.1-main_20210826-86
cp.icr.io/cp/ai/msp-ml-server@sha256:acc54d2dcc240c3307e09a0108da943567db082a18ea0e875fb21434a467dc43=hyc-katamari-cicd-team-cp4waiops-install-docker-local.artifactory.swg-devops.com/liamsalazar/case-test/cp/ai/msp-ml-server:0.1.0_20210826-4
cp.icr.io/cp/ai/seldonio-mlserver@sha256:049d941137e78b58e1f1b5a43ef68a5ec92860055b36fec9a4a481719a9e89a2=hyc-katamari-cicd-team-cp4waiops-install-docker-local.artifactory.swg-devops.com/liamsalazar/case-test/cp/ai/seldonio-mlserver:0.3.2_20210826-32
...
Once all the images have been mirrored, apply the imagecontentsourcepolicy found in your .ibm-pak directory to install the operator. See the tree structure to view the contents of this subfolder.
❯ tree ~/.ibm-pak/data/mirror
/Users/liamsalazar/.ibm-pak/data/mirror
└── ibm-cp-waiops
    └── 1.1.1
        ├── image-content-source-policy.yaml
        └── images-mapping.txt


2 directories, 4 files


Apply the ImageContentSourcePolicy

oc apply -f ~/.ibm-pak/data/mirror/ibm-cp-waiops/1.1.1/image-content-source-policy.yaml

Finally, run the "oc ibm-pak  launch --action install-catalog" command to install the catalogsource for the ibm-cp-waiops CASE. There is currently work in progress to improve this step, but for now we can use the plug-in's backwards compatibility with cloudctl to perform this action for us. The oc ibm-pak launch command accepts the same set of arguments as cloudctl case launch for installing catalog, operators, and other resources but it doesn't support the following cloudctl launch actions as similar functionality is achieved using the oc ibm-pak's native commands.

  • configure-creds-airgap
  • mirror-image
  • configure-cluster-airgap
  • init-registry
  • start-registry
  • stop-registry
  • configure-cluster

Apply the CatalogSource
export NAMESPACE=<install-namespace>


oc ibm-pak launch \ 
--case ~/.ibm-pak/data/cases/ibm-cp-waiops/1.1.1/ibm-cp-waiops-1.1.1.tgz \ 
--action install-catalog \ 
--inventory  catalog-install \ 
--namespace $NAMESPACE \ 
--args "--registry $TARGET_REGISTRY"​


By doing the preceding steps, you will be able to install the IBM Cloud Pak for Watson AIOps AI Manager operator into your cluster and create an installation instance.

Ready to Test It?
The installation of any IBM Cloud Pak will be rendered less complicated by using the IBM Catalog Management Plug-in for IBM Cloud Paks. The Cloud Pak Content Team will continue to improve this tool by adding more features.  This tool is currently in technology preview, but users can install the plug-in on Github to test it out!

















0 comments
45 views

Permalink