Как установить параметр dns в веб-приложении Azure для контейнеров

Это то, что происходит для запуска контейнера. Интересно, есть ли способ запустить веб-приложение для контейнеров с настраиваемым DNS.

У меня есть 5 микросервисов в моем ILB-ASE, они должны иметь возможность звонить друг другу, используя мой собственный DNS-сервер в VNet. Когда я проверяю resolv.conf, я вижу 127.0.0.11. Мне нужно, чтобы это было настроено на собственный собственный DNS-сервер.

как мы можем ввести свое пользовательское значение DNS здесь?

Должны ли мы использовать appsettings если это так, какие значения в веб-приложении для контейнеров?

Поэтому я могу использовать опцию --dns

Таинственная часть, которую Лазурь запускает. Некоторые значения появляются из настроек приложения.

2018-08-23 14: 12: 56.100 INFO - запуск докеров -d -p 13940: 5001 --name xxx -e DOCKER_CUSTOM_IMAGE_NAME = xxx.azurecr.io/xxx: 558 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 5001 -e WEBSITE_SITE_NAME = xxx -e WEBSITE_AUTH_ENABLED = False -e WEBSITE_ROLE_INSTANCE_ID = 0 -e WEBSITE_INSTANCE_ID = xxx -e HTTP_LOGGING_ENABLED = 1 xxx.azurecr.io/xxx:558

===== DOCKER LOG =========

2018_08_23_RD0003FF2D0408_default_docker.log:

2018-08-23T14: 12: 49.755843301Z [40m [1m [33mwarn [39m [22m [49m: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [35]

2018-08-23T14: 12: 49.755897801Z Не настроен шифр XML. Ключ {xxx-xxx-xxx-xxx-xxx} может сохраняться для хранения в незашифрованном виде.

2018-08-23T14: 12: 54.761216323Z [40m [1m [33mwarn [39m [22m [49m: Microsoft.AspNetCore.Server.Kestrel [0]

2018-08-23T14: 12: 54.761251623Z Переопределяющий адрес ' http://+: 80 '. Связывание с конечными точками, определенными в UseKestrel().

2018-08-23T14: 12: 54.908189021Z Хостинг: производство

2018-08-23T14: 12: 54.908386123Z Корень корня контента: /app

2018-08-23T14: 12: 54.908961927Z Теперь прослушивание: http://0.0.0.0:5001

2018-08-23T14: 12: 54.909256229Z Запуск приложения. Нажмите Ctrl + C, чтобы закрыть.

2018_08_23_RD0003FF2D0408_docker.log:

2018-08-23 14: 12: 44.125 INFO - контейнер для утилизации из-за AppFrameworkVersionChange и appFrameworkVersion = xxx.xxx.io/xxx:558

2018-08-23 14: 12: 45.900 INFO - запуск контейнера для сайта

2018-08-23 14: 12: 45.900 INFO - запуск докеров -d -p 30464: 5001 --name xxx -e DOCKER_CUSTOM_IMAGE_NAME = xxx.azurecr.io/xxx: 549 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 5001 -e WEBSITE_SITE_NAME = xxx -e WEBSITE_AUTH_ENABLED = False -e WEBSITE_ROLE_INSTANCE_ID = 0 -e WEBSITE_INSTANCE_ID = xxx -e HTTP_LOGGING_ENABLED = 1 xxx.xxx.io/xxx:558

2018-08-23 14: 12: 55.972 INFO - Контейнер xxx для сайта xxx успешно инициализирован.

2018-08-23 14: 12: 55.976 INFO - контейнер для рециркуляции из-за AppSettingsChange и isMainSite = True

2018-08-23 14: 12: 56.099 INFO - запуск контейнера для сайта

2018-08-23 14: 12: 56.100 INFO - запуск докеров -d -p 13940: 5001 --name xxx -e DOCKER_CUSTOM_IMAGE_NAME = xxx.azurecr.io/xxx: 558 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 5001 -e WEBSITE_SITE_NAME = xxx -e WEBSITE_AUTH_ENABLED = False -e WEBSITE_ROLE_INSTANCE_ID = 0 -e WEBSITE_INSTANCE_ID = xxx -e HTTP_LOGGING_ENABLED = 1 xxx.azurecr.io/xxx:558

2018-08-23 14: 13: 05.385 INFO - Контейнер xxx для сайта xxx успешно инициализирован.

Ответ 1

мы ответили на ваш вопрос о Гитубе и Реддите. Повторно отправляя наш ответ здесь для видимости.

"В настоящее время существует обходное решение для этого: вы должны изменить файл resolv.conf по умолчанию на пользовательский DNS-IP, а затем добавить свой собственный resolv.conf в сборку докеров, добавив команду COPY в свой сценарий точки входа и указав собственный файл resolv.conf/etc.

Тем не менее, мы изучаем лучшее решение для этого, так что ручное обновление resolv.conf не было бы необходимым, поэтому следите за обновлениями ".

Ответ 2

Вы не должны использовать DNS для связи с микросервисами, вместо этого вы должны использовать реестр служб.

Проверьте эту бумагу Microsoft, говоря об этом:

Каждая микросервис имеет уникальное имя (URL), которое используется для разрешения его местоположения. Ваш микросервис должен быть адресуемым везде, где он работает. Если вам нужно подумать о том, на каком компьютере работает определенный микросервис, все может пойти не так быстро. Точно так же, как DNS разрешает URL-адрес на конкретном компьютере, ваш микросервис должен иметь уникальное имя, чтобы его текущее местоположение было доступно для обнаружения. Микросервисам нужны адресные имена, которые делают их независимыми от инфраструктуры, в которой они работают. Это означает, что существует взаимодействие между тем, как развертывается ваша служба и как ее обнаруживают, потому что должен быть реестр служб. В том же духе, когда компьютер выходит из строя, служба реестра должна иметь возможность указать, где находится служба.

Как вы можете видеть, лучшее решение будет зависеть от вашей модели развертывания. Проверьте это примечание о контейнерах:

В некоторых средах развертывания микросервисов (называемых кластерами, которые будут рассмотрены в следующем разделе), обнаружение службы встроено. Например, в среде Azure Container Service Kubernetes и DC/OS с Marathon могут обрабатывать регистрацию и отмену регистрации экземпляра. Они также запускают прокси-сервер на каждом кластерном хосте, который играет роль маршрутизатора обнаружения на стороне сервера. Другим примером является Azure Service Fabric, которая также предоставляет реестр услуг через свою собственную службу именования.

Надеюсь, поможет!