第 4 步:在 GKE On-Prem 上安装 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 可能需要几分钟时间才能启动。

在 /etc/hosts 中为 Cassandra 添加静态主机名(仅限 Anthos 1.2.x)

在此步骤中,您将获得分配给 Cassandra 的工作器节点的 IP 和主机名,并将其添加到 /etc/hosts 文件中。使用主机网络时,pod 使用节点主机名和 IP。节点主机名不在 DNS 中;因此,您必须在 /etc/hosts 中为每个 Cassandra 工作器节点添加静态主机名条目。

  1. 执行此命令以获取 Cassandra 工作器节点。参数 apigee-data 是分配给 Cassandra 的默认节点标签。如果您使用了其他节点标签,请替换您使用的节点标签。请参阅如何为工作器节点添加标签
    kubectl  get nodes -l apigee.com/apigee-nodepool=apigee-data -o wide

    输出示例:

    kubectl get nodes -o wide my-cluster1-844788cc8c-2gx7d
    
    NAME                           STATUS   ROLES    AGE   VERSION          INTERNAL-IP    EXTERNAL-IP    OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
    my-cluster1-844788cc8c-2gx7d   Ready    none     19d   v1.14.7-gke.24   21.0.129.248   21.0.129.248   Ubuntu 18.04.3 LTS   4.15.0-62-generic   docker://17.3.2
  2. 请将上一个命令为每个 Cassandra 工作器节点返回的节点名称和外部 IP 添加到您的 /etc/hosts 文件中:
    cat /etc/hosts
    
    127.0.0.1 localhost
    21.0.129.248   my-cluster1-844788cc8c-2gx7d
    

启用同步器访问权限

  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 以启用同步器所需的权限:
    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 IP 添加到您的组织

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

请按照以下步骤将 MART IP 添加到您的组织:

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

保存替换文件

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