Как подключить MongoDB, работающий в кластере Kubernetes, с помощью таких инструментов пользовательского интерфейса, как MongoDB Compass или RoboMongo?

У меня есть несколько экземпляров Mongo db, развернутых в моем кластере kubernetes через пакеты helm. Они работают как сервис, в NodePort. Как подключиться к этим экземплярам базы данных Mongo с помощью таких инструментов пользовательского интерфейса, как MongoDB Compass и RoboMongo, за пределами кластера? Любая помощь приветствуется.

4 ответа

Ты можешь использовать kubectl port-forward подключиться к MongoDB извне кластера.

Бежать kubectl port-forward << name of a mongodb pod >> --namespace << mongodb namespace >> 27018:27018,
Теперь наведите свой пользовательский интерфейс на localhost:27018 а также kubectl перенаправит все соединения в модуль внутри кластера.

Начиная с Kubernetes 1.10+, вы также можете использовать этот синтаксис для подключения к сервису (вам не нужно сначала искать имя модуля):
kubectl port-forward svc/<< mongodb service name >> 27018:27018 --namespace << mongodb namespace>>

Если это не ваша производственная база данных, вы можете открыть ее через службу 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 db:
kubectl get services -n <namespace>

Перенаправление портов с использованием: kubectl port-forward service/<service_name> -n <namespace> 27018:27017

Откройте Robomongo на localhost:27018

Если не решено, выставьте свою рабочую нагрузку mongo в качестве балансировщика нагрузки и используйте IP-адрес, предоставленный службой. Скопируйте IP-адрес LB и используйте его в 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.

ПРИМЕЧАНИЕ. Я не упомянул сервисный раздел в YAML, так как я напрямую указывал как LB в самом пользовательском интерфейсе GCP.

Другие вопросы по тегам