第 7 步:启用控制平面访问权限

为了让运行时平面和控制平面能够通信,您必须使用 updateControlPlaneAccess API 为同步器和分析发布商访问权限启用所需的权限。

获取授权令牌

如需进行本主题稍后介绍的 Apigee API 调用,您需要获取具有 Apigee Organization Admin 角色的授权令牌。

  1. 如果您不是与 Apigee Hybrid 组织关联的 Google Cloud 项目的所有者,请确保您的 Google Cloud 用户账号具有 roles/apigee.admin (Apigee Organization Admin) 角色。您可以使用以下命令检查分配给您的角色:
    gcloud projects get-iam-policy ${PROJECT_ID}  \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:your_account_email"
    

    例如:

    gcloud projects get-iam-policy my-project  \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:myusername@example.com"

    输出内容应包含 roles/apigee.admin

  2. 如果您没有 roles/apigee.admin,请将 Apigee Organization Admin 角色添加到您的用户账号。使用以下命令将角色添加到您的用户账号:
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
      --member user:your_account_email \
      --role roles/apigee.admin

    例如:

    gcloud projects add-iam-policy-binding my-project \
      --member user:myusername@example.com \
      --role roles/apigee.admin
  3. 在命令行中,使用以下命令获取 gcloud 身份验证凭据:

    Linux / MacOS

    export TOKEN=$(gcloud auth print-access-token)

    如需检查是否已填充令牌,请使用 echo,如以下示例所示:

    echo $TOKEN

    这应该会以编码字符串的形式显示令牌。

    Windows

    for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a

    如需检查是否已填充令牌,请使用 echo,如以下示例所示:

    echo %TOKEN%

    这应该会以编码字符串的形式显示令牌。

启用同步器访问权限

要启用 Syncer Access,请执行以下操作:

  1. 获取要授予同步器访问权限的服务账号的电子邮件地址。对于非生产环境(如本教程中所示),应采用 apigee-non-prod。对于生产环境,应采用 apigee-synchronizer。使用以下命令:
    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-synchronizer"
  2. 使用以下命令调用 updateControlPlaneAccess API 以为 Synchronizer 启用所需权限:

    无数据驻留

    curl -X PATCH -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess?update_mask=synchronizer_identities" \
      -d "{\"synchronizer_identities\": [\"serviceAccount:apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com\"]}"
    

    其中:

    • ${ORG_NAME}:您的混合组织的名称。
    • apigee-synchronizer${ORG_NAME}.iam.gserviceaccount.com:服务账号的电子邮件地址。

    数据驻留

    curl -X PATCH -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess?update_mask=synchronizer_identities" \
      -d "{\"synchronizer_identities\": [\"serviceAccount:apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com\"]}"
    

    其中:

    • CONTROL_PLANE_LOCATION:如果 Hybrid 安装使用数据驻留,则为控制平面数据的位置。这是存储代理软件包等客户核心内容的位置。如需查看列表,请参阅可用的 Apigee API 控制平面区域
    • ${ORG_NAME}:您的 Hybrid 组织的名称。
    • apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com:服务账号的电子邮件地址。
  3. 如需验证服务账号是否已设置,请使用以下命令调用 API 以获取服务账号列表:

    无数据驻留

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess"
        

    数据驻留

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess"
        

    输出应类似如下所示:

    {
      "synchronizerIdentities": [
        "serviceAccount:apigee-synchronizer@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ]
    }

启用 Google Analytics 发布商访问权限

多个 Apigee Hybrid 运行时组件会发布分析和调试记录,以提供用于报告和调试的信息。如需启用此类数据的发布功能,您需要向运行这些 Apigee 组件的服务账号授予额外权限,以便直接将数据发布到控制平面。

如需启用 Google Analytics 发布商访问权限,请执行以下操作:

  1. 使用以下命令为运行时服务账号设置权限,以便将数据发布到控制平面:

    无数据驻留

    curl -X  PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"

    数据驻留

    curl -X  PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"

    响应应类似如下所示:

    {
      "name": "organizations/YOUR_ORG_NAME/operations/8316aa78-c137-4733-92ec-cc0d2d92fd29",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "UPDATE",
        "targetResourceName": "organizations/YOUR_ORG_NAME/controlPlaneAccess",
        "state": "IN_PROGRESS"
      }
    }
    
  2. 使用更新响应中的 name 参数验证操作状态:

    无数据驻留

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
      -H "Content-Type:application/json"  \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/8316aa78-c137-4733-92ec-cc0d2d92fd29"

    数据驻留

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
      -H "Content-Type:application/json"  \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/8316aa78-c137-4733-92ec-cc0d2d92fd29"

    响应应如下所示:

    {
      "name": "organizations/YOUR_ORG_NAME/operations/8316aa78-c137-4733-92ec-cc0d2d92fd29",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "UPDATE",
        "targetResourceName": "organizations/YOUR_ORG_NAME/controlPlaneAccess",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.ControlPlaneAccess",
        "name": "organizations/YOUR_ORG_NAME/controlPlaneAccess"
      }
    }
    
  3. 验证组织的 ControlPlaneAccess 配置:

    无数据驻留

    curl "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"

    数据驻留

    curl "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"

    响应应如下所示:

    {
      "synchronizerIdentities": [
        "serviceAccount:apigee-synchronizer@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ],
      "analyticsPublisherIdentities": [
        "serviceAccount:apigee-runtime@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ]
    }
    

您现在已启用 Apigee Hybrid 运行时和管理平面进行通信。接下来,安装 cert-manager 以使 Apigee Hybrid 解读和管理证书。

下一步

1 2 3 4 5 6 7 (下一步)第 8 步:安装 cert-manager 9 10 11