Как подключить 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.