watsonx Orchestrate 从版本 5.1 升级至版本 5.3

实例管理员可将 watsonx Orchestrate 从 5.1 版本升级至 5.3 版本。

重要提示: 如果您希望将 watsonx Orchestrate 从 5.1.x 版本升级至 5.3.x 版本,请通过 IBM Support 提交支持工单。
注意: 当您从使用技能型体验的旧版本升级至 5.3 版本时,现有租户将无法使用新的代理型体验。 然而,在 5.3 集群中创建的任何新租户都将仅拥有新的代理体验。
警告: 若您是从包含Agentic AI、技能和助手功能的旧版本升级至 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 Hubcontrol plane
在何处查找更多信息
如果此任务尚未完成,请参阅 《升级 IBM 实例》 Software Hub
专用容器注册表
如果您的环境使用私有容器注册表(例如,您的集群处于空气隔离状态),则此任务假定以下任务已完成:
  1. watsonx Orchestrate 软件镜像已同步至私有容器注册表。
    在何处查找更多信息
    如果此任务尚未完成,请参阅《 将镜像镜像到私有容器注册表》
  2. cpd-cli 配置用于从私有容器注册表中拉取镜像 olm-utils-v4
    在何处查找更多信息
    如果此任务尚未完成,请参阅从私有容器注册表拉取 olm-utils-v4 镜像
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
此任务假设以下任务已完成:
  1. Red Hat OpenShift Serverless Knative Eventing 已升级
    在何处查找更多信息
    如果此任务尚未完成,请参阅 《安装 Red Hat OpenShift 无服务器Knative事件处理 》。
  2. IBM Events Operator 实例已完成升级。

    5.3.1 此任务仅在您升级至 5.3.1IBM Software Hub 或更高版本时需要执行。 若您正在升级至 5.3.0IBM Software Hub 版本,请跳过此任务

    在何处查找更多信息
    如果此任务尚未完成,请参阅 《升级 IBM 事件操作员》
簇作用域资源
此任务假设集群范围资源(如自定义资源定义、集群角色和集群角色绑定)已完成更新。
在何处查找更多信息
如果此任务尚未完成,请参阅 《更新平台和服务的集群范围资源》
映像提取私钥
此任务假设包含实例镜像拉取凭据的密钥已存在。
在何处查找更多信息
如果此任务尚未完成,请参阅 《为 IBM 实例创建镜像拉取密钥 》 Software Hub。

过程

完成以下任务以升级 watsonx Orchestrate

  1. 指定安装选项
  2. 从 App Connect 迁移数据
  3. 服务升级
  4. 验证升级
  5. 在租户设置中更新AI聊天版本
  6. 升级服务实例
  7. 迁移助手构建器数据
  8. 下一步该做什么

指定安装选项

5.3.0 版本 IBM Software Hub 中, watsonx Orchestrate 的默认行为是仅安装基于代理的AI功能。

请参阅下表,以确定在升级至 5.3.0 版本时是否需要指定安装选项:

升级前的功能 升级后的功能 所需操作
代理 AI 代理 AI
  1. 升级 watsonx Orchestrate 时,您无需指定任何安装选项。
  2. 升级 watsonx Orchestrate 后,您必须应用 5.3.x 版本的最新热修复程序
代理式人工智能、技能、助手 代理式人工智能、技能、助手
  1. 当您升级 watsonx Orchestrate 时,必须指定该 installMode:agentic_skills_assistant 参数。 更多详情请参阅本后面的“从旧版Agentic AI、技能、助手升级”章节。
  2. 升级 watsonx Orchestrate 后,您必须应用 5.3.x 版本的最新热修复程序
代理式人工智能、技能、助手 代理 AI
  1. 当您升级 watsonx Orchestrate 时,必须指定该 installMode:agentic_skills_assistant 参数。 更多详情请参阅本后面的“从旧版Agentic AI、技能、助手升级”章节。
  2. 升级 watsonx Orchestrate 后,必须编辑 watsonx Orchestrate 自定义资源以切换至 agentic 模式
  3. 升级 watsonx Orchestrate 后,您必须应用 5.3.x 版本的最新热修复程序
代理式人工智能、技能、助手 代理式人工智能,智能助手
  1. 当您升级 watsonx Orchestrate 时,必须指定该 installMode:agentic_skills_assistant 参数。 更多详情请参阅本后面的“从旧版Agentic AI、技能、助手升级”章节。
  2. 升级 watsonx Orchestrate 后,必须编辑 watsonx Orchestrate 自定义资源以切换至 agentic assistant 模式
  3. 升级 watsonx Orchestrate 后,您必须应用 5.3.x 版本的最新热修复程序
