第 1 步:创建集群

此步骤介绍了如何创建将运行 Apigee Hybrid 的集群。这些说明因运行 Hybrid 的平台而异。

专用集群与共享集群

您可以为 Apigee Hybrid 创建新的专用集群(如本步骤中所述),也可以将其安装在运行其他工作负载的集群中。

  • 专用集群:(推荐)为 Apigee Hybrid 创建专用集群会添加隔离功能,并简化维护集群及其 Apigee Hybrid 工作负载所需的整体工作量。
  • 共享集群:(非常见)如果在运行其他工作负载的集群中安装 Apigee Hybrid,您需要升级和维护您的集群的版本和特性,这些版本和特性是 Apigee Hybrid 和其他工作负载所需要的。如果支持的版本和要求之间发生冲突,您可能需要制定一个计划来迁移一个或多个工作负载。

建议使用专用集群。共享集群配置是一种高级用例,在安装步骤中不会进一步讨论。

创建您的集群

请遵循适用于您所选平台的步骤:

GKE

在 GKE 上创建集群

以下步骤介绍了如何在 Google Cloud 项目中配置和创建 GKE 集群。

Apigee 建议您创建区域级集群,而不是可用区级集群。如果您不熟悉区域和可用区之间的区别,请参阅区域和可用区可用的区域和可用区中列出了可用的区域。例如,请注意 us-west1 是有效的区域名称,而 us-west1-a 是该区域中的可用区。

  1. 确保您使用的是 Hybrid 1.9.4 版支持的 GKE 版本。请参阅 Apigee Hybrid 支持的平台和版本
  2. 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
  3. (仅限 GKE 专用集群)如果您要创建专用集群,请添加防火墙规则以允许端口 9443 在 GKE 主节点和 GKE 工作器节点之间进行通信,并允许 GKE 主服务器访问 Apigee 更改网络钩子。按照 Google Kubernetes Engine 文档中的针对特定用例添加防火墙规则中的过程操作。如需了解详情,请参阅 GKE 中的专用集群

    如果您要创建标准集群或公共集群,则无需添加此规则。

  4. 按照创建具有多可用区节点池的区域级集群中的说明创建集群。您可以仅使用默认节点池创建集群。您将在下一步中配置并创建所需的 Apigee Hybrid 节点池。

    仅当集群创建过程成功完成后,才转到下一步。

  5. 按照添加和管理节点池中的说明创建两个节点池。请务必使用下表中列出的最低要求来配置节点池。

    关于节点池的最低要求

    创建节点池时,请务必满足这些最低要求。 如果使用 Cloud 控制台,请务必同时配置节点池详情节点部分。

    节点池名称 说明 节点数下限 机器类型
    下限
    apigee-data 用于 Cassandra 数据库的有状态节点池。 每个可用区 1 个
    (每个区域 3 个)
    e2-standard-4
    (4 个 vCPU,16 GB 内存)
    apigee-runtime 运行时消息处理器使用的无状态节点池。 每个可用区 1 个
    (每个区域 3 个)
    e2-standard-4
    (4 个 vCPU,16 GB 内存)

    如需详细了解节点池配置,请参阅配置专用节点池

  6. (可选)如果需要,您可以删除 default 节点池。请参阅删除节点池
  7. 确保您的集群已设置为适用于 kubectl 的默认集群。请参阅为 kubectl 命令设置默认集群
  8. 为 Cassandra 配置永久性固态硬盘 (SSD) 存储空间。我们不支持使用本地 SSD。如需了解详情,请参阅 Kubernetes 文档中的更改默认存储类

    1. 获取当前默认 StorageClass 的名称:
      kubectl get sc

      例如:

      kubectl get sc
        NAME                    PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        premium-rwo             pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard                kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo (default)  pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
    2. 描述名为 standard-rwo 的 StorageClass。请注意,其类型为 pd-balanced
      kubectl describe sc standard-rwo

      例如:

      kubectl describe sc standard-rwo
      Name:                  standard-rwo
        IsDefaultClass:        Yes
        Annotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
        Provisioner:           pd.csi.storage.gke.io
        Parameters:            type=pd-balanced
        AllowVolumeExpansion:  True
        MountOptions:          <none>
        ReclaimPolicy:         Delete
        VolumeBindingMode:     WaitForFirstConsumer
        Events:                <none>
    3. 创建一个名为 storageclass.yaml 的新文件。
    4. 将此代码添加到文件中。请注意,新类的名称是 apigee-sc。您可以根据自己的喜好使用任何名称。此外,请注意存储类型为 pd-ssd
      ---
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: "apigee-sc"
      provisioner: kubernetes.io/gce-pd
      parameters:
        type: pd-ssd
        replication-type: none
      volumeBindingMode: WaitForFirstConsumer
      allowVolumeExpansion: true
    5. 将新 StorageClass 应用于 Kubernetes 集群:
      kubectl apply -f storageclass.yaml
    6. 执行以下两个命令以更改默认 StorageClass:
      kubectl patch storageclass standard-rwo \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
      kubectl patch storageclass apigee-sc \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    7. 执行以下命令,以验证新的默认 StorageClass 是否名为 apigee-sc
      kubectl get sc

      例如:

      kubectl get sc
        NAME                  PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        apigee-sc (default)   kubernetes.io/gce-pd    Delete          WaitForFirstConsumer   true                   14h
        premium-rwo           pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard              kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo          pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
  9. 创建以下环境变量:这些变量用于后续的 gcloud 命令。

    Linux / MacOS

    export CLUSTER_NAME="YOUR_CLUSTER_NAME"
    export CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"

    Windows

    set CLUSTER_NAME="YOUR_CLUSTER_NAME"
    set CLUSTER_LOCATION=YOUR_CLUSTER_LOCATION
    set PROJECT_ID=YOUR_PROJECT_ID

    其中:

    • CLUSTER_NAME:您的集群的名称。
    • CLUSTER_LOCATION:您在其中创建集群的区域。
  10. 验证节点池配置:

    区域级集群

    gcloud container node-pools list \
      --cluster=${CLUSTER_NAME} \
      --region=${CLUSTER_LOCATION} \
      --project=${PROJECT_ID}

    可用区级集群

    gcloud container node-pools list \
      --cluster=${CLUSTER_NAME} \
      --zone=${CLUSTER_LOCATION} \
      --project=${PROJECT_ID}
  11. 对集群启用 Workload Identity。此操作最多可能需要 30 分钟才能完成:

    区域级集群

    gcloud container clusters update ${CLUSTER_NAME} \
      --workload-pool=${PROJECT_ID}.svc.id.goog \
      --project ${PROJECT_ID} \
      --region ${CLUSTER_LOCATION}

    可用区级集群

    gcloud container clusters update ${CLUSTER_NAME} \
      --workload-pool=${PROJECT_ID}.svc.id.goog \
      --zone ${CLUSTER_LOCATION} \
      --project ${PROJECT_ID}

    如需了解详情,请参阅启用 Workload Identity

  12. 使用以下命令获取刚刚创建的集群的 gcloud 凭据:

    区域级集群

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
      --region ${CLUSTER_LOCATION} \
      --project ${PROJECT_ID}

    可用区级集群

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
      --zone ${CLUSTER_LOCATION} \
      --project ${PROJECT_ID}
  13. 对于 GKE 上的安装,Apigee 可以使用 Workload Identity 与 Google Cloud 服务关联,而无需将 Google 服务账号与本地存储的证书结合使用。您可以在为 Apigee Hybrid 启用 Workload Identity 中详细了解 Workload Identity。

    可选:使用以下命令对每个节点池启用 Workload Identity。每个节点池最多可能需要 30 分钟时间才能完成此操作。

    区域级集群

    gcloud container node-pools update apigee-data \
      --cluster=$CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA
    gcloud container node-pools update apigee-runtime \
      --cluster=$CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    可用区级集群

    gcloud container node-pools update apigee-data \
      --cluster=$CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA
    gcloud container node-pools update apigee-runtime \
      --cluster=$CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

