設定 Synchronizer

本節將說明 Synchronizer。

同步處理工具總覽

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

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

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

啟用同步處理工具存取權

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

  1. 請確認您已按照 Google Cloud 設定步驟啟用 Apigee API。 詳情請參閱「啟用 API」。
  2. 找出您在建立服務帳戶和憑證時下載的可寫入的 Google Cloud 服務帳戶金鑰 (JSON 檔案)。服務帳戶具備「Apigee Org Admin」角色,且名稱為「apigee-org-admin」。如果您先前未建立這個服務帳戶,請先建立帳戶再繼續操作。
  3. 使用 Apigee Org Admin 服務帳戶金鑰產生 OAuth 2.0 存取權杖。您必須提供這個符記,才能驗證 Apigee API

    使用 gcloud 取得 OAuth 2.0 存取權杖,傳遞您使用 GOOGLE_APPLICATION_CREDENTIALS 環境變數下載的服務帳戶憑證 JSON 檔案:

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

    系統會傳回 OAuth 2.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 同步處理工具管理員角色的服務帳戶名稱。名稱的格式類似電子郵件地址。例如: 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:如果混合型安裝作業使用資料居留,則控制平面資料的位置。這是用來儲存客戶核心內容 (例如 Proxy 套件) 的位置。如需清單,請參閱「可用的 Apigee API 控制層區域」。
    • SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME:具備 Apigee 同步處理工具管理員角色的服務帳戶名稱。名稱的格式類似電子郵件地址。例如: 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="
    }