Installing watsonx Orchestrate on HCP environment
You can install watsonx Orchestrate on Hosted Control Plane (HCP) environment.
Prerequisites
Before running the script, ensure that you have:
- System requirements
-
- Red Hat® OpenShift® Container Platform cluster: Red Hat OpenShift Container Platform 4.x or later with HCP (Hosted Control Plane) support
- Namespace Access: Administrative access to the openshift-storage namespace
- Storage Backend: Access to a remote HCP S3-compatible storage endpoint
- Network Configuration: Ability to modify NetworkPolicy rules within the cluster
- Required components
-
- NooBaa Operator: Version compatible with your Red Hat OpenShift Container Platform cluster
- Red Hat OpenShift Container Platform Data Foundation (ODF): Installed and configured
- S3 Credentials: Valid access key and secret key for the remote HCP S3 backend
- watsonx Orchestrate: Deployed or ready for deployment
- Network requirements
-
- Internal cluster networking between openshift-storage and watsonx Orchestrate namespaces
- Outbound connectivity from NooBaa pods to the remote HCP S3 endpoint
- DNS resolution for the HCP S3 endpoint
Prepare for installation
- Step 1: Get NooBaa details from the HCP cluster
- Run the command
HCP_ACCESS_KEY_ID=$(oc get secret noobaa-admin -n openshift-storage -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 -d) HCP_SECRET_ACCESS_KEY=$(oc get secret noobaa-admin -n openshift-storage -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 -d) - Step 2: Get the remote S3 Endpoint from the HCP cluster
- Run the command
oc get route -n openshift-storage | grep s3 HCP_ENDPOINT=<S3 ROUTE URL> - Step 3: Extract the TLS certificate from the remote S3 endpoint
- Run the command
Verify the certificateecho | openssl s_client -servername ${HCP_ENDPOINT} \ -connect ${HCP_ENDPOINT} -showcerts 2>/dev/null | \ sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' > ca-certificate.crtopenssl x509 -in ca-certificate.crt -text -noout - Step 4: Create configmap with remote S3 endpoint TLS certificate on the watsonx Orchestrate cluster
- Run the command
oc create configmap custom-ca-bundle \ --from-file=ca-bundle.crt=ca-certificate.crt \ -n openshift-storage - Step 5: Create secret for HCP credentials on the watsonx Orchestrate cluster
- Run the command
cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: hcp-s3-credentials namespace: openshift-storage type: Opaque stringData: AWS_ACCESS_KEY_ID: ${HCP_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY: ${HCP_SECRET_ACCESS_KEY} EOF - Step 6: Create the backing store Bucket on the HCP cluster
- Run the command
aws s3 mb s3://hcp-bucket-watsonx-orchestrate --endpoint-url https://${HCP_ENDPOINT} --no-verify-ssl - Step 7: Create the backing store on watsonx Orchestrate cluster
- Run the command
Wait until the backing store is readycat <<EOF | oc apply -f - apiVersion: noobaa.io/v1alpha1 kind: BackingStore metadata: name: hcp-backing-store-watsonx-orchestrate namespace: openshift-storage spec: type: s3-compatible s3Compatible: endpoint: ${HCP_ENDPOINT} signatureVersion: v4 secret: name: hcp-s3-credentials namespace: openshift-storage additionalConfig: # Reference the CA bundle ConfigMap caBundleConfigMap: custom-ca-bundle targetBucket: hcp-bucket-watsonx-orchestrate EOFoc get backingstore hcp-backing-store-watsonx-orchestrate -n openshift-storage -w - Step 8: Create NooBaa account (If not installed)
- Run the command
cat <<EOF | oc apply -f - apiVersion: noobaa.io/v1alpha1 kind: NooBaa metadata: name: noobaa namespace: openshift-storage spec: dbType: postgres dbStorageClass: ocs-storagecluster-ceph-rbd pvPoolDefaultStorageClass: ocs-storagecluster-ceph-rbd coreResources: requests: cpu: "500m" memory: "4Gi" dbResources: requests: cpu: "500m" memory: "2Gi" cleanupPolicy: confirmation: "yes-really-destroy-noobaa" allowNoobaaDeletion: true EOFMonitor creationoc get noobaa -n openshift-storage -w - Step 9: Create a Bucket class for the HCP backing store
- Run the command
cat <<EOF | oc apply -f - apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: name: hcp-bucket-class-wxo namespace: openshift-storage spec: placementPolicy: tiers: - backingStores: - hcp-backing-store-watsonx-orchestrate EOFWait until the bucket class is readyoc get bucketclass hcp-bucket-class-wxo -n openshift-storage -w - Step 10: Set the Bucket class as default
- Run the command
oc annotate bucketclass hcp-bucket-class-wxo \ storageclass.kubernetes.io/is-default-class="true" \ -n openshift-storage --overwrite - Step 11: Update default Bucket class to use the new backing store
- Run the command
oc patch Bucketclass noobaa-default-bucket-class -n openshift-storage --type=json --patch='[{"op": "replace", "path": "/spec/placementPolicy/tiers/0/backingStores/0", "value": "hcp-backing-store-watsonx-orchestrate"}]' - Step 12: Confirm the configuration change
- Run the command
oc get bucketclass noobaa-default-bucket-class -n openshift-storage -o jsonpath='{.spec.placementPolicy.tiers[*].backingStores}'
Install watsonx Orchestrate
Now the NooBaa configuration is complete, install the watsonx
Orchestrate component. cpd-cli
setup-mcg creates a noobaa-*-watsonx-orchestrate secrets that point to the local s3
endpoint. The default noobaa is backing store is pointing to the HCP cluster. The s3-create-bucket
job creates it's bucket on the HCP cluster. The Milvus ObjectBucketClaim is
pointing the backing store on the HCP cluster.