安装并运行集群后,请转到下一步。

GKE On-Prem

在 GKE On-Prem 上创建集群

以下步骤介绍了如何为 Apigee Hybrid 配置和创建 GKE On-Prem 集群。

  1. 确保您使用的是 Hybrid 1.9.4 版支持的 Anthos 本地 VMWare 版本。请参阅 Apigee Hybrid 支持的平台和版本
  2. 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
  3. 按照创建基本集群中的说明创建集群。您可以仅使用默认节点池创建集群。您将在下一步中配置并创建所需的 Apigee Hybrid 节点池。

    仅当集群创建过程成功完成后,才转到下一步。

  4. 按照创建和管理节点池中的说明创建两个节点池。使用下表中列出的最低要求配置节点池。

    关于节点池的最低要求

    创建节点池时,请务必满足这些最低要求。

    节点池名称 说明 节点数下限 机器类型
    下限
    apigee-data 用于 Cassandra 数据库的有状态节点池。 每个可用区 1 个
    (每个区域 3 个)
    e2-standard-4
    (4 个 vCPU,16 GB 内存)
    apigee-runtime 运行时消息处理器使用的无状态节点池。 每个可用区 1 个
    (每个区域 3 个)
    e2-standard-4
    (4 个 vCPU,16 GB 内存)

    如需详细了解节点池配置,请参阅配置专用节点池

  5. (可选)如果需要,您可以删除 default 节点池。请参阅删除节点池
  6. 为 Cassandra 配置永久性固态硬盘 (SSD) 存储空间。 我们不支持使用本地 SSD。如需了解详情,请参阅 Kubernetes 文档中的更改默认存储类

    1. 获取当前默认 StorageClass 的名称:
      kubectl get sc

      例如:

      kubectl get sc
        NAME                    PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        premium-rwo             pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard                kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo (default)  pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
    2. 描述名为 standard-rwo 的 StorageClass。请注意,其类型为 pd-balanced
      kubectl describe sc standard-rwo

      例如:

      kubectl describe sc standard-rwo
      Name:                  standard-rwo
      IsDefaultClass:        Yes
      Annotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
      Provisioner:           pd.csi.storage.gke.io
      Parameters:            type=pd-balanced
      AllowVolumeExpansion:  True
      MountOptions:          <none>
      ReclaimPolicy:         Delete
      VolumeBindingMode:     WaitForFirstConsumer
      Events:                <none>
    3. 创建一个名为 storageclass.yaml 的新文件。
    4. 将此代码添加到文件中。请注意,新类的名称是 apigee-sc。您可以根据自己的喜好使用任何名称。此外,请注意存储类型为 pd-ssd
      ---
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: "apigee-sc"
      provisioner: kubernetes.io/gce-pd
      parameters:
        type: pd-ssd
        replication-type: none
      volumeBindingMode: WaitForFirstConsumer
      allowVolumeExpansion: true
    5. 将新 StorageClass 应用于 Kubernetes 集群:
      kubectl apply -f storageclass.yaml
    6. 执行以下两个命令以更改默认 StorageClass:
      kubectl patch storageclass standard-rwo \
        -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
      kubectl patch storageclass apigee-sc \
        -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    7. 执行以下命令,以验证新的默认 StorageClass 是否名为 apigee-sc
      kubectl get sc

      例如:

      kubectl get sc
        NAME                  PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        apigee-sc (default)   kubernetes.io/gce-pd    Delete          WaitForFirstConsumer   true                   14h
        premium-rwo           pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard              kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo          pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h

