Как настроить разрешение DNS для монго для подключения к атласу из кластера k8s

У меня есть несколько страницы, которые я нашел с похожим вопросом, и большинство ответов говорят нам о том, что наш IP-адрес должен быть в белом списке. Однако я разрешил доступ из любого места 0.0.0.0/0 в атласе и установил последнюю версию mongoose(6.2.6; предполагается, что она поддерживает протокол (mongodb+srv).

Соединение работает отлично, когда я запускаю локально с помощью npm start или даже из докеризованного контейнера. Но когда я развертываю кластер k8s, я получаю сообщение об ошибке:

querySrv ENOTFOUND _mongodb._tcp.mongodb-cluster0.zvnxj.mongodb.net

Файл развертывания и службы выглядит следующим образом:

deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: ns-my-workflow-api
  name: my-workflow-api
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-workflow-api
  template:
    metadata:
      labels: 
        app: my-workflow-api
    spec:
      containers:
        - name: my-workflow-api
          image: "myname/my-workflow-api:1.0.0"
          ports:
            - containerPort: 3000
          imagePullPolicy: IfNotPresent
          resources:
              limits:
                cpu: "256m"   

service.yaml имеет содержимое:

apiVersion: v1
kind: Service
metadata:
  namespace: ns-my-workflow-api
  name: my-workflow-api
spec:
  selector:
    app: my-workflow-api
  type: LoadBalancer
  ports:
    - name: http
      port: 8000
      targetPort: 3000
      protocol: TCP  

namespace.yaml имеет содержимое:

apiVersion: v1
kind: Namespace
metadata:
  name: ns-my-workflow-api

Я также попробовал deployment.yaml с правилом dns:

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: ns-my-workflow-api
  name: my-workflow-api
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-workflow-api
  template:
    metadata:
      labels: 
        app: my-workflow-api
    spec:
      dnsPolicy: Default            # <------ this rule
      containers:
        - name: my-workflow-api
          image: "myname/my-workflow-api:1.0.0"
          ports:
            - containerPort: 3000
          imagePullPolicy: IfNotPresent
          resources:
              limits:
                cpu: "256m"

Как только я изменил URL-адрес подключения, чтобы использовать 2.0.14 or earlier, я смог подключиться. Строка подключения начинается с mongodb://....

Хотя мне удалось заставить соединение работать с обходным путем, используя строку подключения в старом стиле, и, похоже, это какая-то проблема с разрешением DNS, как мне заставить новые протоколы работать для подключения к atlas из внутри кластера? заранее спасибо

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я смог решить это, используя это для начала minikube:

minikube start --driver=docker

Кажется, есть проблема с разрешением DNS с базовым драйвером виртуального бокса оракула (может быть, проблема с настройкой и настройкой)

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