Практическое руководство. Отладка контейнеров Windows в Azure Service Fabric с помощью Visual Studio 2019

С помощью Visual Studio 2019 можно выполнять отладку приложений .NET в контейнерах, используемых в качестве служб Service Fabric. В этой статье показано, как настроить среду, а затем выполнить отладку приложения .NET в контейнере, выполняемом в локальном кластере Service Fabric.

Предварительные требования

Настройка среды разработчика для отладки контейнеров

  1. Убедитесь, что Docker для службы Windows выполняется, прежде чем переходить к следующему шагу.

  2. Чтобы обеспечить поддержку разрешения DNS между контейнерами, необходимо будет настроить локальный кластер разработки, используя имя компьютера. Также эти действия необходимо выполнить, если нужно обратиться к службам через обратный прокси-сервер.

    1. Откройте PowerShell от имени администратора.

    2. Откройте папку установки SDK кластера, как правило C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup.

    3. Запустите скрипт 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 не работает в Windows 10, если приложение было развернуто с помощью Docker Compose.
  • При использовании IP-адреса для ClusterFQDNorIP изменение основного IP-адреса на узле нарушит функциональность DNS.
    • Решение. Повторно создайте кластер, использующий новый основной IP-адрес узла, или используйте имя компьютера. Такой сбой является намеренным.
  • Если кластер создан с помощью полного доменного имени, которое не разрешается в сети, DNS завершится с ошибкой.
    • Решение. Повторно создайте локальный кластер с помощью основного IP-адреса узла. Такой сбой является намеренным.
  • При отладке контейнера docker журналы будут доступны только в окне вывода Visual Studio, а не через API Service Fabric, включая Service Fabric Explorer.

Отладка приложения .NET, работающего в контейнерах docker, в Service Fabric

  1. Запустите Visual Studio от имени администратора.

  2. Откройте имеющееся приложение .NET или создайте новое.

  3. Щелкните проект правой кнопкой мыши и выберите Добавить -> Поддержка оркестратора контейнеров -> Service Fabric

  4. Нажмите клавишу F5 для запуска отладки приложения.

    Visual Studio поддерживает типы консоли и проектов ASP.NET для .NET и .NET Core.

Дальнейшие действия

Дополнительные сведения о возможностях Service Fabric и контейнеров см. в этой статье.