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