从代理式人工智能、技能及助手的旧版本升级
若计划从 Agentic watsonx™ Orchestrate AI 的旧版本升级技能或助手,请在 目录 cpd-cli workinstall-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 从版本 5.1.x 升级至版本 5.3.0: 时

App Connect 迁移数据

重要提示: 本节仅适用于将 watsonx Orchestrate 从版本 5.1.1 或版本 5.1.2 升级到版本 5.3.x 的情况。

运行脚本将数据从实例 App Connect 迁移到数据库 PostgreSQL

要迁移数据:
  1. 使用命令 vim 创建文件 migration.sh
  2. 将以下内容复制到脚本文件中并保存该文件。
    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."

  3. 使用命令 chmod 775 migration.sh 更改脚本文件的权限。
  4. 使用命令 sh migration.sh 运行脚本文件。

升级服务

升级 watsonx Orchestrate

  1. 登录 cpd-cli 到集群 Red Hat OpenShift Container Platform
    ${CPDM_OC_LOGIN}
    请记住: CPDM_OC_LOGIN 是一个别名,代表 命令 cpd-cli manage login-to-ocp
  2. 更新 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

验证升级

watsonx Orchestrate 当命令 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聊天版本

要更新AI聊天版本:
  1. 使用命令 vim 创建文件 update-tenant-settings.sh
  2. 将以下内容复制到脚本文件中并保存该文件。
    #!/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."
  3. 使用命令 chmod 775 update-tenant-settings.sh 更改脚本文件的权限。
  4. 使用命令 sh update-tenant-settings.sh 运行脚本文件。

升级服务实例

当您升级 watsonx Orchestrate 时,服务实例会自动进行升级。

迁移助手构建器数据

注意: 本节仅适用于将 watsonx Orchestrate 从 5.1.3 之前的任何版本升级到 5.3 版本的情况。

要迁移助手构建器数据:

  1. 等待 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
    重要提示: 在完成以下数据迁移步骤之前,请勿执行任何操作。 否则,数据将不会被迁移,这可能导致数据丢失。
  2. 重新发送该 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"
  3. 检查所有 Pod wo-wa-gw-provisioner 的日志,确保内部助手构建器实例已创建。
  4. 创建一个名为 wo-wa-multitenancy-migration-script.sh. 的文件。
  5. 将以下内容添加到该文件:
    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

  6. 使用命令 chmod +x wo-wa-multitenancy-migration-script.sh 更改文件权限。
  7. 删除以下作业。 这两个作业稍后将通过脚本重新创建。
    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  
  8. 运行 wo-wa-multitenancy-migration-script.sh 文件。

    在命名 cpd-instance 空间中创建了一个 wo-wa-multitenancy-migration 名为 的 Kubernetes 作业。 检查作业日志,确保作业已成功完成。

  9. 创建一个名为 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

  10. 使用命令 chmod +x wo-wa-multitenancy-migration-opensearch-script.sh 更改文件权限。
  11. 运行 wo-wa-multitenancy-migration-opensearch-script.sh 文件。

    在命名 cpd-instance 空间中创建了一个 wo-wa-multitenancy-migration-opensearch 名为 的 Kubernetes 作业。 检查作业日志,确保作业已成功完成。 请等待几分钟以完成该任务,因为每次执行更新查询后会有60秒的延迟。

  12. 运行迁移脚本后,请重新启动部署。 运行下列命令:
    $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
  13. 请确认您的助手和操作是否出现在助手构建器页面中。
  14. 若向助手发送消息时出现分类错误,请打开每个助手,通过添加操作再将其移除来触发重新训练。
  15. 请确认您的分析数据已存在于助手构建器中。
  16. 如果助手和操作在助手构建器页面中可用,请从用户界面的 "我的实例 "中删除该 wxo-assistant-ab 实例。 请勿删除该 wxo-assistant-de 实例。

下一步操作

watsonx Orchestrate 已准备就绪,可立即使用。 有关如何授予他人访问您实例权限的信息,请参阅 IBM 上的《向 watsonx Orchestrate 添加用户》 一文: Software Hub。

可选地,您可以配置GPU功能和模型,例如启用特定模型或禁用未使用的模型。 如需更多信息,请参阅 “安装或升级后配置 IFM 模型 ”。