如何部署对 Kubernetes 有 MongoDB 依赖的微服务?

How to deploy Microservices with MongoDB dependency on Kubernetes?

我有 2 个 API 后端微服务,其中每个微服务都有 MongoDB 数据库。我想在 AWS 等云提供商的 Kubernetes 集群中部署 2 个或更多实例。

微服务的每个实例 运行s 作为 Pod 中的一个容器。是否可以将 MongoDB 作为另一个容器部署在同一个 Pod 中?或者这个用例的最佳实践是什么?

如果同一个微服务的两个或多个实例 运行 在不同的 Pods 中,我需要部署 2 个或多个 MongoDB 实例还是单个 MongoDb 被同一个微服务的多个实例引用?此用例的最佳实践是什么?

每个微服务都是 Spring 引导应用程序。我是否需要在 Spring Boot 应用程序源代码中做任何特殊的事情,因为它将 运行 作为微服务而不是传统的 Spring Boot 应用程序?

Each instance of Microservice runs as a container in a Pod. Is it possible to deploy MongoDB as another container in the same Pod?

不,那么当您升级您的应用程序时,您的数据将会消失。

Or what is the best practice for this use case?

现代生产环境中的数据库 运行 作为 集群 - 出于可用性原因。最佳做法是为数据库使用托管服务,或者 运行 将其作为集群使用,例如不同节点上的 3 个实例。

If two or more instances of the same Microservice are running in different Pods, do I need to deploy 2 or more instances of MongoDB or single MongoDb is referenced by the multiple instances of the same Microservice?

您所有的微服务实例都应该访问同一个数据库集群,否则它们会看到不同的数据。

Each Microservice is Spring Boot application. Do I need to do anything special in the Spring Boot application source code just because it will be run as Microservice as opposed to traditional Spring Boot application?

Spring 引导是根据 The Twelve Factor App 设计的,因此被设计为 运行 在云环境中,例如Kubernetes.

将 mongodb pod 部署为有状态集。请参考下面的掌舵图来部署 mongodb。 https://github.com/bitnami/charts/tree/master/bitnami/mongodb

使用 init 容器,您可以检查 springboot pod 内部以检查 mongodb 是否已启动,然后 运行 启动 springboot 容器。请按照以下 link 寻求帮助 How can we create service dependencies using kubernetes