Talking to container on Kubernetes (GKE) from other container

5/31/2019

I have an API written in Express, that connects to a Mongo container. When I spin these up locally, I can connect to the mongo instance using something like mongodb://${DB_HOST}:${DB_PORT}/${DB_NAME} and setting .env variables.

What I am struggling to understand, is once this deployed to GKE, how will my API connect to the mongo container / pod?

It won't be running on localhost I assume, so perhaps I will need to use the internal IP created?

Should it actually be connecting via a service? What would that service look like?

I am struggling to find docs on exactly where I am stuck so I am thinking I am missing something really obvious.

I'm free new to GKE so any examples would help massively.

-- Tim J
google-kubernetes-engine
kubernetes
mongodb

2 Answers

5/31/2019

Create a mongodb deployment and a mongodb service of type ClusterIP, which basically means that your api will be able to connect to the db internally. If you want to connect your db from outside, create a service of type LoadBalancer or other service types (see here)

With a service of type ClusterIP, let's say you give it a name of mongodbservice under metadata key. Then your api can connect to it at mongodb://mongodbservice:${DB_PORT}/${DB_NAME}

-- Rajesh Gupta
Source: StackOverflow

5/31/2019

You'll want to deploy mongodb, probably as a StatefulSet so it can use stable persistent storage. You'll need to configure a StorageClass for the persistent storage. Then you'll want to expose it as a Service. Here's an example on kubernetes.io

If you use Helm (hint, do it) it's a lot easier. You can be up and running with a single command

helm install stable/mongodb

The output of the helm install contains some helpful instructions for connecting to your new mongodb cluster.

-- frankd
Source: StackOverflow