グローバル検索の関係の一括同期 (IBM Knowledge Catalog)

関係のグローバル検索索引付きデータの使用を開始するには、アップグレード後に一括同期ユーティリティーを実行する必要があります。

5.1.0 以降にアップグレードする場合は、グローバル検索バーを使用して関係を検索し、関係テーブルで項目名でソートできるようにするために、以下のタスクの両方を実行する必要があります。

前提条件

必須ロール

このタスクを実行するには、以下のいずれかのロールが必要です。

  • クラスター管理者
  • インスタンス管理者

グローバル検索での関係メタデータのクリーンアップ

5.1.0 以降にアップグレードした後、この手順を実行して、関係メタデータをクリーンアップします。

IBMによって推奨される以外のペイロードでは、この手順を実行しないでください。 メタデータがクリーンアップされると、復元する方法はありません。

  1. ローカル環境から、oc login as admin を使用してクラスターにログインします。

  2. 後続の呼び出しで使用する Opensearch 資格情報を抽出します。

    # extracts Opensearch password
    ES_PASS=$(oc get secret elasticsearch-master-client-secret -ojson | jq .data.password -r | base64 -d)
    BASIC_AUTH="Basic $(echo -n "elastic:$ES_PASS" | base64)"
    
  3. 検索呼び出しを実行して、以下を確認します。

    # get total relationship counts
    oc exec elasticsearch-master-esnodes-000 -c opensearch -- curl -s -k -X GET \
    'https://localhost:9200/wkc-ALIAS/_search' \
    --header "Authorization: $BASIC_AUTH" \
    --header 'Accept: */*' \
    --header 'Content-Type: application/json' \
    --data-raw '{"size":0, "track_total_hits": true, "query":{"term": {"metadata.artifact_type": "relationship"}}}'
    

    このコマンドによって返された関係の数をメモします。 この値は、再同期プロセスの完了時に、全体的な再同期プロセスの成功の概算指標として使用できます。 以下の理由により、この数値は正確には同じではないことに注意してください。

    • 新しい関係はいつでも作成できます。
    • 欠落している関係を同期化しようとすると、この数は増える可能性があります。
    • 失効した関係を削除しようとすると、この数は減少する可能性があります。
  4. 関係文書を削除します。

    # deletes all relationships before resyncing
    oc exec elasticsearch-master-esnodes-000 -c opensearch -- curl -s -k -X POST \
    'https://localhost:9200/wkc-ALIAS/_delete_by_query' \
    --header "Authorization: $BASIC_AUTH" \
    --header 'Accept: */*' \
    --header 'Content-Type: application/json' \
    --data-raw '{"query":{"term": {"metadata.artifact_type": "relationship"}}}'
    
  5. 関係の一括同期手順に進みます。

関係の一括同期

アップグレード後にグローバル検索索引の一括同期を実行します。 管理者として、またはコマンド・ラインからクラスターにログインしていることを確認します。

  1. 以下のスクリプトをローカル環境に cpd_gs_sync.shとしてコピーします。

     #!/bin/bash
    
     function prompt_for_namespace(){
         read -p "Please provide namespace in which WKC is installed: " NAMESPACE
         echo "Job will be deployed into \"$NAMESPACE\" namespace"
     }
    
     function all_container_confirmation(){
         read -p "ARE YOU SURE YOU WANT TO CONTINUE? THIS WILL AFFECT ALL CONTAINERS, AND MAY TAKE A LONG TIME. TYPE
         \"YES\" TO PROCEED: " PROCESS_ALL
         if [[ $PROCESS_ALL != "YES" ]]; then
             echo "Job run cancelled."
             exit 0
         fi
         echo "All containers will be processed"
     }
    
     function prompt_for_list_of_catalogs(){
         read -p "Please provide the list of containers to synchronize separated by commas, empty list indicates
         processing all containers(catalog/project/space): " CATALOGS_STRING
         IFS=', ' read -r -a CATALOGS <<< "$CATALOGS_STRING"
         if [[ $CATALOGS_STRING == "" ]]; then
             all_container_confirmation
         else
             echo "Following containers will be processed: "
             for index in "${!CATALOGS[@]}"
             do
                 echo "$index - ${CATALOGS[index]}"
             done
         fi
     }
    
     function construct_db_list_string(){
         DB_STRING="["
         first=true
         for index in "${!CATALOGS[@]}"
         do
             if [ $first == false ]; then
                 DB_STRING+=","
             fi
             first=false
             DB_STRING+="\"${CATALOGS[index]}\""
         done
         DB_STRING+="]"
     }
    
     function patch_cronjob(){
         oc set env -n $NAMESPACE cronjob/catalog-api-relationship-sync-cronjob dbs_to_sync=$DB_STRING
     }
    
     function spawn_job(){
         oc delete job -n $NAMESPACE catalog-api-relationship-sync-job
         oc create job -n $NAMESPACE --from=cronjob/catalog-api-relationship-sync-cronjob catalog-api-relationship-sync-job
     }
    
     function restore_cronjob(){
         oc set env -n $NAMESPACE cronjob/catalog-api-relationship-sync-cronjob dbs_to_sync=[]
     }
    
     prompt_for_namespace
     prompt_for_list_of_catalogs
     construct_db_list_string
     patch_cronjob
     spawn_job
     restore_cronjob
    
  2. 次のコマンドを使用して、ステップ 1 のコードを実行します。

    chmod +x ./cpd_gs_sync.sh
    
    
  3. 次のコマンドを使用して、ジョブを実行します。

    ./cpd_gs_sync.sh
    

    端末のプロンプトに従って、ジョブを必要に応じてカスタマイズします。

    注: コンテナーのリストが空の場合、すべてのカタログ、プロジェクト、およびワークスペースが再同期されます。
  4. 以下のコマンドを実行して、ジョブ (catalog-api-relationship-sync-ジョブ) の状況を確認します。

    oc get jobs -n ${CPD_INSTANCE_PROJECT} -w | grep relationships
    

    ジョブが完了すると、状況は次のように表示されます。

    catalog-api-relationship-sync-job                      1/1           3m52s      20m
    
  5. ジョブ 状況が完了したら、以下のパッチ・コマンドを実行してグローバル検索関係を使用できるようにします。

    oc patch ccs ccs-cr -n ${CPD_INSTANCE_PROJECT} --type=merge --patch='{"spec":   {"portal_catalog_is_global_search_relationships_enabled": "true"}}'
    
  6. portal-catalog ポッドが再始動されたことを確認するには、以下のようにします。

    1. ポッド名を取得します。

      oc get pods -n ${CPD_INSTANCE_PROJECT} -w | grep portal-catalog
      
    2. ポッドを削除します。 <pod-name> は、ステップ a のポッドの名前に置き換えてください。

      oc delete pod <pod-name> -n ${CPD_INSTANCE_PROJECT}