Synchronizer を構成する

このセクションでは Synchronizer について説明します。

Synchronizer の概要

Apigee ハイブリッドでの Synchronizer の主な役割は、管理プレーンによって提供されるランタイム契約をポーリングしてダウンロードすることです。契約で通知される情報には、API プロキシ、API プロダクト、キャッシュ、仮想ホストなどがあります。Synchronizer は、デフォルトで環境構成データを Cassandra データベースに保存します。

ランタイム プレーンで実行中の Synchronizer インスタンスは、定期的に管理プレーンをポーリングし、契約をダウンロードしてローカル ランタイム インスタンスでも使用できるようにします。

1 つの Synchronizer により、同じ Pod にデプロイされた複数の Message Processor がサポートされます。

Synchronizer アクセスを有効にする

プロキシ バンドルやリソースなどの Apigee アーティファクトを管理プレーンから pull するには、Synchronizer の権限を付与する必要があります。管理プレーンからランタイム プレーンにアーティファクトを pull するには、Apigee API を呼び出して Synchronizer を承認する必要があります。

  1. Google Cloud の設定手順で説明したように、Apigee API が有効になっていることを確認します。詳しくは、API を有効にするをご覧ください。
  2. サービス アカウントと認証情報の作成の一環でダウンロードした、書き込み可能な Google Cloud サービス アカウント キー(JSON ファイル)を探します。このサービス アカウントには Apigee 組織管理者のロールがあり、名前は apigee-org-admin です。このサービス アカウントをまだ作成していない場合は、続行する前にアカウントを作成する必要があります。
  3. この Apigee 組織管理者サービス アカウント キーを使用して、OAuth 2.0 アクセス トークンを生成します。このトークンは、Apigee API の認証で必要になります。

    gcloud を使用して、ダウンロードしたサービス アカウント認証情報の JSON ファイルを GOOGLE_APPLICATION_CREDENTIALS 環境変数によって渡し、OAuth 2.0 アクセス トークンを取得します。

    export GOOGLE_APPLICATION_CREDENTIALS=your_sa_credentials_file.json
    gcloud auth application-default print-access-token

    OAuth2.0 トークンが返されます。

    詳細については、gcloud beta auth application-default print-access-token をご覧ください。

  4. 返された OAuth 2.0 トークンをコピーし、TOKEN のような変数に格納します。次に例を示します。
    export TOKEN=ya29....Ts13inj3LrqMJlztwygtM
  5. setSyncAuthorization API を呼び出し、Synchronizer に必要な権限を有効にします。

    データ所在地を使用しない場合

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/YOUR_ORG_NAME:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME"]}'
    

    ここで

    • YOUR_ORG_NAME: ハイブリッド組織の名前。
    • SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME: Apigee Synchronizer 管理者ロールを持つサービス アカウントの名前。この名前はメールアドレスのような形式になっています。たとえば、my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com のようになります。

    例:

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/my_org:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"]}'
    

    データ所在地

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/YOUR_ORG_NAME:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME"]}'
    

    ここで

    • YOUR_ORG_NAME: ハイブリッド組織の名前。
    • CONTROL_PLANE_LOCATION: ハイブリッド インストールでデータ レジデンシを使用する場合のコントロール プレーン データのロケーション。お客様のコアコンテンツ(プロキシ バンドルなど)が保存されるロケーション。リストについては、使用可能な Apigee API コントロール プレーンのリージョンをご覧ください。
    • SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME: Apigee Synchronizer 管理者ロールを持つサービス アカウントの名前。この名前はメールアドレスのような形式になっています。たとえば、my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com のようになります。

    例:

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://us-apigee.googleapis.com/v1/organizations/my_org:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"]}'
    

    この API の詳細については、setSyncAuthorization API をご覧ください。

  6. サービス アカウントが設定されていることを確認するには、次の API を呼び出してサービス アカウントのリストを取得します。

    データ所在地を使用しない場合

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/your_org_name:getSyncAuthorization" \
       -d ''

    データ所在地

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/your_org_name:getSyncAuthorization" \
       -d ''

    出力は次のようになります。

    {
       "identities":[
          "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"
       ],
       "etag":"BwWJgyS8I4w="
    }