Практическое руководство. Отладка контейнеров Windows в Azure Service Fabric с помощью Visual Studio 2019
С помощью Visual Studio 2019 можно выполнять отладку приложений .NET в контейнерах, используемых в качестве служб Service Fabric. В этой статье показано, как настроить среду, а затем выполнить отладку приложения .NET в контейнере, выполняемом в локальном кластере Service Fabric.
Необходимые компоненты
- В Windows 10 выполните это краткое руководство, чтобы настроить Windows 10 для запуска контейнеров Windows.
- В Windows Server 2016 выполните это краткое руководство, чтобы настроить Windows 2016 для запуска контейнеров Windows.
- Настройте локальную среду Service Fabric, следуя указаниям из статьи Настройка среды разработки для Windows
Настройка среды разработчика для отладки контейнеров
Убедитесь, что Docker для службы Windows выполняется, прежде чем переходить к следующему шагу.
Чтобы обеспечить поддержку разрешения DNS между контейнерами, необходимо будет настроить локальный кластер разработки, используя имя компьютера. Также эти действия необходимо выполнить, если нужно обратиться к службам через обратный прокси-сервер.
Откройте PowerShell от имени администратора.
Откройте папку установки SDK кластера, как правило
C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup
.Запустите скрипт
DevClusterSetup.ps1
.C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\DevClusterSetup.ps1
Примечание.
-CreateOneNodeCluster
можно использовать, чтобы настроить кластер с одним узлом. По умолчанию будет создан локальный кластер с пятью узлами.Дополнительные сведения о службе DNS в Service Fabric см. в этой статье. Дополнительные сведения об использовании обратного прокси-сервера Service Fabric из служб, запущенных в контейнере, см. в разделе Специальные действия для служб с общим доступом к портам.
Известные ограничения при отладке контейнеров в Service Fabric
Ниже приведен список известных ограничений отладки контейнеров в Service Fabric и возможные решения:
- Использование localhost для ClusterFQDNorIP не будет поддерживать разрешение DNS в контейнерах.
- Решение. Настройка локального кластера с помощью имени компьютера (см. выше)
- При выполнении Windows 10 на виртуальной машине контейнер не получит ответ DNS.
- Решение. Отключить разгрузку контрольной суммы UDP для протокола IPv4 на сетевом адаптере виртуальной машины.
- Использование Windows 10 может ухудшить производительность сети на компьютере.
- https://github.com/Azure/service-fabric-issues/issues/1061
- Разрешение служб в том же приложении с помощью dns-имени службы не работает в Windows10, если приложение было развернуто с помощью Docker Compose
- Решение. Используйте servicename.applicationname для разрешения конечных точек службы.
- https://github.com/Azure/service-fabric-issues/issues/1062
- При использовании IP-адреса для ClusterFQDNorIP изменение основного IP-адреса на узле нарушит функциональность DNS.
- Решение. Повторно создайте кластер, использующий новый основной IP-адрес узла, или используйте имя компьютера. Такой сбой является намеренным.
- Если кластер создан с помощью полного доменного имени, которое не разрешается в сети, DNS завершится с ошибкой.
- Решение. Повторно создайте локальный кластер с помощью основного IP-адреса узла. Такой сбой является намеренным.
- При отладке контейнера docker журналы будут доступны только в окне вывода Visual Studio, а не через API Service Fabric, включая Service Fabric Explorer.
Отладка приложения .NET, работающего в контейнерах docker, в Service Fabric
Запустите Visual Studio от имени администратора.
Откройте имеющееся приложение .NET или создайте новое.
Щелкните проект правой кнопкой мыши и выберите Добавить -> Поддержка оркестратора контейнеров -> Service Fabric
Нажмите клавишу F5 для запуска отладки приложения.
Visual Studio поддерживает типы консоли и проектов ASP.NET для .NET и .NET Core.
Следующие шаги
Дополнительные сведения о возможностях Service Fabric и контейнеров см. в этой статье.