将 watsonx Orchestrate 从版本 5.1 升级至版本 5.3
实例管理员可将 watsonx Orchestrate 从 5.1 版本升级至 5.3 版本。
installMode 参数以保留这些功能。 若未指定此参数,升级过程将默认采用代理式AI模式,此时升级将失败——因为系统不支持从代理式AI、技能及助手升级至代理式AI。 有关更多信息,请参阅 《指定安装选项》。- 谁需要完成这项任务?
实例管理员要升级 watsonx Orchestrate ,您必须是实例管理员。 实例管理员有权限管理以下项目中的软件:
- 实例的操作员项目
此实例的 watsonx Orchestrate 操作符已安装在 operators 项目中。 在升级命令中,环境变量
${PROJECT_CPD_INST_OPERATORS}指代操作员的项目。- 实例的操作数项目
用于 和 watsonx Orchestratecontrol plane 的自定义资源已安装在 operands 项目中。 在升级命令中,环境变量
${PROJECT_CPD_INST_OPERANDS}指代操作数项目。
- 你需要在什么时候完成这项任务?
请查看以下选项,以确定您是否需要完成此任务:
- 若需同时升级 及 control planeIBM Software Hub 一项或多项服务, 请改为遵循《升级 IBM 实例》中的流程: Software Hub。
- 若您在升级 时未升级 watsonx OrchestrateIBM Software
Hubcontrol plane ,请完成此任务以升级 watsonx Orchestrate。
根据需要重复此操作如果您负责管理多个实例 IBM Software Hub,可以重复此任务来升级集群中更多实例的 watsonx Orchestrate。
完成此任务所需的信息
在升级 watsonx Orchestrate 之前,请查看以下信息:
- 版本需求
与实例 IBM Software Hub 相关的所有组件必须安装在同一版本中。 例如,如果 IBM Software Hubcontrol plane 处于版本 5.3.1 ,则必须将 watsonx Orchestrate 升级至版本 5.3.1。
- 环境变量
- 本任务中的命令使用环境变量,因此您可以完全按照所写的命令运行。
- 若您尚未拥有定义环境变量的脚本,请参阅 《设置安装环境变量》。
- 要使用脚本中的环境变量,必须在本任务中运行命令之前加载这些环境变量。 例如,运行以下命令:
source ./cpd_vars.sh
开始之前
此任务要求满足以下先决条件:
- 系统需求
- 此任务假定集群满足 watsonx Orchestrate 的最低要求。
在何处查找更多信息 如果此任务尚未完成,请参阅系统要求。 此外,若您计划使用需要GPU的功能,请确保您的设备配备了适用于 watsonx Orchestrate 的正确类型和数量的GPU。在何处查找更多信息 如果此任务尚未完成,请参阅 GPU 要求。 - 工作站
- 此任务假定您将用于运行升级的工作站已配置为客户端工作站,并具备以下命令行界面:
- IBM Software
Hub 命令行界面:
cpd-cli - OpenShift® 命令行界面:
oc - Helm 命令行界面:
oc
在何处查找更多信息 如果此任务尚未完成,请参阅更新客户端工作站。 - IBM Software
Hub 命令行界面:
- 控制平面
- 此任务假设 已升级 IBM Software
Hubcontrol plane 。
在何处查找更多信息 如果此任务尚未完成,请参阅 《升级 IBM 实例》 Software Hub。 - 专用容器注册表
- 如果您的环境使用私有容器注册表(例如,您的集群处于空气隔离状态),则此任务假定以下任务已完成:
- watsonx Orchestrate 软件镜像已同步至私有容器注册表。
在何处查找更多信息 如果此任务尚未完成,请参阅《 将镜像镜像到私有容器注册表》。 - 该
cpd-cli配置用于从私有容器注册表中拉取镜像olm-utils-v4。在何处查找更多信息 如果此任务尚未完成,请参阅从私有容器注册表拉取 olm-utils-v4 镜像。
- watsonx Orchestrate 软件镜像已同步至私有容器注册表。
- GPU操作员
- 若您计划使用需要GPU的功能,本任务将默认已安装使用GPU所需的操作员。
在何处查找更多信息 如果此任务尚未完成,请参阅 《为需要 GPU 的服务安装操作员》。 - Red Hat® OpenShift AI
- 若您计划使用需要 Red Hat
OpenShift AI的功能,本任务将默认 已 Red Hat
OpenShift AI 安装。
在何处查找更多信息 如果此任务尚未完成,请参阅《 安装 Red Hat OpenShift AI 》。 - Multicloud Object Gateway
- 此任务假设在需要时会 Multicloud Object Gateway 进行升级。
在何处查找更多信息 如果此任务尚未完成,请参阅 《升级多云对象网关》。 - Red Hat OpenShift Serverless Knative Eventing
- 此任务假设以下任务已完成:
- Red Hat
OpenShift Serverless Knative Eventing 已升级
在何处查找更多信息 如果此任务尚未完成,请参阅 《安装 Red Hat OpenShift 无服务器Knative事件处理 》。 - 该 IBM
Events Operator 实例已完成升级。
5.3.1 此任务仅在您升级至 5.3.1IBM Software Hub 或更高版本时需要执行。 若您正在升级至 5.3.0IBM Software Hub 版本,请跳过此任务
在何处查找更多信息 如果此任务尚未完成,请参阅 《升级 IBM 事件操作员》。
- Red Hat
OpenShift Serverless Knative Eventing 已升级
- 簇作用域资源
- 此任务假设集群范围资源(如自定义资源定义、集群角色和集群角色绑定)已完成更新。
在何处查找更多信息 如果此任务尚未完成,请参阅 《更新平台和服务的集群范围资源》。 - 映像提取私钥
- 此任务假设包含实例镜像拉取凭据的密钥已存在。
在何处查找更多信息 如果此任务尚未完成,请参阅 《为 IBM 实例创建镜像拉取密钥 》 Software Hub。
过程
完成以下任务以升级 watsonx Orchestrate :
指定安装选项
在 5.3.0 版本 IBM Software Hub 中, watsonx Orchestrate 的默认行为是仅安装基于代理的AI功能。
请参阅下表,以确定在升级至 5.3.0 版本时是否需要指定安装选项:
| 升级前的功能 | 升级后的功能 | 所需操作 |
|---|---|---|
| 代理 AI | 代理 AI |
|
| 代理式人工智能、技能、助手 | 代理式人工智能、技能、助手 |
|
| 代理式人工智能、技能、助手 | 代理 AI |
|
| 代理式人工智能、技能、助手 | 代理式人工智能,智能助手 |
|
- 从代理式人工智能、技能及助手的旧版本升级
- 若计划从 Agentic watsonx™
Orchestrate AI 的旧版本升级技能或助手,请在 目录
cpd-cli work下install-options.yml创建名为 的文件(例如:cpd-cli-workspace/olm-utils-workspace/work),并添加以下条目:注意: 若您在先前版本中已使用Inference Foundation Models配置了本地模型,且希望在 5.3 中保留相同配置,则必须将watsonxaiifm参数设置为true。# ............................................................................ # watsonx Orchestrate parameters # ............................................................................ non_olm: watsonxOrchestrate: installMode: "agentic_skills_assistant" watsonxAI: watsonxaiifm: true - 从旧版本的代理式人工智能升级
- 若计划从 Agentic watsonx
Orchestrate AI 升级,请在 目录
cpd-cli work下创建名为install-options.yml的文件(例如:cpd-cli-workspace/olm-utils-workspace/work),并添加以下条目:注意: 若您在先前版本中已使用Inference Foundation Models配置了本地模型,且希望在 5.3 中保留相同配置,则必须将watsonxaiifm参数设置为true。# ............................................................................ # watsonx Orchestrate parameters # ............................................................................ non_olm: watsonxOrchestrate: watsonxAI: watsonxaiifm: true
- 请确保在所有其他组件成功升级后,最后再升级 watsonx Orchestrate。
- 在升级过程中若遇到 Kafka 失败,请参阅 Kafka 在升级过程中无法进入验证状态。
- 在升级过程中若遇到引导任务失败的情况,请参阅《 升级或安装过程中引导任务无法完成 》。
- 如果您之前配置过本地模型,则必须在升级过程中应用 5.3.x 版本的最新热修复程序 ,以确保升级顺利完成。
从 App Connect 迁移数据
运行脚本将数据从实例 App Connect 迁移到数据库 PostgreSQL 。
- 使用命令
vim创建文件 migration.sh 。 - 将以下内容复制到脚本文件中并保存该文件。
migration.sh
#!/bin/bash # Setting Variables PROJECT_CPD_INST_OPERANDS=$PROJECT_CPD_INST_OPERANDS PROJECT_IBM_APP_CONNECT=$PROJECT_IBM_APP_CONNECT FORCE_DELETE_CRDS=true CONFIGMAP_NAME="wo-appc-migration-status" CONFIGMAP_NAMESPACE="$PROJECT_CPD_INST_OPERANDS" CPD_URL=$(oc get route cpd -n $PROJECT_CPD_INST_OPERANDS -o jsonpath='{.spec.host}') CR_NAME=$(oc get wo -n $PROJECT_CPD_INST_OPERANDS -o jsonpath='{.items[0].metadata.name}') # Ensure Variables is set if [[ -z "$CPD_URL" || -z "$PROJECT_CPD_INST_OPERANDS" || -z "$PROJECT_IBM_APP_CONNECT" || -z "$CR_NAME" || -z "$CONFIGMAP_NAMESPACE" ]]; then echo "Error: One or more required environment variables are not set. Please set it before running the script." echo " - CPD_URL is $CPD_URL" echo " - PROJECT_CPD_INST_OPERANDS is $PROJECT_CPD_INST_OPERANDS" echo " - PROJECT_IBM_APP_CONNECT is $PROJECT_IBM_APP_CONNECT" echo " - CR name is $CR_NAME" echo " - ConfigMap Namespace is $CONFIGMAP_NAMESPACE" exit 1 fi # K8s resource for Appc migration cat <<EOF | oc apply -f - kind: ServiceAccount apiVersion: v1 metadata: name: ${CR_NAME}-migration namespace: ${PROJECT_CPD_INST_OPERANDS} --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: ${CR_NAME}-migration-clusterrole rules: - apiGroups: - '' resources: - secrets - namespaces verbs: - list - get - apiGroups: - '' resources: - configmaps verbs: - list - get - create --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: ${CR_NAME}-migration-rolebinding subjects: - kind: ServiceAccount name: ${CR_NAME}-migration namespace: ${PROJECT_CPD_INST_OPERANDS} roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ${CR_NAME}-migration-clusterrole --- apiVersion: batch/v1 kind: Job metadata: name: ${CR_NAME}-appc-migration-job namespace: ${PROJECT_CPD_INST_OPERANDS} labels: wo.watsonx.ibm.com/external-access: "true" app.kubernetes.io/component: components-services app.kubernetes.io/instance: wo app.kubernetes.io/name: watson-orchestrate icpdsupport/addOnId: orchestrate icpdsupport/app: components-services icpdsupport/module: components-services-orchestrate icpdsupport/podSelector: components-services wo.watsonx.ibm.com/application: watson-orchestrate wo.watsonx.ibm.com/component: wo-appc-migration wo.watsonx.ibm.com/cr-name: wo annotations: cloudpakName: IBM watsonx Orchestrate Cartridge for IBM Cloud Pak for Data openshift.io/scc: restricted-v2 productName: IBM watsonx Orchestrate seccomp.security.alpha.kubernetes.io/pod: runtime/default spec: template: metadata: labels: wo.watsonx.ibm.com/external-access: "true" app.kubernetes.io/component: components-services app.kubernetes.io/instance: wo app.kubernetes.io/name: watson-orchestrate icpdsupport/addOnId: orchestrate icpdsupport/app: components-services icpdsupport/module: components-services-orchestrate icpdsupport/podSelector: components-services wo.watsonx.ibm.com/application: watson-orchestrate wo.watsonx.ibm.com/component: wo-appc-migration wo.watsonx.ibm.com/cr-name: wo annotations: cloudpakName: IBM watsonx Orchestrate Cartridge for IBM Cloud Pak for Data openshift.io/scc: restricted-v2 productName: IBM watsonx Orchestrate seccomp.security.alpha.kubernetes.io/pod: runtime/default spec: containers: - name: appc-migration image: cp.icr.io/cp/watsonx-orchestrate/ibm-watsonx-orchestrate-onprem-utils@sha256:17506672bb6263a2a11a57ee571af781896c905ac22bf2bead2fcdf07a90b07d command: ["/bin/bash"] args: ["wxo_app_migration.sh"] env: - name: CPD_BASE_URL value: "https://${CPD_URL}" - name: WO_NAMESPACE value: "${PROJECT_CPD_INST_OPERANDS}" - name: APPC_NAMESPACE value: "${PROJECT_IBM_APP_CONNECT}" volumeMounts: - name: zen-service-broker-secret readOnly: true mountPath: /secrets/zen-service-broker-secret/ - name: postgres mountPath: /secrets/pg/ volumes: - name: zen-service-broker-secret secret: secretName: zen-service-broker-secret - name: postgres secret: secretName: ${CR_NAME}-watson-orchestrate-pg-secret serviceAccountName: ${CR_NAME}-migration restartPolicy: Never backoffLimit: 4 EOF # Cleanup Action echo "Waiting for ConfigMap '$CONFIGMAP_NAME' to be created in namespace '$CONFIGMAP_NAMESPACE'." # Check for ConfigMap to confirm Migration completion MAX_WAIT_TIME=$((5 * 60)) WAIT_INTERVAL=10 WAITED=0 while true; do if oc get configmap "$CONFIGMAP_NAME" -n "$CONFIGMAP_NAMESPACE"; then echo "Migration Completed. Proceeding to cleanup." break fi if (( WAITED >= MAX_WAIT_TIME )); then echo "Timed out waiting for ConfigMap '$CONFIGMAP_NAME'. Exiting with error." exit 1 fi echo "Waiting for Migration to complete. ($WAITED seconds elapsed, Max Wait time is $MAX_WAIT_TIME)" sleep $WAIT_INTERVAL ((WAITED += WAIT_INTERVAL)) done echo "Migration Completed. Proceeding to cleanup existing AppConnect Resources." # Cleanup Appconnect resources DeleteAppConnectResources() { oc delete dashboards.appconnect.ibm.com ${CR_NAME}-headless-dash -n "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found || true oc delete integrationruntimes.appconnect.ibm.com ${CR_NAME}-integration-runtime -n "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found || true echo "Depending on the reclaim policy that is set on your file storage class, you might need to manually remove the dashboard persistent volumes." echo "Run the following command to check whether any dashboard persistent volumes still exist:" echo "oc get pv | grep appconnect" oc delete configmap ibm-appconnect-operator-env -n "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found oc delete configurations.appconnect.ibm.com ${CR_NAME}-integration-runtime-acc -n "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found || true oc delete secret ${CR_NAME}-integration-runtime-acc-secret -n "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found for resource in dashboards.appconnect.ibm.com integrationruntimes.appconnect.ibm.com configurations.appconnect.ibm.com; do for name in $(oc get "$resource" -n "${PROJECT_IBM_APP_CONNECT}" -o jsonpath='{.items[*].metadata.name}' --ignore-not-found); do echo "Patching finalizers for $resource/$name" oc patch "$resource" "$name" -n "${PROJECT_IBM_APP_CONNECT}" -p '{"metadata":{"finalizers":[]}}' --type=merge || true done done } DeleteProvidedAppConnectNamespace() { oc delete subscriptions.operators.coreos.com,csv -l "operators.coreos.com/ibm-appconnect-operator.${PROJECT_IBM_APP_CONNECT}" -n "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found oc delete operatorgroup common-service -n "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found oc delete catalogsource appconnect-operator-catalogsource -n "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found echo "Deleting the ${PROJECT_IBM_APP_CONNECT} project. If the command hangs, removing finalizers from the namespace..." oc delete project "${PROJECT_IBM_APP_CONNECT}" --ignore-not-found if oc get namespace "${PROJECT_IBM_APP_CONNECT}"; then echo "Namespace still exists. Patching finalizers to force delete." oc patch namespace "${PROJECT_IBM_APP_CONNECT}" -p '{"metadata":{"finalizers":[]}}' --type=merge || true fi } DeleteAppConnectCRDs() { DeleteCRD "configurations.appconnect.ibm.com" DeleteCRD "dashboards.appconnect.ibm.com" DeleteCRD "designerauthorings.appconnect.ibm.com" DeleteCRD "integrationflows.appconnect.ibm.com" DeleteCRD "integrationruntimes.appconnect.ibm.com" DeleteCRD "integrationservers.appconnect.ibm.com" DeleteCRD "switchservers.appconnect.ibm.com" DeleteCRD "traces.appconnect.ibm.com" } DeleteCRD(){ crd=$1 echo "Deleting CRD: ${crd}" if [[ $(oc get "${crd}" -A --ignore-not-found | wc -l) -gt 0 || ! ${FORCE_DELETE_CRDS} ]]; then echo "Found remaining ${crd} resource. Verifiy that these resources can be deleted" oc get "${crd}" -A for name in $(oc get "${crd}" -A --no-headers --ignore-not-found | awk '{print $2}'); do echo "Patching finalizer on $name" oc patch "$crd" "$name" --type=merge -p '{"metadata":{"finalizers":[]}}' -n "${PROJECT_IBM_APP_CONNECT}" || true done return 1 fi oc delete crd "${crd}" --ignore-not-found } if DeleteAppConnectResources; then echo "DeleteAppConnectResources completed successfully." else echo "DeleteAppConnectResources failed. Exiting..." exit 1 fi if DeleteProvidedAppConnectNamespace; then echo "DeleteProvidedAppConnectNamespace completed successfully." else echo "DeleteProvidedAppConnectNamespace failed. Exiting..." exit 1 fi if DeleteAppConnectCRDs; then echo "DeleteAppConnectCRDs completed successfully." else echo "DeleteAppConnectCRDs failed. Exiting..." exit 1 fi # Cleanup K8s resources created for Migration echo "AppConnect resources removed. Proceeding to remove SA,Clusterrole,Clusterrolebinding" oc delete clusterrole ${CR_NAME}-migration-clusterrole oc delete clusterrolebinding ${CR_NAME}-migration-rolebinding oc delete serviceaccount ${CR_NAME}-migration -n "$CONFIGMAP_NAMESPACE" echo "Migration & Cleanup completed successfully."
- 使用命令
chmod 775 migration.sh更改脚本文件的权限。 - 使用命令
sh migration.sh运行脚本文件。
升级服务
升级 watsonx Orchestrate :
- 登录
cpd-cli到集群 Red Hat OpenShift Container Platform :${CPDM_OC_LOGIN}请记住:CPDM_OC_LOGIN是一个别名,代表 命令cpd-cli manage login-to-ocp。 - 更新 watsonx Orchestrate 的操作员和自定义资源。
运行相应的命令以更新 watsonx Orchestrate 的操作员和自定义资源。
- 默认安装(无安装选项)
cpd-cli manage install-components \ --license_acceptance=true \ --components=watsonx_orchestrate \ --release=${VERSION} \ --operator_ns=${PROJECT_CPD_INST_OPERATORS} \ --instance_ns=${PROJECT_CPD_INST_OPERANDS} \ --image_pull_prefix=${IMAGE_PULL_PREFIX} \ --image_pull_secret=${IMAGE_PULL_SECRET} \ --upgrade=true- 自定义安装(含安装选项)
cpd-cli manage install-components \ --license_acceptance=true \ --components=watsonx_orchestrate \ --release=${VERSION} \ --operator_ns=${PROJECT_CPD_INST_OPERATORS} \ --instance_ns=${PROJECT_CPD_INST_OPERANDS} \ --image_pull_prefix=${IMAGE_PULL_PREFIX} \ --image_pull_secret=${IMAGE_PULL_SECRET} \ --param-file=/tmp/work/install-options.yml \ --upgrade=true
验证升级
install-components 返回时,系统将进行升级:[SUCCESS]... The install-components command ran successfully
若需确认自定义资源状态为 Completed,可执行 命令 cpd-cli
manage
get-cr-status :
cpd-cli manage get-cr-status \
--cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS} \
--components=watsonx_orchestrate
在租户设置中更新AI聊天版本
- 使用命令
vim创建文件update-tenant-settings.sh。 - 将以下内容复制到脚本文件中并保存该文件。
#!/bin/bash echo "Executing DB scripts" wopg=$(oc get pods -n $PROJECT_CPD_INST_OPERANDS | grep watson-orchestrate-postgresedb-1 | awk '{print $1}') oc exec "$wopg" -n "$PROJECT_CPD_INST_OPERANDS" -c postgres -- bash -c " psql -U postgres -d archer -c \"UPDATE tenants SET settings = jsonb_set(settings, '{model_settings,embeddings,model_name}', to_jsonb('ibm/slate-30m-english-rtrvr'::text), true) WHERE settings IS NOT NULL;\" && psql -U postgres -d archer -c \"DO \\\$\\\$ BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_name = 'models' AND column_name = 'connection_id' AND table_schema = 'public' ) THEN ALTER TABLE public.models ADD COLUMN connection_id TEXT; END IF; END; \\\$\\\$;\" " echo "DB scripts executed." - 使用命令
chmod 775 update-tenant-settings.sh更改脚本文件的权限。 - 使用命令
sh update-tenant-settings.sh运行脚本文件。
升级服务实例
当您升级 watsonx Orchestrate 时,服务实例会自动进行升级。
迁移助手构建器数据
要迁移助手构建器数据:
- 等待 watsonx Orchestrate 升级完成,并验证升级是否成功。
oc get wo NAME VERSION DEPLOYED VERIFIED TOTAL QUIESCE RECONCILE_PROGRESS AGE wo 5.1.3 37 37 37 NOT_QUIESCED 100% 4d20h重要提示: 在完成以下数据迁移步骤之前,请勿执行任何操作。 否则,数据将不会被迁移,这可能导致数据丢失。 - 重新发送该
addTenant事件。oc get pods | grep tenant oc rsh <tenant controller pod> export INSTANCE_ID=<watsonx orchestrate zen instance id> curl -i -k -X GET "http://localhost:5050/tenantctrl/api/v1/tenants/$INSTANCE_ID/event?eventType=addTenant" export EVENT_ID=<Event ID from above output> curl -i -k -X PUT "http://localhost:5050/tenantctrl/api/v1/tenants/$INSTANCE_ID/events/$EVENT_ID" - 检查所有 Pod
wo-wa-gw-provisioner的日志,确保内部助手构建器实例已创建。 - 创建一个名为 wo-wa-multitenancy-migration-script.sh. 的文件。
- 将以下内容添加到该文件:
wo-wa-multitenancy-migration-script.sh
#!/bin/bash # Setting Variables PROJECT_CPD_INST_OPERANDS=$PROJECT_CPD_INST_OPERANDS WA_CR_NAME=$(oc get wa -n $PROJECT_CPD_INST_OPERANDS -o jsonpath='{.items[0].metadata.name}') # Ensure Variables is set if [[ -z "$PROJECT_CPD_INST_OPERANDS" ]]; then echo "Error: required environment variable is not set. Please set it before running the script." echo " - PROJECT_CPD_INST_OPERANDS is $PROJECT_CPD_INST_OPERANDS" exit 1 fi cat <<EOF | oc apply -f - apiVersion: batch/v1 kind: Job metadata: name: wo-wa-multitenancy-migration namespace: ${PROJECT_CPD_INST_OPERANDS} spec: completions: 1 parallelism: 1 template: metadata: labels: app: ${WA_CR_NAME}-multitenancy-migration service: conversation slot: ${WA_CR_NAME} spec: restartPolicy: OnFailure containers: - name: multitenancy-migration image: cp.icr.io/cp/watson-assistant/conan-tools@sha256:f0589b62ddd4e2e536a720c679e79bfa752db7ec082f36772fe3746673251e2a command: ["/bin/sh"] args: ["-c", "wget https://github.com/watson-developer-cloud/community/raw/refs/heads/master/watsonx-orchestrate/5.1.3/wo-wa-multitenancy-migration; chmod +x wo-wa-multitenancy-migration; ./wo-wa-multitenancy-migration"] imagePullPolicy: Always resources: limits: cpu: 100m ephemeral-storage: 100Mi memory: 100Mi requests: cpu: 100m ephemeral-storage: 100Mi memory: 100Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false procMount: Default readOnlyRootFilesystem: false runAsNonRoot: true env: - name: ADDON_TYPE value: "orchestrate" - name: ACCOUNT_ID value: "02a92df0-657c-43c9-94fc-2280450b1e0b" - name: RESOURCE_GROUP_ID value: "ba4ab788-68a9-492b-87da-9179cb1e6541" - name: ASSISTANT_BUILDER_INSTANCE_NAME value: "wxo-assistant-ab" # - name: ORCHESTRATE_INSTANCE_NAME # value: "watsonx-orchestrate" - name: ZEN_API_SERVICE_ENDPOINT value: "https://zen-core-api-svc.${PROJECT_CPD_INST_OPERANDS}.svc:4444" - name: CLIENT_KEY value: "/app/mtls/cpd-internal-tls/tls.key" - name: CLIENT_CERT value: "/app/mtls/cpd-internal-tls/tls.crt" - name: CA_CERT value: "/app/mtls/cpd-internal-tls/ca.crt" - name: POSTGRES_CA_CERT value: "/app/mtls/postgres-tls/ca.crt" - name: MIGRATE_POSTGRES_DATA value: "true" - name: MIGRATE_ANALYTICS_DATA value: "false" - name: POSTGRES_ENDPOINT value: ${WA_CR_NAME}-postgres-16-rw - name: ZEN_API_TOKEN valueFrom: secretKeyRef: key: token name: zen-service-broker-secret - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: key: password name: ${WA_CR_NAME}-postgres-16-admin-auth - name: POSTGRES_USERNAME valueFrom: secretKeyRef: key: username name: ${WA_CR_NAME}-postgres-16-admin-auth - name: POSTGRES_DBNAME valueFrom: secretKeyRef: key: dbname name: ${WA_CR_NAME}-postgres-16-app - name: POSTGRES_PORT valueFrom: secretKeyRef: key: port name: ${WA_CR_NAME}-postgres-16-app volumeMounts: - mountPath: /app/mtls/cpd-internal-tls name: cpd-internal-tls readOnly: true - mountPath: /app/mtls/postgres-tls name: postgres-tls readOnly: true volumes: - name: cpd-internal-tls secret: defaultMode: 420 secretName: internal-tls - name: postgres-tls secret: defaultMode: 420 secretName: ${WA_CR_NAME}-tls-postgres-16 EOF
- 使用命令
chmod +x wo-wa-multitenancy-migration-script.sh更改文件权限。 - 删除以下作业。 这两个作业稍后将通过脚本重新创建。
oc get jobs | grep mig wo-wa-multitenancy-migration 0/1 9s 2d4h wo-wa-multitenancy-migration-opensearch 0/1 3h56m 3h56m oc delete jobs wo-wa-multitenancy-migration wo-wa-multitenancy-migration-opensearch - 运行
wo-wa-multitenancy-migration-script.sh文件。在命名
cpd-instance空间中创建了一个wo-wa-multitenancy-migration名为 的 Kubernetes 作业。 检查作业日志,确保作业已成功完成。 - 创建一个名为 wo-wa-multitenancy-migration-opensearch-script.sh的文件,并将以下内容添加到该文件中:
wo-wa-multitenancy-migration-opensearch-script.sh
#!/bin/bash # Setting Variables PROJECT_CPD_INST_OPERANDS=$PROJECT_CPD_INST_OPERANDS WA_CR_NAME=$(oc get wa -n $PROJECT_CPD_INST_OPERANDS -o jsonpath='{.items[0].metadata.name}') # Ensure Variables is set if [[ -z "$PROJECT_CPD_INST_OPERANDS" ]]; then echo "Error: required environment variable is not set. Please set it before running the script." echo " - PROJECT_CPD_INST_OPERANDS is $PROJECT_CPD_INST_OPERANDS" exit 1 fi cat <<EOF | oc apply -f - apiVersion: batch/v1 kind: Job metadata: name: wo-wa-multitenancy-migration-opensearch namespace: ${PROJECT_CPD_INST_OPERANDS} spec: completions: 1 parallelism: 1 template: metadata: labels: app: ${WA_CR_NAME}-multitenancy-migration-opensearch service: conversation slot: ${WA_CR_NAME} spec: restartPolicy: OnFailure containers: - name: multitenancy-migration image: cp.icr.io/cp/watson-assistant/conan-tools@sha256:f0589b62ddd4e2e536a720c679e79bfa752db7ec082f36772fe3746673251e2a command: ["/bin/sh"] args: ["-c", "wget https://github.com/watson-developer-cloud/community/raw/refs/heads/master/watsonx-orchestrate/5.2.1/wo-wa-multitenancy-migration; chmod +x wo-wa-multitenancy-migration; ./wo-wa-multitenancy-migration"] imagePullPolicy: Always resources: limits: cpu: 100m ephemeral-storage: 100Mi memory: 100Mi requests: cpu: 100m ephemeral-storage: 100Mi memory: 100Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false procMount: Default readOnlyRootFilesystem: false runAsNonRoot: true env: - name: ADDON_TYPE value: "orchestrate" - name: ACCOUNT_ID value: "02a92df0-657c-43c9-94fc-2280450b1e0b" - name: RESOURCE_GROUP_ID value: "ba4ab788-68a9-492b-87da-9179cb1e6541" - name: ASSISTANT_BUILDER_INSTANCE_NAME value: "wxo-assistant-ab" # - name: ORCHESTRATE_INSTANCE_NAME # value: "watsonx-orchestrate" - name: ZEN_API_SERVICE_ENDPOINT value: "https://zen-core-api-svc.${PROJECT_CPD_INST_OPERANDS}.svc:4444" - name: CLIENT_KEY value: "/app/mtls/cpd-internal-tls/tls.key" - name: CLIENT_CERT value: "/app/mtls/cpd-internal-tls/tls.crt" - name: CA_CERT value: "/app/mtls/cpd-internal-tls/ca.crt" - name: POSTGRES_CA_CERT value: "/app/mtls/postgres-tls/ca.crt" - name: MIGRATE_ANALYTICS_DATA value: "true" - name: MIGRATE_POSTGRES_DATA value: "false" - name: OPENSEARCH_CA_CERT value: /app/mtls/opensearch-tls/ca.crt - name: OPENSEARCH_ENDPOINT value: wo-wa-data-governor-ibm-data-governor-all - name: OPENSEARCH_PASSWORD valueFrom: secretKeyRef: key: elastic name: wo-wa-data-governor-ibm-elasticsearch-cred-cr-secret - name: OPENSEARCH_PORT value: "9200" - name: POSTGRES_ENDPOINT value: ${WA_CR_NAME}-postgres-16-rw - name: ZEN_API_TOKEN valueFrom: secretKeyRef: key: token name: zen-service-broker-secret - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: key: password name: ${WA_CR_NAME}-postgres-16-admin-auth - name: POSTGRES_USERNAME valueFrom: secretKeyRef: key: username name: ${WA_CR_NAME}-postgres-16-admin-auth - name: POSTGRES_DBNAME valueFrom: secretKeyRef: key: dbname name: ${WA_CR_NAME}-postgres-16-app - name: POSTGRES_PORT valueFrom: secretKeyRef: key: port name: ${WA_CR_NAME}-postgres-16-app volumeMounts: - mountPath: /app/mtls/cpd-internal-tls name: cpd-internal-tls readOnly: true - mountPath: /app/mtls/postgres-tls name: postgres-tls readOnly: true - mountPath: /app/mtls/opensearch-tls/ name: opensearch-tls readOnly: true volumes: - name: cpd-internal-tls secret: defaultMode: 420 secretName: internal-tls - name: postgres-tls secret: defaultMode: 420 secretName: ${WA_CR_NAME}-tls-postgres-16 - name: opensearch-tls secret: defaultMode: 288 secretName: wo-wa-data-governor-ibm-data-governor-tls-secret EOF
- 使用命令
chmod +x wo-wa-multitenancy-migration-opensearch-script.sh更改文件权限。 - 运行
wo-wa-multitenancy-migration-opensearch-script.sh文件。在命名
cpd-instance空间中创建了一个wo-wa-multitenancy-migration-opensearch名为 的 Kubernetes 作业。 检查作业日志,确保作业已成功完成。 请等待几分钟以完成该任务,因为每次执行更新查询后会有60秒的延迟。 - 运行迁移脚本后,请重新启动部署。 运行下列命令:
$WA_CR_NAME=$(oc get wa -n $PROJECT_CPD_INST_OPERANDS -o jsonpath='{.items[0].metadata.name}')$oc rollout restart deploy ${WA_CR_NAME}-store$oc rollout restart sts ${WA_CR_NAME}-redis-server - 请确认您的助手和操作是否出现在助手构建器页面中。
- 若向助手发送消息时出现分类错误,请打开每个助手,通过添加操作再将其移除来触发重新训练。
- 请确认您的分析数据已存在于助手构建器中。
- 如果助手和操作在助手构建器页面中可用,请从用户界面的 "我的实例 "中删除该
wxo-assistant-ab实例。 请勿删除该wxo-assistant-de实例。
下一步操作
watsonx Orchestrate 已准备就绪,可立即使用。 有关如何授予他人访问您实例权限的信息,请参阅 IBM 上的《向 watsonx Orchestrate 添加用户》 一文: Software Hub。
可选地,您可以配置GPU功能和模型,例如启用特定模型或禁用未使用的模型。 如需更多信息,请参阅 “安装或升级后配置 IFM 模型 ”。