安装并运行集群后,请转到下一步。

Anthos on Bare Metal

在 Anthos on Bare Metal 上创建集群

以下步骤介绍了如何在 Anthos on Bare Metal 上为 Apigee Hybrid 配置和创建集群。Anthos on Bare Metal 允许您直接在自己的机器资源上运行 Kubernetes 集群。

  1. 确保您使用的是 Hybrid 1.9.4 版支持的 Anthos on Bare Metal 版本。请参阅 Apigee Hybrid 支持的平台和版本
  2. 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
  3. 查看安装前提条件概览创建集群:概览
  4. 创建有两个节点池的集群,其配置如下所述:
    • 按照集群创建说明 Anthos clusters on Bare Metal 快速入门执行操作。
    • 至少创建两个节点池:使用下表中列出的最低要求配置节点池。

      集群的最低配置如下:

      配置 有状态节点池 无状态节点池
      用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。
      标签名称 apigee-data apigee-runtime
      节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个)
      CPU 4 4
      RAM 15 15
      存储 动态 通过 ApigeeDeployment CRD 进行管理
      最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。

      如需详细了解最低集群配置,请参阅最低集群配置

安装并运行集群后,请转到下一步。

AKS

在 AKS 上创建集群

以下步骤介绍了如何在 AKS 上为 Apigee Hybrid 配置和创建集群。

  1. 确保您使用的是 Hybrid 1.9.4 版支持的 AKS 版本。请参阅 Apigee Hybrid 支持的平台和版本
  2. 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
  3. 使用 Azure CLIAzure 门户创建集群,并按如下说明创建两个节点池。

    集群的最低配置如下:

    配置 有状态节点池 无状态节点池
    用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。
    标签名称 apigee-data apigee-runtime
    节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个)
    CPU 4 4
    RAM 15 15
    存储 动态 通过 ApigeeDeployment CRD 进行管理
    最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。

    如需详细了解最低集群配置,请参阅最低集群配置

  4. 安装并运行集群后,请转到下一步。

