OpenShift での cronjob としての Config Sync の実行

Red Hat OpenShift または IBM Cloud Pak for Integration 上で apic-configsync ユーティリティを cronjob として実行すると、ユーティリティを 10 分ごとなどの時間単位で実行できます。

開始前に

cronjob を構成する前に、以下の前提条件が満たされていることを確認してください。

  • イメージをイメージ・レジストリーにコピーできるツールがあることを確認します。

    このトピックの例では、 skopeo を使用してイメージをターゲット・レジストリーにコピーしますが、代わりに同等の docker コマンドまたは podman コマンドを使用することもできます。

  • 以下のコマンドを実行して、 defaultRoute を使用して OpenShift レジストリーを公開します。
    oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
    詳細については、『 OpenShift 』のドキュメントにある 「レジストリの公開」 を参照してください。 手順のステップ 5 (「podman login」ステップ) を実行する必要はありません。
  • 以下のコマンドを実行して、 REGISTRY_HOST 環境変数を OpenShift レジストリーに設定します。
    REGISTRY_HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
  • APIC_PROJECT 環境変数を、cronjob を実行する名前空間 (プロジェクト) に設定します。 最適なパフォーマンスを得るには、cron ジョブは対象の API Connect クラスタと同じ OpenShift 環境で実行する必要があります。

このタスクについて

OpenShift または Cloud Pak for Integrationで実行される API Connect デプロイメントで cronjob として実行するように apic-configsync ユーティリティーを構成できます。 apic-configsync ユーティリティーは、可能な限りターゲット・クラスターに近い場所で実行する必要があります。そのため、cronjob は、ターゲットの API Connect クラスターと同じ OpenShift 環境内で実行するように構成する必要があります。

手順

  1. 「Config API Connect Sync」パッケージをダウンロードして解凍してください
  2. 抽出したAPI Connect Config Syncパッケージから、以下のコマンドを実行してConfig Syncイメージを抽出します:
    tar xf ibm-apic-configsync-image.tar.gz
  3. 抽出した構成同期イメージをターゲット・レジストリーにコピーします。

    例えば、skopeo を使用する場合は、次のコマンドを実行します。

    skopeo copy --dest-tls-verify=false --dest-registry-token=$(oc whoami -t) dir:./ibm-apic-configsync/ibm-apic-configsync-<version>/<tag> docker://$REGISTRY_HOST/$APIC_PROJECT/ibm-apic-configsync-<version>:<tag>

    <version> および <tag> を実際の値に置き換えます。 確実に最新の値を使うには、解凍した API Connect Config Sync パッケージのルートにある README ファイルからコピーしてください。

  4. ソースカタログとターゲットカタログの環境変数を定義します
  5. ソース・クラスターとターゲット・クラスターの構成の詳細をホストするためのシークレットを作成します。
    1. cronjob を実行する予定の名前空間に、ソース・クラスターの構成の詳細をホストするためのシークレットを作成します。
      oc create secret --namespace $APIC_PROJECT generic source-catalog-details \
          --from-literal=SOURCE_MGMT_SERVER=$SOURCE_MGMT_SERVER \
          --from-literal=SOURCE_ORG=$SOURCE_ORG \
          --from-literal=SOURCE_REALM=$SOURCE_REALM \
          --from-literal=SOURCE_ADMIN_USER=$SOURCE_ADMIN_USER \
          --from-literal=SOURCE_ADMIN_PASSWORD=$SOURCE_ADMIN_PASSWORD \
          --from-literal=SOURCE_CATALOG=$SOURCE_CATALOG \
          --from-literal=SOURCE_TOOLKIT_CREDENTIALS_CLIENTID=$SOURCE_TOOLKIT_CREDENTIALS_CLIENTID \
          --from-literal=SOURCE_TOOLKIT_CREDENTIALS_CLIENTSECRET=$SOURCE_TOOLKIT_CREDENTIALS_CLIENTSECRET
    2. cronjob を実行する予定の名前空間に、ターゲット・クラスターの構成の詳細をホストするためのシークレットを作成します。
      oc create secret --namespace $APIC_PROJECT generic target-catalog-details \
          --from-literal=TARGET_MGMT_SERVER=$TARGET_MGMT_SERVER \
          --from-literal=TARGET_ORG=$TARGET_ORG \
          --from-literal=TARGET_REALM=$TARGET_REALM \
          --from-literal=TARGET_ADMIN_USER=$TARGET_ADMIN_USER \
          --from-literal=TARGET_ADMIN_PASSWORD=$TARGET_ADMIN_PASSWORD \
          --from-literal=TARGET_CATALOG=$TARGET_CATALOG \
          --from-literal=TARGET_TOOLKIT_CREDENTIALS_CLIENTID=$TARGET_TOOLKIT_CREDENTIALS_CLIENTID \
          --from-literal=TARGET_TOOLKIT_CREDENTIALS_CLIENTSECRET=$TARGET_TOOLKIT_CREDENTIALS_CLIENTSECRET
  6. cronjob を作成します。
    1. 解凍したAPI Connect Config Syncパッケージにあるhelper_files/configsync-cronjob-ocp.yamlファイルを開きます。
    2. schedule プロパティーを変更して、ジョブを実行する頻度を指定します。

      推奨される最小スケジュール期間は 1 分ですが、多数のオブジェクトを含むデプロイメントでは、ジョブの完了により多くの時間が必要になる可能性があります。 並行ジョブは許可されないため、2 つの連続したジョブの開始間の合計時間が長くなる可能性があります。

    3. concurrencyPolicyForbidに設定します。

      Config Sync は、一度に 1 つのソースとターゲットのカタログ・ペアを操作します。 複数の異なるソースとターゲットのカタログ・ペアを同期する場合は、ペアごとに別個の cronjob を作成します。

    4. image プロパティーで、 <APIC_PROJECT> 変数を、cronjob を実行する名前空間 (プロジェクト) に置き換えます。
    5. 次のコマンドを実行して、クラスター内に cronjob リソースを作成します。
      oc --namespace $APIC_PROJECT apply -f helper_files/configsync-cronjob-ocp.yaml