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

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

Предпосылки

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

  1. Перед продолжением следующего шага убедитесь, что служба Docker для окна запущена.

  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 см. в статье "Служба DNS" в Azure Service Fabric. Дополнительные сведения об использовании обратного прокси-сервера Service Fabric из служб, работающих в контейнере, см. в статье "Обратная обработка прокси-сервера" для служб, работающих в контейнерах.

Известные ограничения при отладке контейнеров в Service Fabric

Ниже приведен список известных ограничений с контейнерами отладки в Service Fabric и возможными разрешениями:

  • Использование localhost для ClusterFQDNorIP не поддерживает разрешение DNS в контейнерах.
    • Разрешение: настройка локального кластера с использованием имени компьютера (см. выше)
  • При работе с Windows10 на виртуальной машине dns-ответ не будет возвращен контейнеру.
    • Разрешение. Отключение разгрузки контрольной суммы UDP для IPv4 на сетевом адаптере виртуальных машин
    • При запуске Windows10 производительность сети на компьютере снижается.
    • https://github.com/Azure/service-fabric-issues/issues/1061
  • Разрешение служб в том же приложении с помощью dns-имени службы не работает в Windows10, если приложение было развернуто с помощью 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 и контейнеров см. в обзоре контейнеров Service Fabric.