Рубрики
Без рубрики

Используйте действия GitHub для развертывания веб -приложения Python Flask для Azure App Service на Linux

В этом посте я собираюсь пройти через как быстро получить веб -приложение Python Flask … Помечено лазурным, непрерывным развертыванием, GitHub, Python.

В этом посте я собираюсь пройти через как быстро получить веб -приложение Python Flask, развернутое в веб -приложении, размещенном в Azure’s Служба приложений на Linux используя Действия GitHub Анкет

Готовить Azure

Создать основную сумму услуги Azure Active Directory (AAD)

A Сервис принципал является особой формой идентичности в Azure Active Directory, которую можно использовать для разрешения компонентов приложения для связи друг с другом. В контексте развертывания программного обеспечения в Azure принципал сервиса является основным способом разрешения внешних услуг (например, действий GitHub) для взаимодействия с различными API Azure Service.

Самое замечательное в регистрации основных услуг – это то, что мы можем действительно ограничить их сферу до такой степени, что они могут взаимодействовать только с конкретным Ресурсная группа в Azure, как показано в примерной команде ниже.

az ad sp create-for-rbac -n "laps-ghactions" \
 --role contributor \ 
 --scopes /subscriptions/AZURE_SUB_ID/resourceGroups/RESOURCE_GROUP

Если вы хотите использовать вышеуказанную команду, обязательно измените имя (“LAPS-Ghactions”) и добавьте свой идентификатор подписки и имя группы ресурсов, то вы можете использовать Azure Cloud Shell запустить команду.

Запуск команды даст вам выход, аналогичный следующему. Важная информация, которая вам понадобится, – это «Appid», «пароль» и «арендатор», которую мы будем использовать позже при настройке действий GitHub.

{ 
   "appId": "ef037512-0000-0000-0000-000000000000",
   "displayName": "laps-ghactions",
   "name": "http://laps-ghactions",
   "password": "d9ebbc41-0000-0000-0000-000000000000", 
   "tenant": "72f988bf-0000-0000-0000-000000000000"
}

Создайте службу Azure App на Linux

Лучший способ запустить Python в службе приложений – это использовать Планы обслуживания Linux Анкет Этот сценарий Bash это самый быстрый способ достичь этого.

Если вы хотите использовать этот сценарий, вы можете! Откройте Azure Cloud Shell Сеанс (и выберите Bash) в подписке, в которой вы хотите развернуть план службы, а затем использовать Curl для загрузки файла, а затем выполнить его.

curl https://gist.githubusercontent.com/sjwaight/a105617a766717fda831df70373d92c0/raw/8017774e30d6c5366b07b34932c8fa50c9c4a205/createlinuxappservice.sh -o createlinuxappservice.sh 
chmod 755 createlinuxappservice.sh 
./createlinuxappservice.sh YOUR_WEB_APP YOUR_RESOURCE_GROUP_NAME

Хорошо, мы сейчас находимся в хорошем месте с нашей лазурной инфраструктурой, так что давайте начнем с нашей настройкой действий GitHub.

Действия GitHub Ahoy!

На момент написания деятельности GitHub по -прежнему находятся в частном предварительном просмотре, поэтому могут быть недоступны в ваших репозиториях, хотя вы можете Запросить доступ к бета -программе. Если у вас есть (или получить) доступ, вы должны знать, что вкладка «Действия» и «Визуальный редактор показывают только для пользователей, участвующих в предварительном просмотре».

Для своей демонстрации я развел существующий репозиторий, содержащий веб -приложение Python Flask для https://github.com/sjwaight/python-sample-vscode-flask-tutorial Анкет

Что вы заметите, если откроете этот репозиторий, так это то, что в нем есть дополнительный подраздел под названием « .github » по сравнению с источником. Здесь хранятся рабочие процессы действий. Самое удивительное в этом заключается в том, что ваша логика CI/CD живет хорошо с вашим решением и контролируется источником и версирована так же!

Копия объявления рабочего процесса показана ниже.

workflow "Publish to App Service" {
  on = "push"
  resolves = ["Deploy to Web App"]
}

action "Azure Login" {
  uses = "Azure/github-actions/login@master"
  env = {
    AZURE_SUBSCRIPTION = "YOUR_AZURE_SUBSCRIPTION_NAME"
  }
  secrets = ["AZURE_SERVICE_APP_ID", "AZURE_SERVICE_PASSWORD", "AZURE_SERVICE_TENANT"]
}

