第 4 步:在 GKE 上安装 Hybrid

将配置应用于集群

要将 Apigee Hybrid 安装到您的集群中,请执行以下操作:

  1. 确保您位于 hybrid-base-directory/hybrid-files 目录中。
  2. 验证是否将 kubectl 设置为正确的上下文。应将当前上下文设置为要部署到的集群:
    kubectl config get-contexts
  3. 执行 init 命令:
    $APIGEECTL_HOME/apigeectl init -f overrides/overrides.yaml

    init 命令会安装 Apigee 部署服务 Apigee Deployment Controller 和 Apigee Admission Webhook,并部署非 Apigee 组件 IstioCert Manager

  4. 若要检查部署的状态,您可以使用以下命令:
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides.yaml

    kubectl get pods -n apigee-system

    kubectl get pods -n istio-system

    Pod 准备就绪后,请转到下一步。

  5. 执行“试运行”安装。使用 --dry-run=true 标志执行 apply 命令。通过执行试运行,可以在对集群进行任何更改之前检查是否有任何错误。
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --dry-run=true
  6. 如果没有错误,您可以将 Apigee 特定运行时组件应用到集群:
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml
  7. 若要检查部署的状态,请执行以下操作:
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides.yaml

    重复此步骤,直到 Pod 都已准备就绪。这些 Pod 可能需要几分钟时间才能启动。

启用同步器访问权限

  1. 创建一个 GCP 服务账号并为其添加 Apigee Organization Admin 角色。此服务账号将用于对您将在下一步中执行的 API 调用进行身份验证。您可以通过 GCP Console 轻松创建服务账号。如需查看相关说明,请参阅 GCP 文档中的创建和管理服务账号
  2. 将服务账号密钥下载到您的系统中。按照 GCP 文档中的创建服务账号密钥中的说明执行操作。
  3. 将下载的服务账号密钥移至您的服务账号目录:/hybrid-base-directory/hybrid-files/service-accounts
  4. 执行以下两个命令来获取令牌:
    export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    export TOKEN=$(gcloud auth application-default print-access-token)

    其中,org-admin-service-account-file 是系统中指向下载的含 Apigee Organization Admin 角色的服务账号密钥的路径。

  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-email"]}'
    

    其中:

    • your_org_name:您的 Hybrid 组织的名称。
    • synchronizer-manager-service-account-email:拥有 Apigee Synchronizer Manager 角色的服务账号的名称。 该名称的格式类似于电子邮件地址。例如:apigee-synchronizer@my-project.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:apigee-synchronizer@my-project.iam.gserviceaccount.com"]}'
    
  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="
    }
        

将 MART 主机别名添加到您的组织

您必须将 MART 端点的主机别名添加到您的 Apigee 组织。您之前在替换文件中设置 mart.hostAlias 属性的值时设置了此值。管理平面需要此地址,以便能够通过 MART 与运行时平面进行通信。

按照以下步骤将 MART 主机别名添加到您的组织:

  1. 获取您之前在替换文件中为 mart.hostAlias 属性设置的值。要使 MART 正常运行,主机别名必须是完全限定的域名。
  2. 启用同步器访问权限部分,找到您之前下载的含 Apigee Organization Admin 角色的服务账号密钥。
  3. 执行以下两个命令来获取令牌:
    export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    export TOKEN=$(gcloud auth application-default print-access-token)

    其中,org-admin-service-account-file 是系统中指向下载的含 Apigee Organization Admin 角色的服务账号密钥的路径。

  4. 调用以下管理 API 以使用 MART 端点更新您的组织:
    curl -v -X PUT \
       https://apigee.googleapis.com/v1/organizations/your_org_name \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $TOKEN" \
      -d '{
      "name" : "your_org_name",
      "properties" : {
        "property" : [ {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.mart.server.endpoint",
          "value" : "https://HOST_ALIAS_DNS"
        } ]
      }
    }'

    示例如下。请务必向主机别名添加前缀“https://”。

    curl -v -X PUT \
       https://apigee.googleapis.com/v1/organizations/my_organization \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $TOKEN" \
      -d '{
      "name" : "my_organization",
      "properties" : {
        "property" : [ {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.mart.server.endpoint",
          "value" : "https://foo-mart.example.com"
        } ]
      }
    }'

保存替换文件

务必保存您的替换文件。您需要使用此文件来对集群配置执行未来升级、补丁程序或任何其他修改。