配置 Synchronizer

本部分介绍 Synchronizer。

Synchronizer 概览

在 Apigee Hybrid 中,Synchronizer 的主要作业是轮询和下载由管理层面提供的运行时合同。合同传达的信息包括 API 代理、API 产品、缓存和虚拟主机。

在运行时层面运行的 Synchronizer 实例应定期轮询管理层面、下载合同,并将其提供给本地运行时实例。

一个 Synchronizer 可以支持同一个 pod 中部署的多个信息处理机。

启用 Synchronizer 访问权限

您必须授予 Synchronizer 权限,才能从管理层面中拉取 Apigee 软件工件,例如代理软件包和资源。您必须调用 Apigee API 以授权 Synchronizer 将工件从管理层面向下提取到运行时层面。

  1. 确保您已按照 GCP 设置步骤中的说明启用了 Apigee API。有关详情,请参阅第 3 步:启用 API
  2. 找到作为创建服务帐号的一部分而下载的允许写入的 GCP 服务帐号密钥(JSON 文件)。该服务帐号名为“apigee-org-admin”,并且拥有 Apigee Org Admin 角色。如果您之前未创建此服务帐号,则必须先执行此操作,然后才能继续。
  3. 通过以下任一方法,使用 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
  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 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

  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 ''

    输出类似于以下内容:

    {
       "identities":[
          "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"
       ],
       "etag":"BwWJgyS8I4w="
    }