本部分介绍 Synchronizer。
Synchronizer 概览
在 Apigee Hybrid 中,Synchronizer 的主要作业是轮询和下载由管理层面提供的运行时合同。合同传达的信息包括 API 代理、API 产品、缓存和虚拟主机。
在运行时层面运行的 Synchronizer 实例应定期轮询管理层面、下载合同,并将其提供给本地运行时实例。
一个 Synchronizer 可以支持同一个 pod 中部署的多个信息处理机。
启用 Synchronizer 访问权限
您必须授予 Synchronizer 权限,才能从管理层面中拉取 Apigee 软件工件,例如代理软件包和资源。您必须调用 Apigee API 以授权 Synchronizer 将工件从管理层面向下提取到运行时层面。
- 确保您已按照 GCP 设置步骤中的说明启用了 Apigee API。有关详情,请参阅第 3 步:启用 API。
- 找到作为创建服务帐号的一部分而下载的允许写入的 GCP 服务帐号密钥(JSON 文件)。该服务帐号名为“apigee-org-admin”,并且拥有 Apigee Org Admin 角色。如果您之前未创建此服务帐号,则必须先执行此操作,然后才能继续。
- 通过以下任一方法,使用 Apigee Org Admin 服务帐号密钥生成 OAuth 2.0 访问令牌。需要使用此令牌对 Apigee API 进行身份验证。
gcloud
使用 gcloud 获取 OAuth 2.0 访问令牌,传递您使用
GOOGLE_APPLICATION_CREDENTIALS
环境变量下载的服务帐号凭据 JSON 文件: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。
oauth2l 实用程序
使用 oauth2l 获取 OAuth 2.0 访问令牌,传递您在第 1 步中下载的服务帐号凭据 JSON 文件。
oauth2l fetch --json your_sa_credentials_file.json cloud-platform
- 复制返回的 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 Synchronizer Manager 角色的服务帐号的名称。该名称的格式类似于电子邮件地址。例如: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"]}'
如需详细了解此 API,请参阅 SyncAuthorization 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 ''
输出类似于以下内容:
{ "identities":[ "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com" ], "etag":"BwWJgyS8I4w=" }