Tutorial: Información general sobre los conceptos de implementación de una aplicación web de Python en Azure Container Apps
En esta serie de tutoriales se muestra cómo incluir en contenedores una aplicación web de Python e implementarla en Azure Container Apps. Una aplicación web de ejemplo está en contenedor y la imagen de Docker se almacena en Azure Container Registry. Azure Container Apps está configurado para extraer la imagen de Docker de Container Registry y crear un contenedor. La aplicación de ejemplo se conecta a azure Database for PostgreSQL para demostrar la comunicación entre Container Apps y otros recursos de Azure.
Hay varias opciones para compilar e implementar aplicaciones web de Python nativas y en contenedores en la nube en Azure. En esta serie de tutoriales se describe Azure Container Apps. Container Apps es adecuado para ejecutar contenedores de uso general, especialmente para aplicaciones que abarcan muchos microservicios implementados en contenedores.
En esta serie de tutoriales, creará un contenedor. Para implementar una aplicación web de Python como contenedor en Azure App Service, consulte aplicación web de Python en contenedor en Azure con MongoDB.
Los procedimientos de esta serie de tutoriales le guían para completar estas tareas:
- Compile una imagen de Docker
desde una aplicación web de Python y almacene la imagen en Azure Container Registry . - Configurar Azure Container Apps para hospedar la imagen de Docker.
- Configure las acciones de GitHub para actualizar el contenedor con una nueva imagen de Docker al detectar cambios en su repositorio de GitHub. Este paso es opcional.
- Configure la integración continua y la entrega continua (CI/CD) de una aplicación web de Python en Azure.
En esta primera parte de la serie, aprenderá conceptos básicos para implementar una aplicación web de Python en Azure Container Apps.
Introducción al servicio
En el diagrama siguiente se muestra cómo usará el entorno local, los repositorios de GitHub y los servicios de Azure de esta serie de tutoriales.
El diagrama incluye estos componentes:
Aplicaciones de Contenedores de Azure:
Azure Container Apps permite ejecutar microservicios y aplicaciones en contenedores en una plataforma sin servidor. Una plataforma sin servidor significa que disfruta de las ventajas de ejecutar contenedores con una configuración mínima. Con Azure Container Apps, las aplicaciones se pueden escalar dinámicamente en función de características como el tráfico HTTP, el procesamiento controlado por eventos o la carga de cpu o memoria.
Container Apps extrae imágenes de Docker de Azure Container Registry. Los cambios en las imágenes de contenedor desencadenan una actualización en el contenedor implementado. También puede configurar Acciones de GitHub para desencadenar actualizaciones.
-
Azure Container Registry permite trabajar con imágenes de Docker en Azure. Dado que Container Registry está cerca de las implementaciones en Azure, tiene control sobre el acceso. Puede usar los grupos y permisos de Microsoft Entra para controlar el acceso a las imágenes de Docker.
En esta serie de tutoriales, el origen del registro es Azure Container Registry. Pero también puede usar Docker Hub o un registro privado con modificaciones menores.
Base de datos de Azure para PostgreSQL:
El código de ejemplo almacena los datos de la aplicación en una base de datos postgreSQL. La aplicación contenedora se conecta a PostgreSQL mediante una identidad administrada asignada por el usuario . La información de conexión se almacena en variables de entorno configuradas explícitamente o mediante un conector de servicio de Azure .
-
El código de ejemplo de esta serie de tutoriales se encuentra en un repositorio de GitHub que puedes bifurcar y clonar localmente. Para configurar un flujo de trabajo de CI/CD con GitHub Actions, necesitáis una cuenta de GitHub.
Todavía puede seguir esta serie de tutoriales sin una cuenta de GitHub, si trabaja localmente o en Azure Cloud Shell para compilar la imagen de contenedor desde el repositorio de código de ejemplo.
Revisiones y CI/CD
Para realizar cambios en el código e insertarlos en un contenedor, cree una nueva imagen de Docker con los cambios. A continuación, inserte la imagen en Container Registry y cree una nueva revisión de la aplicación contenedora.
Para automatizar este proceso, un paso opcional de la serie de tutoriales muestra cómo construir un pipeline de CI/CD utilizando GitHub Actions. La canalización compila e implementa automáticamente el código en Container Apps cada vez que se inserta una nueva confirmación en el repositorio de GitHub.
Autenticación y seguridad
En esta serie de tutoriales, creará una imagen de contenedor de Docker directamente en Azure e la implementará en Azure Container Apps. Container Apps se ejecuta en el contexto de un entorno de , que es compatible con una red virtual de Azure . Las redes virtuales son un bloque de creación fundamental para la red privada en Azure. Container Apps permite exponer la aplicación contenedora a la web pública habilitando la entrada.
Para configurar CI/CD, autoriza Azure Container Apps como una aplicación OAuth para tu cuenta de GitHub. Como aplicación de OAuth, Container Apps escribe un archivo de flujo de trabajo de Acciones de GitHub en el repositorio con información sobre los recursos y trabajos de Azure para actualizarlos. El flujo de trabajo actualiza los recursos de Azure mediante las credenciales de una entidad de servicio de Microsoft Entra (o una existente) con acceso basado en roles para Container Apps y un nombre de usuario y contraseña para Azure Container Registry. Las credenciales se almacenan de forma segura en el repositorio de GitHub.
Por último, la aplicación web de ejemplo de esta serie de tutoriales almacena datos en una base de datos PostgreSQL. El código de ejemplo se conecta a PostgreSQL a través de una cadena de conexión. Cuando la aplicación se ejecuta en Azure, se conecta a la base de datos postgreSQL mediante una identidad administrada asignada por el usuario. El código usa DefaultAzureCredential
para actualizar dinámicamente la contraseña en la cadena de conexión con un token de acceso de Microsoft Entra durante el tiempo de ejecución. Este mecanismo evita la necesidad de codificar la contraseña en la cadena de conexión o en una variable de entorno, y proporciona una capa adicional de seguridad.
La serie de tutoriales le guía a través de la creación de la identidad administrada y la concesión de un rol y permisos de PostgreSQL adecuados para que pueda acceder a la base de datos y actualizarla. Durante la configuración de Container Apps, la serie de tutoriales le guía a través de la configuración de la identidad administrada en la aplicación y la configuración de variables de entorno que contienen información de conexión para la base de datos. También puede usar un conector de servicio de Azure para lograr lo mismo.
Prerrequisitos
Para completar esta serie de tutoriales, necesita:
Una cuenta de Azure donde puede crear:
- Una instancia de Azure Container Registry.
- Un entorno de Azure Container Apps.
- Una instancia de la base de datos de Azure para PostgreSQL.
Visual Studio Code o laCLI de Azure, dependiendo de la herramienta que utilices: - Para Visual Studio Code, se necesita la extensión de Container Apps.
- Puede usar la CLI de Azure a través de azure Cloud Shell.
Paquetes de Python:
- psycopg2-binary para conectarse a PostgreSQL.
- Flask o Django como marco de trabajo web.
Aplicación de ejemplo
La aplicación de ejemplo de Python es una aplicación de revisión de restaurantes que guarda el restaurante y revisa los datos en PostgreSQL. Al final de la serie de tutoriales, tendrá una aplicación de revisión de restaurante implementada y en ejecución en Azure Container Apps que tiene un aspecto similar a la captura de pantalla siguiente.