从其他容器与Kubernetes(GKE)上的容器通信

时间:2019-05-31 18:04:15

标签: mongodb kubernetes google-kubernetes-engine

我有一个用Express编写的API,该API连接到Mongo容器。当我在本地启动它们时,我可以使用mongodb://${DB_HOST}:${DB_PORT}/${DB_NAME}之类的东西并设置.env变量来连接到mongo实例。

我要努力理解的是,一旦将其部署到GKE,我的API将如何连接到mongo容器/吊舱?

我认为它不会在本地主机上运行,​​所以也许我将需要使用创建的内部IP?

它实际上应该通过service连接吗?该服务是什么样的?

我正在努力寻找关于卡住位置的文档,所以我认为我确实缺少一些明显的东西。

我是GKE的新手,所以任何示例都将大有帮助。

2 个答案:

答案 0 :(得分:1)

创建类型为ClusterIP的mongodb部署和mongodb服务,这基本上意味着您的api将能够在内部连接到db。如果要从外部连接数据库,请创建LoadBalancer类型的服务或其他服务类型(请参见here

使用类型为ClusterIP的服务,假设您在name键下给它mongodbservice中的metadata。然后您的api可以通过mongodb://mongodbservice:${DB_PORT}/${DB_NAME}

连接到它

答案 1 :(得分:0)

您可能希望将mongodb部署为StatefulSet,以便它可以使用稳定的持久性存储。您需要为持久性存储配置一个StorageClass。然后,您需要将其公开为服务。这是kubernetes.io

上的示例

如果您使用Helm(提示,请执行此操作),则容易得多。您可以使用单个命令启动并运行

helm install stable/mongodb

helm安装的输出包含一些有用的说明,用于连接到新的mongodb集群。