EKS

在 EKS 上创建集群

以下步骤介绍了如何在 EKS 上为 Apigee Hybrid 配置和创建集群。

  1. 确保您使用的是 Hybrid 1.9.4 版支持的 EKS 版本。请参阅 Apigee Hybrid 支持的平台和版本
  2. 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
  3. 如果您使用的是 Kubernetes 1.24 版或更高版本,请确保已安装适用于 Amazon EBS 的 Kubernetes CSI 驱动程序
  4. 按照以下说明创建用户集群,并按如下说明创建两个节点池。

    集群的最低配置如下:

    配置 有状态节点池 无状态节点池
    用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。
    标签名称 apigee-data apigee-runtime
    节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个)
    CPU 4 4
    RAM 15 15
    存储 动态 通过 ApigeeDeployment CRD 进行管理
    最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。

    如需详细了解最低集群配置,请参阅最低集群配置

安装并运行集群后,请转到下一步。

GKE on AWS

在 GKE on AWS 上创建集群

以下步骤介绍了如何在 GKE on AWS 上为 Apigee Hybrid 配置和创建集群。

  1. 确保您使用的是 Hybrid 1.9.4 版支持的 GKE 版本。请参阅 Apigee Hybrid 支持的平台和版本
  2. 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
  3. 按照以下说明创建用户集群,并按如下说明创建两个节点池。

    集群的最低配置如下:

    配置 有状态节点池 无状态节点池
    用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。
    标签名称 apigee-data apigee-runtime
    节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个)
    CPU 4 4
    RAM 15 15
    存储 动态 通过 ApigeeDeployment CRD 进行管理
    最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。

    如需详细了解最低集群配置,请参阅最低集群配置

安装并运行集群后,请转到下一步。

OpenShift

在 OpenShift 上创建集群

以下步骤介绍了如何在 OpenShift 上为 Apigee Hybrid 配置和创建集群。

  1. 确保您使用的是 Hybrid 1.9.4 版支持的 OpenShift 版本。请参阅 Apigee Hybrid 支持的平台和版本
  2. 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
  3. 构建要部署到运行时平面的 OpenShift 集群,在 OpenShift 用户集群上安装 Apigee,并创建两个节点池。

    在 OpenShift 安装过程中,安装和配置 oc CLI 工具。请参阅 OpenShift 文档中的 OpenShift CLI 使用入门

    集群的最低配置如下:

    配置 有状态节点池 无状态节点池
    用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。
    标签名称 apigee-data apigee-runtime
    节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个)
    CPU 4 4
    RAM 15 15
    存储 动态 通过 ApigeeDeployment CRD 进行管理
    最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。

    如需详细了解最低集群配置,请参阅最低集群配置

安装集群后,请转到下一步。

 

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