設定 Synchronizer

本節說明 Synchronizer。

同步器總覽

在 Apigee Hybrid 中,同步器的主要工作是輪詢及下載管理層提供的執行階段合約。合約傳達的資訊包括 API Proxy、API 產品、快取和虛擬主機。根據預設,Synchronizer 會將環境設定資料儲存在 Cassandra 資料庫中。

在執行階段平面中執行的同步器執行個體,應定期輪詢管理平面、下載合約,並提供給本機執行階段執行個體。

一個 Synchronizer 可以支援部署在同一個 Pod 中的多個 Message Processor。

啟用同步處理工具存取權

您必須授予 Synchronizer 權限,才能從管理平面提取 Apigee 構件,例如 Proxy 套件和資源。您必須呼叫 Apigee API,授權 Synchronizer 從管理平面將構件拉至執行階段平面。

  1. 請確認您已按照 Google Cloud 設定步驟啟用 Apigee API。 詳情請參閱「步驟 3:啟用 API」。
  2. 找出您在建立服務帳戶時下載的可寫入 Google Cloud 服務帳戶金鑰 (JSON 檔案)。服務帳戶具有「Apigee 機構管理員」角色,且名稱為「apigee-org-admin」。如果您先前未建立這個服務帳戶,請先建立再繼續操作。
  3. GOOGLE_APPLICATION_CREDENTIALS 環境變數設為服務帳戶金鑰所在的路徑:

    export GOOGLE_APPLICATION_CREDENTIALS=your_sa_credentials_file.json
  4. 呼叫 setSyncAuthorization API,為 Synchronizer 啟用必要權限:
    curl -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-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 同步處理工具管理員角色的服務帳戶名稱。名稱的格式類似電子郵件地址。例如: my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com

    範例:

    curl -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-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"]}'
    

    如要進一步瞭解這項 API,請參閱 SyncAuthorization API

  5. 如要確認服務帳戶已設定完成,請呼叫下列 API 來取得服務帳戶清單:
    curl -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
      -H "Content-Type:application/json" \
      "https://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="
    }