我正在寻求使用 Kubernetes 部署 SaaS 应用来处理扩展。经过大量阅读,我得出结论,多实例是可行的方法。理想情况下,我将让用户登录,当他们通过身份验证后,将启动一个新实例(我假设这是一个 pod),他们将在该 pod 中找到他们之前处理的数据。数据将存储在数据库中,理想情况下是每个用户一个单独的数据库,但可能只有一个大数据库。
多实例是一个不错的选择,因为该应用程序将允许用户启动在 pod 中运行的 Python 作业,因此与其他用户隔离非常重要。
我到处搜索,但找不到很多多实例实现的示例。如果有人能给我指出一些好的例子就太好了。
我想象我将运行一个单独的 pod,它将作为登录页面前端,然后是一个简单的后端,允许我启动该 pod。
但是...我该如何告诉新的 pod 这个 pod 是为哪个客户服务的,并调用正确的数据库?
我可以动态修改 pod 模板吗?如何将客户信息作为环境变量传递?
那么我怎样才能确保连接到该客户的正确数据库呢?
如果这些都是非常基础的问题,请见谅。实施工作一开始会很小,但我想尽我所能确保我选择了正确的架构。
提前感谢任何帮助或评论。
答案1
这是有道理的,但使用 k8s,只需复制可互换的 pod 即可更轻松地扩展多租户应用程序。它本身不具备多实例逻辑。
因此,您必须实际实现此应用程序来处理身份验证,基于应用程序模板创建部署,并通过以下方式配置它们环境变量,将其分配给用户并管理他们的持久存储。
我们有类似的需求,即使在您提出问题 1.5 年后,关于此主题的公开信息仍然不多。这就是为什么我们公开并开源了此“管理器”应用程序的小型原型(无耻的宣传),它在这里:https://gitlab.com/simevo/juggler