此步骤介绍了如何创建将运行 Apigee Hybrid 的集群。这些说明因运行 Hybrid 的平台而异。在开始之前,请务必查看以下信息:
创建您的集群
请遵循适用于您所选平台的步骤:
GKE
在 GKE 上创建集群
以下步骤介绍了如何在 Google Cloud 项目中配置和创建 GKE 集群。
Apigee 建议创建区域级集群,而不是可用区级集群。如果您不熟悉区域和可用区之间的区别,请参阅区域和可用区。可用的区域和可用区中列出了可用的区域。例如,请注意 us-west1
是有效的区域名称,而 us-west1-a
是该区域中的可用区。
- 确保您使用的是 Hybrid 1.12.2 版支持的 GKE 版本。请参阅 Apigee Hybrid 支持的平台和版本。
- 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
- (仅限 GKE 专用集群)如果您要在 GKE 上创建专用集群,请添加防火墙规则以允许端口 9443 在 GKE 主节点和 GKE 工作器节点之间进行通信,并允许 GKE 主实例访问 Apigee 变更 webhook。按照 Google Kubernetes Engine 文档中的针对特定用例添加防火墙规则中的过程操作。如需了解详情,请参阅 GKE 中的专用集群。
如果您要创建标准集群或公共集群,则无需添加此规则。
- 按照创建具有多可用区节点池的区域级集群中的说明创建标准集群。
您可以仅使用默认节点池创建集群。您将在下一步中配置并创建所需的 Apigee Hybrid 节点池。
仅当集群创建过程成功完成后,才转到下一步。
- 按照添加和管理节点池中的说明创建两个节点池。请务必使用下表中列出的最低要求来配置节点池。
关于节点池的最低要求
创建节点池时,请务必满足这些最低要求。 请务必根据您要构建的 Apigee Hybrid 安装选择生产环境或非生产环境的值。非生产环境安装适用于测试和演示,但不足以满足生产环境流量的需求。如果您使用的是 Cloud 控制台,请务必同时配置节点池详情和节点部分。
节点池名称 说明 节点数下限 生产环境
机器类型
最小值非生产环境
机器类型
最小值apigee-data
用于 Cassandra 数据库的有状态节点池。 每个可用区 1 个
(每个区域 3 个)e2-standard-8
(8 个 vCPU,32 GB 内存)e2-standard-4
(4 个 vCPU,16 GB 内存)apigee-runtime
运行时消息处理器使用的无状态节点池。 每个可用区 1 个
(每个区域 3 个)e2-standard-8
(8 个 vCPU,32 GB 内存)e2-standard-4
(4 个 vCPU,16 GB 内存)如需详细了解节点池配置,请参阅配置专用节点池。
- (可选)如果需要,您可以删除
default
节点池。请参阅删除节点池。 - 创建以下环境变量(如果尚未创建)。这些变量在以下 gcloud 命令中使用。
Linux / MacOS
export CLUSTER_NAME="YOUR_CLUSTER_NAME"
export CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
export PROJECT_ID="YOUR_PROJECT_ID"
Windows
set CLUSTER_NAME="YOUR_CLUSTER_NAME"
set CLUSTER_LOCATION=YOUR_CLUSTER_LOCATION
set PROJECT_ID=YOUR_PROJECT_ID
其中:
-
CLUSTER_NAME
:您的集群的名称。 -
CLUSTER_LOCATION
:您在其中创建集群的区域。 -
PROJECT_ID
:您的 Google Cloud 项目 ID。
-
- 验证节点池配置:
区域级集群
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}
- 确保将集群设置为
kubectl
的默认集群,方法是获取 您刚刚创建的集群的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}
-
为 Cassandra 配置永久性固态硬盘 (SSD) 存储空间。我们不支持使用本地 SSD。如需了解详情,请参阅 Kubernetes 文档中的更改默认存储类。
- 获取当前默认 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 - 描述名为
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>
- 创建一个名为
storageclass.yaml
的新文件。 - 将此代码添加到文件中。请注意,新存储类别的名称是
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
- 将新 StorageClass 应用于 Kubernetes 集群:
kubectl apply -f storageclass.yaml
- 执行以下两个命令以更改默认 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"}}}'
- 执行以下命令,以验证新的默认 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
- 获取当前默认 StorageClass 的名称:
- 为集群启用 Workload Identity。Workload Identity 允许 GKE 集群中的工作负载模拟 Identity and Access Management (IAM) 服务账号来访问 Google Cloud 服务。此操作最多可能需要 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 是否已成功启用;
区域级集群
gcloud container clusters describe ${CLUSTER_NAME} \ --project ${PROJECT_ID} \ --region ${CLUSTER_LOCATION} | grep -i "workload"
可用区级集群
gcloud container clusters describe ${CLUSTER_NAME} \ --zone ${CLUSTER_LOCATION} \ --project ${PROJECT_ID} | grep -i "workload"
安装并运行集群后,请转到下一步。
VMware 上的 Google Distributed Cloud
在 VMware 上创建集群
以下步骤介绍了如何在 Google Distributed Cloud on VMware 纯软件部署中为 Apigee Hybrid 配置和创建 GKE 集群。
- 确保您使用的是 Hybrid 1.12.2 版支持的 Google Distributed Cloud 版本。 请参阅 Apigee Hybrid 支持的平台和版本。
- 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
- 按照创建基本集群中的说明创建集群。您可以仅使用默认节点池创建集群。您将在下一步中配置并创建所需的 Apigee Hybrid 节点池。
仅当集群创建过程成功完成后,才转到下一步。
- 按照创建和管理节点池中的说明创建两个节点池。使用下表中列出的最低要求配置节点池。
关于节点池的最低要求
创建节点池时,请务必满足这些最低要求。 根据您要构建的 Apigee Hybrid 安装环境,选择生产环境或非生产环境的值。非生产环境安装适用于测试和演示,但不足以满足生产环境流量的需求。
节点池名称 说明 节点数下限 生产环境
机器类型
最小值非生产环境
机器类型
最小值apigee-data
用于 Cassandra 数据库的有状态节点池。 每个可用区 1 个
(每个区域 3 个)e2-standard-8
(8 个 vCPU,16 GB 内存)e2-standard-4
(4 个 vCPU,16 GB 内存)apigee-runtime
运行时消息处理器使用的无状态节点池。 每个可用区 1 个
(每个区域 3 个)e2-standard-8
(8 个 vCPU,16 GB 内存)e2-standard-4
(4 个 vCPU,16 GB 内存)如需详细了解节点池配置,请参阅配置专用节点池。
- (可选)如果需要,您可以删除
default
节点池。请参阅删除节点池。 -
为 Cassandra 配置永久性固态硬盘 (SSD) 存储空间。 我们不支持使用本地 SSD。如需了解详情,请参阅 Kubernetes 文档中的更改默认存储类。
- 获取当前默认 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 - 描述名为
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>
- 创建一个名为
storageclass.yaml
的新文件。 - 将此代码添加到文件中。请注意,新存储类别的名称是
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
- 将新 StorageClass 应用于 Kubernetes 集群:
kubectl apply -f storageclass.yaml
- 执行以下两个命令以更改默认 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"}}}'
- 执行以下命令,以验证新的默认 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
- 获取当前默认 StorageClass 的名称:
安装并运行集群后,请转到下一步。
裸金属上的 Google Distributed Cloud
在裸金属上创建集群
以下步骤介绍了如何在 Google Distributed Cloud on Bare Metal 纯软件部署中为 Apigee Hybrid 配置和创建 GKE 集群。 借助 Google Distributed Cloud on Bare Metal,您可以直接在自己的机器资源上运行 Kubernetes 集群。
- 确保您使用的是 Hybrid 1.12.2 版支持的 Google Distributed Cloud 版本。 请参阅 Apigee Hybrid 支持的平台和版本。
- 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
- 查看安装前提条件概览和创建集群:概览。
- 创建有两个节点池的集群,其配置如下所述:
- 按照创建基本集群中的创建集群说明操作。
- 至少创建两个节点池:使用下表中列出的最低要求配置节点池。
集群的最低配置如下:
配置 有状态节点池 无状态节点池 用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。 标签名称 apigee-data apigee-runtime 节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个) CPU 8(生产环境)
4(非生产环境)8(生产环境)
4(非生产环境)RAM 32(生产环境)
16(非生产环境)32(生产环境)
16(非生产环境)存储 动态 通过 ApigeeDeployment CRD 进行管理 最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 每种机器实例类型的网络带宽 1 Gbps 1 Gbps 如需详细了解最低集群配置,请参阅最低集群配置
安装并运行集群后,请转到下一步。
AKS
在 AKS 上创建集群
以下步骤介绍了如何在 AKS 上为 Apigee Hybrid 配置和创建集群。
- 确保您使用的是 Hybrid 1.12.2 版支持的 AKS 版本。请参阅 Apigee Hybrid 支持的平台和版本。
- 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
- 使用 Azure CLI 或 Azure 门户创建集群,并按如下说明创建两个节点池。
集群的最低配置如下:
配置 有状态节点池 无状态节点池 用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。 标签名称 apigee-data apigee-runtime 节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个) CPU 8(生产环境)
4(非生产环境)8(生产环境)
4(非生产环境)RAM 32(生产环境)
16(非生产环境)32(生产环境)
16(非生产环境)存储 动态 通过 ApigeeDeployment CRD 进行管理 最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 每种机器实例类型的网络带宽 1 Gbps 1 Gbps 如需详细了解最低集群配置,请参阅最低集群配置
安装并运行集群后,请转到下一步。
EKS
在 EKS 上创建集群
以下步骤介绍了如何在 EKS 上为 Apigee Hybrid 配置和创建集群。
- 确保您使用的是 Hybrid 1.12.2 版支持的 EKS 版本。请参阅 Apigee Hybrid 支持的平台和版本。
- 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
- 如果您使用的是 Kubernetes 1.24 版或更高版本,请确保已安装适用于 Amazon EBS 的 Kubernetes CSI 驱动程序。
- 按照以下说明创建用户集群,并按如下说明创建两个节点池。
集群的最低配置如下:
配置 有状态节点池 无状态节点池 用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。 标签名称 apigee-data apigee-runtime 节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个) CPU 8(生产环境)
4(非生产环境)8(生产环境)
4(非生产环境)RAM 32(生产环境)
16(非生产环境)32(生产环境)
16(非生产环境)存储 动态 通过 ApigeeDeployment CRD 进行管理 最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 每种机器实例类型的网络带宽 1 Gbps 1 Gbps 如需详细了解最低集群配置,请参阅最低集群配置
安装并运行集群后,请转到下一步。
GKE on AWS
在 GKE on AWS 上创建集群
以下步骤介绍了如何在 GKE on AWS 上为 Apigee Hybrid 配置和创建集群。
- 确保您使用的是 Hybrid 1.12.2 版支持的 GKE on AWS 版本。请参阅 Apigee Hybrid 支持的平台和版本。
- 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
- 按照以下说明创建用户集群,并按如下说明创建两个节点池。
集群的最低配置如下:
配置 有状态节点池 无状态节点池 用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。 标签名称 apigee-data apigee-runtime 节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个) CPU 8(生产环境)
4(非生产环境)8(生产环境)
4(非生产环境)RAM 32(生产环境)
16(非生产环境)32(生产环境)
16(非生产环境)存储 动态 通过 ApigeeDeployment CRD 进行管理 最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 每种机器实例类型的网络带宽 1 Gbps 1 Gbps 如需详细了解最低集群配置,请参阅最低集群配置
安装并运行集群后,请转到下一步。
OpenShift
在 OpenShift 上创建集群
以下步骤介绍了如何在 OpenShift 上为 Apigee Hybrid 配置和创建集群。
- 确保您使用的是 Hybrid 1.12.2 版支持的 OpenShift 版本。请参阅 Apigee Hybrid 支持的平台和版本。
- 确保所有节点和应用服务器上的时钟都与网络时间协议 (NTP) 同步,具体如前提条件中所述。Cassandra 数据库依赖网络时间协议 (NTP) 同步来保持数据一致性。如果您计划将 Hybrid 安装到多个区域,请确保它们在所有区域与 NTP 同步。
- 构建要部署到运行时平面的 OpenShift 集群,在 OpenShift 用户集群上安装 Apigee,并创建两个节点池。
在 OpenShift 安装过程中,安装和配置
oc
CLI 工具。请参阅 OpenShift 文档中的 OpenShift CLI 使用入门。集群的最低配置如下:
配置 有状态节点池 无状态节点池 用途 用于 Cassandra 数据库的有状态节点池。 运行时消息处理器使用的无状态节点池。 标签名称 apigee-data apigee-runtime 节点数量 每个可用区 1 个(每个区域 3 个) 每个可用区 1 个(每个区域 3 个) CPU 8(生产环境)
4(非生产环境)8(生产环境)
4(非生产环境)RAM 32(生产环境)
16(非生产环境)32(生产环境)
16(非生产环境)存储 动态 通过 ApigeeDeployment CRD 进行管理 最小磁盘 IOPS 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 2000 IOPS,使用 SAN 或直连式存储。即使 NFS 可以支持所需的 IOPS,也不建议使用。 每种机器实例类型的网络带宽 1 Gbps 1 Gbps 如需详细了解最低集群配置,请参阅最低集群配置
安装集群后,请转到下一步。