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