Создание и развертывание базового веб-приложения ASP.NET в качестве контейнера Docker с использованием Microsoft Azure, часть 3
Введение
Это последняя часть серии статей о создании базового веб-приложения ASP.NET и его развертывании в виде контейнера Docker с использованием Microsoft Azure. Здесь мы собираемся настроить конвейер выпуска Microsoft Azure DevOps для автоматизации развертывания нашего приложения в качестве контейнера в службе веб-приложений Azure.
Если вы следовали за нами, вы должны иметь:
- репозиторий GitHub с веб-приложением ASP.NET Core (или чем-то похожим)
- Dockerfile для создания образа для вашего приложения
- Интеграция Azure DevOps Pipelines с GitHub для автоматического запуска сборки
- конвейер непрерывной интеграции в Azure DevOps для создания образа Docker и передачи его в Docker Hub
Развертывание вручную в службе веб-приложений Azure
Прежде чем мы перейдем к какой-либо автоматизации, давайте сначала развернем наше приложение вручную и посмотрим, работает ли оно. Для этого перейдите на портал Microsoft Azure и предоставьте данные для входа.
На панели навигации выберите App Services, затем нажмите Add. В следующем окне:
- укажите название для вашего приложения
- выберите подписку
- dы можете создать новую группу ресурсов или использовать существующую
- выберите нужную ОС
- для публикации выберите Docker Image
Следующим шагом является выбор Configure Container и предоставление сведений об образе Docker, который вы хотите использовать для своего приложения. По умолчанию активен Single Container. Выберите Docker Hub в качестве реестра изображений или в зависимости от того, что применимо. Выберите, является ли ваш реестр частным или общедоступным, а затем укажите имя вашего образа Docker.
После того, как вы нажмете Apply, вы будете перенаправлены на предыдущую страницу. Нажмите Create, и развертывание начнется после нескольких проверок, которые не займут много времени.
После завершения развертывания вы получите уведомление. После этого, если вы обновите страницу служб приложений, вновь созданное приложение будет в списке.
Поздравляем! Вы только что развернули свое приложение в качестве контейнера Docker в службах приложений Microsoft Azure.
Тестирование приложения
Пришло время проверить, действительно ли ваше приложение работает. На странице служб приложений выберите свое приложение. Теперь в правом верхнем углу панели обзора выберите URL-адрес вашего приложения.
Откройте URL в вашем любимом браузере, и ваше приложение должно работать. Вот как это выглядит у нас:
Если приложение не работает, первое, что вы хотите проверить, это журналы. Для этого перейдите в Settings > Container Settings и вы увидите Logs. Вот как это выглядит:
Добавление сервисного соединения
Чтобы конвейер выпуска мог автоматически развертывать приложение в службах приложений Azure, ему необходим доступ к ресурсам Azure.
Чтобы предоставить доступ, перейдите в Project Properties > Service Connections и затем выберите New service connection.
В списке выберите Azure Resource Manager и заполните подробности в модальном окне, которое следует. Выберите уровень области как Subscription, а затем выберите свою подписку. Позже выберите группу ресурсов, в которой вы создали службу приложений для своего приложения.
Конвейер релиза Azure DevOps
Итак, пришло время автоматизировать наш следующий выпуск, создав конвейер выпуска в Azure. Перейдите в Azure DevOps, выберите свою организацию и проект.
Под Pipelines выберите Releases и затем нажмите на New pipeline. Давайте начнем с того, что дадим вашему конвейеру красивое имя, используя текстовое поле вверху.
Добавление артефакта сборки
Теперь давайте добавим артефакт в конвейер. Нажмите Add an artifact и выберите Docker Hub в качестве типа источника. В раскрывающемся списке выберите подключение к сервису для Docker Hub, которое мы настроили в предыдущей статье.
Выберите пространство имен и репозиторий, который вы хотите настроить для своего приложения. Для версии по умолчанию вы можете выбрать «Последние»(Latest) или «Указать во время создания релиза» (Specify at the time of release creation). Это зависит от ваших требований.
Если вы выберете Latest, вы должны всегда отмечать изображения Docker как «последние» в конвейере сборки. Мы предпочитаем использовать другой вариант.
Добавление задач в конвейер
Теперь нам нужно добавить этап в конвейер релиза. Нажмите Add a stage, выберите Azure Web App on Container Deploy и присвойте ему имя. И переключитесь на вкладку Задачи.
Первая запись в списке задач - это настройка агента, для которой мы собираемся выбрать Hosted Ubuntu 1604 в качестве пула агентов. Остальное можно оставить как есть.
Теперь выберите вторую задачу и в разделе подписки Azure выберите подключение к службе, которое мы установили на предыдущих этапах. После этого он дает вам список приложений для выбора. Наиболее важным является имя изображения. Поэтому, пожалуйста, убедитесь, что это точно совпадает с тем, что вы настроили в конвейере сборки.
Мы почти закончили здесь. Тем не менее, кое-что отсутствует. Мы еще не включили автоматический запуск запуска конвейера выпуска. Давайте сделаем это сейчас.
Вернитесь на вкладку Pipeline. Если сейчас щелкнуть символ молнии в правом верхнем углу артефакта, он позволяет включить триггер непрерывного развертывания.
Вы также можете добавить определенные фильтры в триггер, если хотите. Но мы пока оставим все в упрощенном виде. Наконец, сохраните конвейер выпуска.
Тестирование конвейера CI/CD (сквозное тестирование)
Наконец, пришло время проверить все, что мы уже сделали. Для этого:
- измените что-то в вашем приложении
- перенесите изменения в основную ветку
- конвейер сборки запускается и отправляет новый образ в Docker Hub
- push to Docker Hub запускает конвейер выпуска
- последние изменения в вашем приложении теперь видны
Не торопитесь и измените то, что вы можете использовать, чтобы проверить, все ли работает. На самом деле вы также можете обратиться к журналам службы приложений Azure, чтобы проверить, какой тег образа Docker запущен в данный момент.
Например, на изображении выше обратите внимание на журналы, выделенные зелеными рамками. Они показывают, что настроенные конвейеры DevOps Azure работают.
Много-много поздравлений! Мы успешно достигли нашей цели.
Заключение
Для начала мы разработали веб-приложение на основе ASP.NET Core и поместили наш код в репозиторий GitHub. После этого мы настроили конвейер сборки для автоматической сборки образа Docker для нашего приложения, а затем отправили его в Docker Hub. Далее в этой статье мы создали конвейер выпуска для автоматического развертывания нашего приложения в виде контейнера Docker в службе Azure Web App.
Надеемся, у вас все так же хорошо работает, как и у нас.