我们正在尝试为多租户应用程序选择用于分配微服务的架构。我们想使用kubernates并查看两种情况:
第一种情况:
+看起来更高效
+易于管理
-难以实现
第二种情况:
+更多封装的
-看起来效率较低
使用第二种情况每个租户使用单独的命名空间。
不同的配置
您已经为每个租户设计了一个具有单独数据库的解决方案。您可以为租户运行相同的容器映像,但是租户应使用不同的配置,例如他们有不同的数据库地址。参见Twelve factor - externalize configuration。
我们必须始终为每个租户创建一个新服务的容器。虽然如果负载很低,我们可以为所有租户使用一个通用容器
您可以使用Kubernetes 声明性部署清单为每个租户轻松创建相同的服务。您还可以仅分配每个租户所需的资源,例如副本数量变化或不同的CPU或内存资源。
将错误信息路由到中央服务
我们有一个用于检测错误的入口点
您应始终路由可观察性信息,例如日志,指标和事件发送到群集的中央服务。
隔离租户
此外,如果您为租户有单独的命名空间,则可以使用Network Policies
来进一步隔离它们。