action "Deploy to Web App" {
  uses = "Azure/github-actions/webapp@master"
  needs = ["Azure Login"]
  env = {
    AZURE_APP_NAME = "YOUR_LINUX_WEB_APP_NAME"
    AZURE_APP_PACKAGE_LOCATION = "./"
  }
}

Рабочий процесс состоит из нескольких шагов (действий), которые могут быть любой комбинацией существующих действий, например, от Microsoft для Azure, или вы можете Пользовательская строительство вашего собственного Анкет Azure от Microsoft – это на GitHub , включая документацию.

Блок рабочего процесса определяет триггер (на толчке) и включает в себя ссылку на последнее действие рабочего процесса. При создании действий через визуального дизайнера вы не видите ничего из этого, но это генерируется для вас.

Действие входа в систему Azure не имеет зависимостей (оно не имеет свойства «потребностей»), но требует, чтобы вы предоставили три секрета, наряду с одной переменной среды (подписка Azure). Глядя на Документация Мы можем видеть, что переменная среды требуется только в том случае, если ваш арендатор Azure Ad связан с более чем одной подпиской Azure.

Наш последний шаг, Развернуть в веб -приложении имеет зависимость от действия входа в систему Azure и требует, чтобы вы предоставили две переменные среды – имя целевого веб -приложения для развертывания, наряду с локальной ссылкой на GitHub (или ZIP), который вы хотите развернуть.

Сохранение секретов в вашем рабочем процессе

Вы заметите на шаге входа в логин Azure, у нас есть три «секрета». Секреты разработаны, чтобы разработчики избегали хранения учетных данных или ключей доступа в своих рабочих процессах.

Вы устанавливаете секреты в репозитории, который хотите развернуть в «Настройках» на вкладках в верхней части экрана – см. Скриншот ниже.

После того, как у вас есть секретный набор, вы не сможете просмотреть значение – оно будет доступно только для действия.

В то время как вы здесь, вы можете настроить три необходимые секреты для действия входа в систему Azure – Azure_service_App_id, Azure_service_password, Azure_service_tenant. Используйте «Appid», «пароль» и «арендатор», который вы захватили ранее в сообщении для этих значений.

Запустите наш рабочий процесс

Поскольку наш рабочий процесс запускается из -за толчка, мы можем отредактировать файл (в моем случае только Readme), и рабочий процесс будет работать. Если мы переключимся на вкладку «Действия», мы сможем посмотреть запуск рабочего процесса и просмотреть историю запуска рабочего процесса. 😎

Проверка веб -приложения

Посмотрим на наше веб -приложение Flask во всей его славе!

Ой…. Это не то, чего я ожидал (это страница удержания по умолчанию для нового веб -приложения Azure, настроенного для поддержки Python).

Давайте выясним, что пошло не так …

Если мы посмотрим на источник Python Flask Project Readme Мы можем увидеть некоторое обсуждение вокруг Docker и стрелочного корня с файлом запуска контейнера startup.txt.

Это, вероятно, не будет иметь большого смысла самостоятельно, но я поделюсь немного о том, как работает предложение Service App Linux.

Под обложками служба приложений Linux использует Docker для поверхности множества времени выполнения и фреймворков, которые она поддерживает, поэтому даже если вы не развертываете приложение в контейнер (чего в этом примере мы не являемся), вы все равно можете использовать функции докера, такие как указание файл запуска.

Теперь мы знаем это, как мы решаем нашу проблему?

Если вы вернетесь на портал Azure и перейдите к экземпляру веб -приложения, вы найдете функцию, называемую «Настройки приложения», которую вы должны открыть.

В верхней части лезвия настройки вы найдете поле «Файл запуска». Он будет пустым, когда вы откроете страницу, и вы должны обновить поле, поместив в нее «startup.txt», а затем нажмите кнопку Сохранить.

Вернемся на наш общедоступный веб -сайт, обновим браузер и посмотрим, что мы получаем.

Yessssssss!

Надеемся, что этот пост дал вам хороший обзор использования действий GitHub для развертывания существующих веб -приложений Python Flask на службу Azure App на Linux. Если у вас есть какие -либо вопросы, или вы хотите, чтобы я сделал это же веб -приложение, но вместо этого используя Docker, оставьте комментарий ниже.

Счастливые дни! 😎

Оригинал: “https://dev.to/simonwaight/use-github-actions-to-deploy-a-python-flask-web-app-to-azure-app-service-on-linux-5dgp”