Я использую MongoDB atlas в качестве службы базы данных, и у меня нет проблем с подключением к нему на простом локальном хосте или использованием в качестве docker образа. Однако, когда я пытаюсь развернуть его в kubernetes, я продолжаю сталкиваться со следующей проблемой:
error parsing uri: lookup _mongodb._tcp.xxxxdb-tryqz.azure.mongodb.net on 10.96.0.10:53: no such host
После некоторых исследований я знаю, что есть еще некоторые настройки (например, dnsPolicy при настройке модуля, Сервис expose с ExternalName type ... et c) необходим для подключения к внешнему dns / ip. Тем не менее, у меня все еще остается та же проблема после другой пробной версии.
Пробная версия 1: dnsPolicy
Я добавил dnsPolicy в свой файл deploy.yaml, но все еще не работает.
deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-api-deployment
labels:
app: my-api
spec:
replicas: 1
selector:
matchLabels:
app: my-api
template:
metadata:
labels:
app: my-api
spec:
containers:
- name: my-api
image: xxx/my-api:v4
ports:
- containerPort: 2322
env:
- name: MONGODB_USERNAME
value: userb
- name: MONGODB_PASSWORD
value: abc12345
- name: MONGODB_HOST
value: xxxxdb-tryqz.azure.mongodb.net
dnsPolicy: Default
Пробная версия 2: Использование службы
service-deploy.yaml
kind: Service
apiVersion: v1
metadata:
name: mongodns
spec:
type: ExternalName
externalName: xxxxdb-tryqz.azure.mongodb.net
deploy.yaml (То же, что и выше, но со следующими изменениями)
- name: MONGODB_HOST
value: mongodns
При использовании метода пробной версии 2 ошибка изменилась соответственно:
error parsing uri: lookup _mongodb._tcp.mongodns on 10.96.0.10:53: no such host
Еще одна неожиданная вещь - когда я применяю service-deploy.yaml, служба продолжает загружаться в панель мониторинга minikube.

Вот мой GoLang Сценарий:
dbHost := os.Getenv("MONGODB_HOST")
dbUserName := os.Getenv("MONGODB_USERNAME")
dbPassword := os.Getenv("MONGODB_PASSWORD")
ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
mongoURI := fmt.Sprintf("mongodb+srv://%s:%s@%s/test?retryWrites=true&w=majority", dbUserName, dbPassword, dbHost)
clientOptions := options.Client().ApplyURI(mongoURI)
client, err := mongo.Connect(ctx, clientOptions)
if err != nil {
log.Println("NOT Connected to MongoDB!! (1)")
log.Fatal(err)
}