Azure Pipelines — это облачный инструмент DevOps CI/CD для масштабного создания, тестирования и развертывания приложений. Это простой в использовании инструмент с возможностью развертывания во многих технологиях (не только в Azure). Разработчикам относительно легко изменить свои сценарии развертывания на другие платформы, когда это необходимо. Инструмент включает интерактивный помощник редактора конфигурации YAML, поддерживающий различные технологии, что делает конвейеры Azure намного более функциональными, чем действия Circle-Ci или GitHub, которые не поддерживают облачные платформы в масштабе. Таким образом, Azure Pipelines — это корпоративное решение для решения реальных задач производства текстов, где интеллектуальные возможности машинного обучения могут быть развернуты во многих облачных технологиях, а использование Azure Pipelines может облегчить работу отдела DevOps благодаря своей гибкости.

Предпосылки:

  • Знания о Docker и о том, как создавать контейнеры.
  • Хотя манифесты в примере репозитория подойдут для этого варианта использования, знание манифестов Kubernetes и того, как модули и сервисы работают в кластере Kubernetes, будут полезны для отладки.
  • Учетная запись Azure со всеми необходимыми разрешениями и платежными данными.
  • Azure CLI установлен.
  • Репозиторий GitHub с вашим приложением.

В следующем примере я собираюсь использовать движущуюся службу рекомендаций, интеллектуальная модель которой была обучена на движущемся потоковом потоке Kafka. Чтобы упростить конвейер, я демонстрирую выполнение развертывания в кластере Kubernetes всякий раз, когда новый код фиксируется в репозитории GitHub.

Ссылка GitHub на репозиторий: https://github.com/sreevenkcmu/I4-MLProd

Структура папок выглядит как на картинке ниже:

  • Сервисная папка содержит необходимые данные для модели; файл main.py содержит код конечной точки API для рекомендации фильма с учетом идентификатора пользователя.
  • Dockerfile вместе с требованиями для создания образа службы, он будет использоваться конвейером для создания и отправки его в Реестр контейнеров Azure.
  • Сценарии развертывания Kubernetes для приложения и предоставление его через балансировщик нагрузки.

Как это помогает с приложением потоковой передачи фильмов/рекомендаций: всякий раз, когда новые модели обучаются и разработчики вносят изменения в конечную точку API, чтобы сделать ее совместимой, этот инструмент автоматически развертывает ее в кластере Kubernetes. всякий раз, когда коммиты помещаются в репозиторий. Нет необходимости в ручном вмешательстве для развертывания, что делает его эффективным по времени инструментом для непосредственного тестирования. Инструмент значительно экономит время на развертывание, его также можно настроить для обучения и построения моделей машинного обучения «на лету». Таким образом, основная цель конвейера или любого конвейера — автоматизировать необходимые задачи разработки программного обеспечения для экономии времени службы и предоставления информации об ошибках или тестах заданий. Azure Pipelines может помочь с настройкой облачных служб для выполнения поставленной задачи.

Этапы создания конвейера и необходимых ресурсов:

  1. Настройте новый проект в Azure DevOps. (можно использовать старый)

2. В разделе «Параметры проекта» на вкладке «Подключение к службе» создайте новое подключение к службе, а затем создайте новое подключение к службе для kubernetes (в службе Azure Kubernetes) и реестра Docker (в реестре контейнеров Azure). Следите за изображениями ниже

Примечание. Эти подключения к службам можно легко настроить для использования секретов других кластеров или реестров контейнеров. Простота настройки — вот что делает Azure Pipelines гибким инструментом.

3. Войдите в учетную запись Azure на терминале.

az login

4. Создайте группу ресурсов, которой будут назначены все ваши ресурсы.

az group create --name i4mlprod --location eastus

5. Создайте реестр контейнеров, куда будут загружены все ваши образы контейнеров, которые впоследствии могут использоваться kubernetes для запуска ваших развертываний.

az acr create --resource-group i4mlprod --name mlprodcr --sku Basic

6. Создайте кластер kubernetes с помощью службы Azure Kubernetes, этот кластер будет использоваться для развертывания всех ваших служб и их публичного доступа.

az aks create --resource-group i4mlprod --name myapp --node-count 1 --enable-addons monitoring --generate-ssh-keys

7. Прикрепите роль ACR к кластеру AKS, чтобы он мог извлекать образы.

az aks update -n myapp -g i4mlprod --attach-acr mlprodcr

После этих команд группа ресурсов должна выглядеть примерно так:

8. Перейдите к созданному проекту в Azure DevOps и создайте новый конвейер для приложения; выберите нужный репозиторий Github в качестве местоположения исходного кода; щелкните параметр начального кода YAML и вставьте YAML, указанный в ссылке ниже.

Ссылка на YAML-файл: https://github.com/sreevenkcmu/I4-MLProd/blob/main/azure-pipelines.yml

9. После нажатия Сохранить и запустить. Теперь мы видим, что конвейер пройден, и вы получаете конечную точку службы во время второго последнего шага конвейера.

Пояснение к файлу YAML:https://github.com/sreevenkcmu/I4-MLProd/blob/main/azure-pipelines.yml

Эти задачи кода будут использовать созданное вами подключение к службе для подключения к Реестру контейнеров Azure и отправить созданный образ службы. Кроме того, манифесты будут храниться как артефакты, чтобы их можно было использовать для развертывания в кластере.

Эти задачи будут извлекать манифесты, созданные как артефакты на этапе развертывания, и развертывать их в кластере Kubernetes, указанном в сервисном подключении.

Примечание. Создание секрета не является обязательным шагом, если кластер уже настроен в Azure, включите его сюда, чтобы он также мог работать с другими кластерами не из Azure.

Сильные стороны инструмента:

  1. Гибкость для подключения к различным службам, возможность настройки секретов из других облачных платформ или ресурсов.
  2. Редактор конвейеров с предопределенными примерами, чтобы пользователи могли понять поток этапов.
  3. Легко подключиться к репозиторию GitHub.
  4. Параллельное выполнение этапов конвейера с использованием контейнеров ubuntu. Возможность использования терминальных команд.
  5. Файлы Yaml упрощают редактирование конвейера, поскольку это используется в большинстве технологий.

Ограничения инструмента:

  1. Пользователям, не знакомым с инструментом, потребуется время для редактирования файлов YAML, в которых задачи, определенные для развертывания, относятся к Azure Pipelines.
  2. Не бесплатное использование, Azure недавно забрал бесплатные кредиты для службы.
  3. Простые в использовании со службами Azure, другие сторонние облачные службы требуют загрузки секретов вручную или дополнительной настройки для правильной работы.
  4. Необходимость использования онлайн-платформы Azure DevOps для настройки нового пайплайна для проекта, чтобы автоматизировать процесс, который пользователям необходимо изучить с помощью дополнительных технологий, таких как terraform.
  5. Иногда кластеру kuberentes может потребоваться новая учетная запись службы при работе с внешним кластером.

Очистить ресурсы

Следующие команды удалят все ресурсы, созданные вами во время этой демонстрации.

az group delete --name i4mlprod
az group delete --name #Name of any additional ResourceGroup Created