谷歌云 | 在 Google Kubernetes Engine 上创建 SaaS 平台

软件即服务 (SaaS) 是希望为最终客户提供交钥匙且可靠的产品体验的软件供应商的首选交付方法。公司在构建 SaaS 产品时必须考虑许多因素,其中之一当然是用于运行 SaaS 应用程序的框架。由于现代软件开发使用软件容器,运行现代 SaaS 平台的一个自然且最受欢迎的选择是 Kubernetes,即流行的容器编排器。在这篇文章中,我们将回顾在Google Kubernetes Engine (GKE) 上构建 SaaS 平台时决定选择何种架构的基础知识。

4 种流行的 SaaS GKE 架构

选择 SaaS 架构时,您必须首先考虑隔离要求和 SaaS 应用程序的性质。在 Kubernetes命名空间、节点和集群级别,需要在成本和隔离度之间进行权衡。在以后的文章种,我们将会更详细地概述基于每种架构的架构,包括它们的优点和缺点。除了下面提到的所有方法之外,您还可以使用GKE 沙箱来提高主机系统的安全性。

1. 扁平化多租户应用

托管 SaaS 应用程序的一种方法是使用 SaaS 应用程序的副本设置到 Kubernetes 命名空间的单入口路由。入口路由器将智能地为经过身份验证的用户提供唯一的数据。此设置对于不需要将用户隔离到应用程序软件层之外的 SaaS 应用程序来说很常见。这种设计通常仅适用于通过主 SaaS 应用程序的软件层控制租赁的应用程序。CPU、内存和磁盘/存储随着应用程序的增长而使用默认的自动缩放器进行缩放,而不关心哪个用户使用率最高。存储可以通过每个Pod独有的持久卷声明进行连接。
优点:
  • 集群和节点作为单一且统一的资源进行管理

缺点:

  • 同一底层服务器用于多个租户,一个租户(“吵闹的邻居”)引起的 CPU 峰值或网络事件可能会影响其他租户。
  • 多个租户使用相同的集群控制平面,这意味着对集群的任何升级同时适用于所有租户。
  • 用户数据仅在应用程序层上隔离,这意味着应用程序中的问题可能会将一个用户的数据暴露给另一用户的数据。

2. 多租户集群中基于命名空间的隔离

在此模式中,您使用主机路径设置单入口路由以路由到适当的命名空间,其中有专用于给定客户的应用程序的副本。对于需要为其客户进行高效资源隔离的客户来说,这种设置很常见。每个命名空间都可以分配 CPU 和内存,并在高峰期间共享多余的容量。存储可以通过每个Pod独有的持久卷声明进行连接。

优点:

  • 租户可以在隔离环境中共享资源,以提高效率和安全性。
  • 集群和节点作为单一且统一的资源进行管理

缺点:

  • 同一底层服务器用于多个租户,其中一个租户引起的 CPU 峰值或网络事件可能会影响其他租户。
  • 多个租户使用相同的集群控制平面,这意味着任何集群升级同时适用于所有租户。

3. 基于节点的隔离

与上面一样,您在这里使用主机路径设置单个入口路由,以路由到适当的命名空间,其中包含专用于给定租户的应用程序的副本。但是,运行应用程序的容器使用labels固定到特定节点。除了命名空间隔离之外,这还为应用程序提供了节点级隔离。当应用程序非常占用资源时,可以使用这种类型的部署。

优点:

  • 租户在隔离的环境中拥有专用资源。
  • 集群和节点作为单一且统一的资源进行管理。

缺点:

  • 每个租户都有自己的节点,并且无论租户是否使用该应用程序,都会消耗基础设施资源。
  • 多个租户使用相同的集群控制平面,这意味着对集群的任何升级同时适用于所有租户。

4. 基于集群的隔离

最终模式是使用单个唯一的入口路由来访问每个集群,其中存在专用于给定客户的应用程序的特定版本。当应用程序非常占用资源并且还需要最严格的安全标准时,可以使用这种类型的部署。

