如何通过UI工具(如MongoDB Compass或RoboMongo)连接在Kubernetes集群上运行的MongoDB?

时间:2018-08-06 15:03:46

标签: mongodb kubernetes mongodb-compass robo3t

我通过头盔包在我的kubernetes集群中部署了多个Mongo db实例。 它们在NodePort中作为服务运行。 如何通过集群外部的UI工具(如MongoDB Compass和RoboMongo)连接到这些Mongo数据库实例? 任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

您可以使用kubectl port-forward从集群外部连接到MongoDB。

运行kubectl port-forward << name of a mongodb pod >> --namespace << mongodb namespace >> 27018:27018
现在,将您的UI工具指向localhost:27018kubectl会将所有连接转发到群集内的Pod。

从Kubernetes 1.10+开始,您还可以使用以下语法连接到服务(您不必先找到Pod名称):
kubectl port-forward svc/<< mongodb service name >> 27018:27018 --namespace << mongodb namespace>>

答案 1 :(得分:0)

如果它不是您的生产数据库,则可以通过NodePort服务公开它:

# find mongo pod name
kubectl get pods
kubectl expose pod <<pod name>> --type=NodePort
# find new mongo service
kubectl get services

最后一个命令将输出类似

mongodb-0   10.0.0.45    <nodes>       27017:32151/TCP   30s

现在您可以使用mongo <<node-ip>>:32151

访问mongo实例

答案 2 :(得分:0)

如果未解决,请将您的mongo工作负载暴露为负载平衡器,并使用该服务提供的IP。复制LB IP,并在robo3T中使用它。如果需要身份验证,请在下面检查我的YAML文件:

apiVersion: apps/v1
kind: Deployment
metadata:
    name: mongodb
    labels:
        app: mongodb
spec:
    replicas: 1
    selector:
        matchLabels:
            app: mongodb
    template:
        metadata:
            labels:
                app: mongodb
        spec:
            containers:
                - name: mongodb
                  image: mongo
                  volumeMounts:
                      - name: data
                        mountPath: "/data/db"
                        subPath: "mongodb_data"
                  ports:
                      - containerPort: 27017
                        protocol: TCP
                  env:
                      - name: MONGO_INITDB_ROOT_USERNAME
                        value: xxxx
                      - name: MONGO_INITDB_ROOT_PASSWORD
                        value: xxxx
            imagePullSecrets:
                - name: xxxx
            volumes:
                - name: data
                  persistentVolumeClaim:
                      claimName: xxx

在ROBO3T的身份验证标签中设置相同的值

注意:自从我直接在GCP UI本身中显示为LB以来,我没有在YAML中提到服务部分。