本部分介绍 Synchronizer。
Synchronizer 概览
在 Apigee Hybrid 中,Synchronizer 的主要作业是轮询和下载由管理层面提供的运行时合同。合同传达的信息包括 API 代理、API 产品、缓存和虚拟主机。默认情况下,Synchronizer 将环境配置数据存储在 Cassandra 数据库中。
在运行时层面运行的 Synchronizer 实例应定期轮询管理层面、下载合同,并将其提供给本地运行时实例。
一个 Synchronizer 可以支持同一个 pod 中部署的多个信息处理机。
启用 Synchronizer 访问权限
您必须授予 Synchronizer 权限,才能从管理层面中拉取 Apigee 软件工件,例如代理软件包和资源。您必须调用 Apigee API 以授权 Synchronizer 将工件从管理层面向下提取到运行时层面。
- 确保您已按照 Google Cloud 设置步骤中的说明启用了 Apigee API。如需了解详情,请参阅启用 API。
- 找到在创建服务账号和凭据中下载的允许写入的 Google Cloud 服务账号密钥(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。
- 复制返回的 OAuth 2.0 令牌并将其存储在变量中,例如
TOKEN
。例如:export TOKEN=ya29....Ts13inj3LrqMJlztwygtM
- 调用 setSyncAuthorization 以启用 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,请参阅 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 ''
输出类似于以下内容:
{ "identities":[ "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com" ], "etag":"BwWJgyS8I4w=" }