优点:

  • 租户在完全隔离的环境中拥有专用资源,并具有专用的集群控制平面。

缺点:

  • 每个租户都有自己的集群,并且无论他们是否使用该应用程序,都会消耗基础设施资源。
  • 集群必须独立更新,这可能会增加大量的运营负担。

存储注意事项

选择基准架构后,运行时存储就是您需要添加到设置中的下一个部分。对于您的应用程序来说,基于容器的存储有许多不同的选项,最好的选项取决于您的应用程序的具体要求。延迟和持久性可能是此决定中需要考虑的最重要的事情。

本地SSD(临时存储)

最小容量:每个磁盘 375 GB

如果您的应用程序符合以下条件,请使用本地 SSD:

  • 下载和处理数据,例如人工智能或机器学习、分析、批处理、本地缓存和内存数据库
  • 具有特殊的存储需求,需要对高性能本地存储进行原始块访问。

或者,您可能希望运行专门的数据应用程序并操作本地 SSD,就像 Pod 的节点级缓存一样。您可以使用此方法来提高内存数据库应用程序(例如 Aerospike 或 Redis)的性能(更多信息)。

持久存储磁盘:

最小容量:10 GB如果您的集群需要访问高性能、高可用的持久块
存储,请使用持久磁盘存储。持久磁盘卷通常附加到单个 Pod。该存储选项支持ReadWriteOnce 访问模式。GKE 支持通过一系列延迟和性能选项配置永久磁盘卷。这些磁盘最适合用于需要高性能持久块存储的一般工作负载或数据库。此外,它们还可以设置区域冗余。

对象存储:

您还可以将Cloud Storage 存储桶连接到您的应用程序。您甚至可以将存储桶安装到您的应用程序,以便使用 FUSE CSI 驱动程序在本地与远程文件进行交互(更多信息)。如果您有管道可以在核心应用程序之外补充存储,那么这是一个不错的选择。

文件存储 (NFS):

最小容量:1 TB
文件存储提供集中式 NFS 存储,可用于连接多个 Pod 进行读/写操作。当集群中的多个服务需要对中央存储设施进行读/写访问时,这是一个不错的选择。

第一方服务:

最后,许多 GKE 用户将其 SaaS 应用程序连接到托管服务,例如 Cloud Spanner、Cloud SQL或Redis到其集群。如果您不需要自我管理的数据服务并且可以利用 Google Cloud 托管服务来减轻运营负担,那么这是一个不错的选择。

客户聚焦

“在 Google GKE 上构建 Weaviate 云服务(WCS) 使我们能够弹性扩展 AI 原生矢量数据库,以满足客户的需求。”
– Etienne Dilocker,Weaviate 联合创始人兼首席技术官

“通过在 Google GKE 上构建 EDB BigAnimal™,我们能够利用 EDB 现有的 Kubernetes 专业知识来提供智能托管数据库平台。GKE 让我们能够与操作员一起在平台中嵌入自动化,同时支持我们的广泛计算和存储选项。顾客。”
– Benjamin Anderson,EnterpriseDB 技术与战略高级副总裁

Elastic 产品管理副总裁 Steve Kearns 表示:“我们的下一代无服务器产品专为满足客户在可观察性、安全性和搜索用例中的不同需求而量身定制,并且管理开销为零。” “对于 Google Cloud,我们选择了 GKE,它使我们能够利用 Google Cloud 中最新的计算和存储选项,并实现成本、性能和易于管理之间的最佳组合。” 

如果您正在考虑在 GKE 上交付 SaaS 应用程序,您需要考虑很多事情:您希望从中获得的好处、各种架构的优缺点以及您的无数存储选项。您可能还需要考虑熟悉 GKE、GKE 安全性,以及如何从 Google Cloud 内分发 SaaS 应用并从中获利。想有关更多信息,请随时联系我们!

Leave a Reply