本節將說明 Synchronizer。
同步處理工具總覽
在 Apigee hybrid 中,Synchronizer 的主要工作是輪詢及下載管理層提供的執行階段合約。透過合約傳送的資訊包括 API Proxy、API 產品、快取和虛擬主機。根據預設,Synchronizer 會將環境設定資料儲存在 Cassandra 資料庫中。
在執行階段層級執行的同步器執行個體應定期輪詢管理層級,下載合約,並將合約提供給本機執行階段執行個體。
一個 Synchronizer 可支援在同一個 Pod 中部署的多個 Message Processor。
啟用同步處理工具存取權
您必須授予Synchronizer 權限,才能從管理層面下載 Apigee 構件,例如 Proxy 套件和資源。您必須呼叫 Apigee API,授權同步處理工具將構件從管理單元拉至執行階段單元。
- 請確認您已按照 Google Cloud 設定步驟啟用 Apigee API。 詳情請參閱「啟用 API」。
- 找出您在建立服務帳戶和憑證時下載的可寫入的 Google Cloud 服務帳戶金鑰 (JSON 檔案)。服務帳戶具備「Apigee Org Admin」角色,且名稱為「apigee-org-admin」。如果您先前未建立這個服務帳戶,請先建立帳戶再繼續操作。
- 使用 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。
- 複製傳回的 OAuth 2.0 權杖,並儲存在
TOKEN
等變數中。例如:export TOKEN=ya29....Ts13inj3LrqMJlztwygtM
- 呼叫 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。
- 如要確認已設定服務帳戶,請呼叫下列 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=" }