Учебник: Изучите основные концепции развертывания веб-приложения Python в службе Azure Container Apps
В этой серии учебников показано, как контейнеризировать веб-приложение Python и развернуть его в Azure Container Apps. Пример веб-приложения контейнеризован, и образ Docker хранится в реестре контейнеров Azure. Приложения контейнеров Azure настроены для извлечения образа Docker из реестра контейнеров и создания контейнера. Пример приложения подключается к Базе данных Azure для PostgreSQL для демонстрации взаимодействия между приложениями-контейнерами и другими ресурсами Azure.
Существует несколько вариантов создания и развертывания облачных и контейнерных веб-приложений Python в Azure. В этой серии руководств рассматриваются приложения контейнеров Azure. Контейнерные приложения хорошо подходит для запуска контейнеров общего назначения, особенно для приложений, охватывающих множество микрослужб, развернутых в контейнерах.
В этом руководстве показано, как создать один контейнер. Сведения о развертывании контейнеризованного веб-приложения Python с использованием MongoDB в Службе приложений Azure см. в статье Контейнерное веб-приложение Python в Azure сMongoDB.
Процедуры, описанные в этом руководстве, помогут выполнить следующие задачи:
- Создайте образ Docker из веб-приложения Python и сохраните образ в реестре контейнеров Azure.
- Настройте Azure Container Apps для размещения образа Docker.
- Настройте GitHub Actions для обновления контейнера с новым образом Docker, активированным изменениями в репозитории GitHub. Этот шаг является необязательным.
- Настройте непрерывную интеграцию и непрерывную доставку (CI/CD) веб-приложения Python в Azure.
В этой первой части серии вы узнаете основные понятия для развертывания веб-приложения Python в приложениях контейнеров Azure.
Обзор службы
На следующей схеме показано, как использовать локальную среду, репозитории GitHub и службы Azure в этом руководстве.
Схема включает следующие компоненты:
Azure контейнерные приложения:
Приложения контейнеров Azure позволяют запускать микрослужбы и контейнерные приложения на бессерверной платформе. Бессерверная платформа означает, что вы пользуетесь преимуществами запуска контейнеров с минимальной конфигурацией. С помощью приложений контейнеров Azure приложения могут динамически масштабироваться на основе таких характеристик, как HTTP-трафик, обработка на основе событий или загрузка ЦП или памяти.
Контейнерные приложения извлекают образы Docker из реестра контейнеров Azure. Изменения образов контейнеров активируют обновление развернутого контейнера. Вы также можете настроить GitHub Actions для активации обновлений.
-
Реестр контейнеров Azure позволяет работать с образами Docker в Azure. Поскольку реестр контейнеров находится рядом с вашими развертываниями в Azure, вы имеете контроль над доступом. Вы можете использовать группы и разрешения Microsoft Entra для управления доступом к образам Docker.
В этой серии руководств источник реестра — Реестр контейнеров Azure. Но вы также можете использовать Docker Hub или частный реестр с незначительными изменениями.
База данных Azure для PostgreSQL:
В примере кода хранятся данные приложения в базе данных PostgreSQL. Приложение-контейнер подключается к PostgreSQL с помощью управляемого удостоверения, назначаемого пользователем
. Сведения о подключении хранятся в переменных среды, настроенных явно или через соединитель службы Azure. -
Пример кода для этой серии учебников находится в репозитории GitHub, который вы вилируйте и клонируйте локально. Чтобы настроить рабочий процесс CI/CD с GitHub Actions , требуется учетная запись GitHub.
Вы по-прежнему можете следовать за этой серией учебных пособий без учетной записи GitHub, если вы работаете локально или в Azure Cloud Shell, чтобы создать образ контейнера из репозитория примера кода.
Изменения и CI/CD
Чтобы внести изменения в код и отправить их в контейнер, создайте новый образ Docker с изменениями. Затем вы отправляете образ в реестр контейнеров и создаете новую версию приложения контейнера.
Для автоматизации этого процесса в серии руководств показано, как создать конвейер CI/CD с помощью GitHub Actions. Конвейер автоматически создает и развертывает ваш код в контейнерные приложения при пуше нового коммита в репозиторий GitHub.
Проверка подлинности и безопасность
В этом руководстве описано, как создать образ контейнера Docker непосредственно в Azure и развернуть его в приложениях контейнеров Azure. Контейнерные приложения выполняются в контекстесреды
Чтобы настроить CI/CD, вы авторизуете приложения контейнеров Azure в качестве приложения OAuth, для учетной записи GitHub. В качестве приложения OAuth, приложение типа Container Apps записывает в ваш репозиторий файл рабочего процесса GitHub Actions с информацией о ресурcах и задачах Azure для их обновления. Рабочий процесс обновляет ресурсы Azure с помощью учетных данных субъекта-службы Microsoft Entra (или существующего) с доступом на основе ролей для контейнерных приложений и имени пользователя и пароля для реестра контейнеров Azure. Учетные данные хранятся безопасно в репозитории GitHub.
Наконец, пример веб-приложения в этом руководстве хранит данные в базе данных PostgreSQL. Пример кода подключается к PostgreSQL через строку подключения. При запуске приложения в Azure он подключается к базе данных PostgreSQL с помощью управляемого удостоверения, назначаемого пользователем. Код использует DefaultAzureCredential
для динамического обновления пароля в строке подключения с помощью токена доступа Microsoft Entra во время выполнения программы. Этот механизм предотвращает необходимость жестко закодировать пароль в строке подключения или переменной среды, а также обеспечивает дополнительный уровень безопасности.
В серии учебников описано, как создать управляемое удостоверение и предоставить ему соответствующую роль и разрешения PostgreSQL, чтобы получить доступ к базе данных и обновить ее. Во время настройки контейнерных приложений в серии руководств показано, как настроить управляемое удостоверение в приложении и настроить переменные среды, содержащие сведения о подключении для базы данных. Вы также можете использовать соединитель службы Azure для выполнения одной и той же задачи.
Необходимые условия
Для выполнения этой серии учебников вам потребуется:
Учетная запись Azure, в которой можно создать:
- Экземпляр реестра контейнеров Azure.
- Среда приложений контейнеров Azure.
- Инстанция Azure Database для PostgreSQL.
Visual Studio Code или Azure CLIв зависимости от используемого средства:
Пакеты Python:
- pyscopg2-binary для подключения к PostgreSQL.
- Flask или Django в качестве веб-платформы.
Пример приложения
Пример приложения Python — это приложение проверки ресторана, которое сохраняет ресторан и просматривает данные в PostgreSQL. В конце серии учебников у вас будет приложение для обзора ресторанов, развернутое и запущенное в Azure Container Apps, которое выглядит как на следующем снимке экрана.