設定 Synchronizer

本節將說明 Synchronizer。

同步處理工具總覽

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

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

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

啟用同步處理工具存取權

您必須授予Synchronizer 權限,才能從管理層面下載 Apigee 構件,例如 Proxy 套件和資源。您必須呼叫 Apigee API,授權同步處理工具將構件從管理單元拉至執行階段單元。

  1. 確認您已按照 GCP 設定步驟所述啟用 Apigee API。 詳情請參閱「步驟 3:啟用 API」。
  2. 找出您在建立服務帳戶時下載的可寫入 GCP 服務帳戶金鑰 (JSON 檔案)。服務帳戶具備「Apigee Org Admin」角色,且名稱為「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="
    }