Connect from Kubernetes

This guide shows you how to connect to a MongoDB cluster from your managed Kubernetes cluster.

Prerequisites

Before connecting to a MongoDB cluster from your managed Kubernetes, make sure you have:

  • A data center with id xyz-my-datacenter.

  • A private LAN with id 3.

  • A MongoDB cluster connected to LAN 3, with the connection string mongodb+srv://m-xyz-example.mongodb.de-txl.ionos.com.

  • A Kubernetes cluster with id xyz-my-k8s-cluster.

  • ionosctl set up with your IONOS credentials.

Note: In this guide, we use DHCP to assign IP addresses to node pools. Therefore, it is important that the database is in the same subnet that is used by the DHCP server.

1.To enable connectivity, connect the node pools to the private LAN with the MongoDB cluster.

ionosctl k8s nodepool create --cluster-id xyz-my-k8s-cluster --datacenter-id xyz-my-datacenter --lan-ids 3 --dhcp=true --name=my_nodepool

2. Wait for the node pool to become available. To test the connectivity you can create a pod that contains the MongoDB tool mongosh. If you have multiple node pools, make sure to schedule the pod on one of the node of the node pools that are attached to the private LAN.

# pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: connectivity-test
  labels:
    role: connectivity-test
spec:
  containers:
  - name: mongo
    image: mongo
    stdin: true
    tty: true
    command:
      - "/bin/bash"

3. Create the pod by using the following command:

kubectl apply -f pod.yaml

4. Attach the pod to the cluster by using the following command:

kubectl attach -it connectivity-test
If you do not see a command prompt, try pressing enter.
root@connectivity-test:/# mongosh "mongodb+srv://m-xyz-example.mongodb.de-txl.ionos.com"
Current Mongosh Log ID:	631063ca901a9459bab0b4d4
Connecting to:		mongodb+srv://m-xyz-example.mongodb.de-txl.ionos.com/?appName=mongosh+1.5.4
Using MongoDB:		5.0.10
Using Mongosh:		1.5.4

For mongosh information, see: https://docs.mongodb.com/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

Enterprise a0def940-2455-11ed-a564-7a0f508690ac [primary] test> 

Result: You see the database is accepting connections.

If you see connection issues, make sure that the node is properly connected to the LAN. To debug the node, use a debugging container.

kubectl debug node/$(kubectl get po connectivity-test -o jsonpath="{.spec.nodeName}") -it --image=busybox

Last updated

Revision created

Minor update from the comments