我们计划使用 Kube 进行 Postgres 部署。我们的应用程序将是具有分离模式(或逻辑数据库(的微服务。出于安全考虑,我们希望为每个架构/logical_db设置单独的用户。
我想db/schema&user应该由Kube创建,所以应用程序本身不需要有权访问数据库管理员帐户。
在 Stolon 中,似乎只有创建单个用户和单个数据库的可能性,其他 HA Postgres 图表似乎也是如此。
问:Kube 中的微服务创建数据库用户的首选方式是什么?
在创建用户时,正如您所说,大多数图表和容器都有用于在引导时创建用户的环境变量。但是,他们中的大多数不考虑在启动时创建多个用户的可能性。
正如您所说,其他容器的作用是拥有 k8s 机密中的根凭据,以便它们访问数据库并创建正确的架构和用户。这不一定需要在应用程序逻辑中完成,但例如,使用 init 容器为应用程序运行设置适当的数据库。
https://kubernetes.io/docs/concepts/workloads/pods/init-containers
这样,您将拥有一个包含两个容器的 pod:一个用于您的应用程序,一个用于设置 DB。