Compartir vía


Tutorial: Información general sobre conceptos para implementar 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 nativas de la nube y en contenedores Python en Azure. En esta serie de tutoriales se abordan 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 Containerized Python aplicación web en Azure con MongoDB.

Los procedimientos de esta serie de tutoriales le guían para completar estas tareas:

  • Compile una imagen Docker a partir de una aplicación web de Python y almacene la imagen en Azure Container Registry.
  • Configure Azure Container Apps para hospedar la imagen de Docker.
  • Configure Acciones de GitHub para actualizar el contenedor con una nueva imagen de Docker desencadenada por cambios en el 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 para Azure.

En esta primera parte de la serie, aprenderá conceptos fundamentales 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.

Diagram de entornos y servicios para implementar una aplicación web de Python en Azure Container Apps.

El diagrama incluye estos componentes:

  • Azure Container Apps:

    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 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:

    Azure Container Registry permite trabajar con imágenes de Docker en Azure. Dado que Container Registry está cerca de las implementaciones de 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 se Azure Container Registry. Pero también puede usar Docker Hub o un registro privado con modificaciones menores.

  • Azure Database for 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 a través de un conector de servicio Azure.

  • GitHub:

    El código de ejemplo de esta serie de tutoriales se encuentra en un repositorio de GitHub que debes bifurcar y que puedes clonar localmente. Para configurar un flujo de trabajo de CI/CD con Acciones de GitHub, necesita 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 enseña a crear una canalización de CI/CD usando Acciones de GitHub. 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, construirás una imagen de Docker directamente en Azure y lo desplegarás en Azure Container Apps. Container Apps se ejecuta en el contexto de un vironment, que es compatible con una red virtual 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 la cuenta de GitHub. Como aplicación de OAuth, Container Apps escribe un archivo de flujo de trabajo de Acciones de GitHub en tu repositorio con información sobre los recursos de Azure y los trabajos para actualizarlos. El flujo de trabajo actualiza los recursos de Azure utilizando 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 un 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 el 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 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 el CLI de Azure, en función de la herramienta que use:

  • 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 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.

Captura de pantalla de la aplicación de ejemplo creada a partir de una aplicación web contenedorizada de Python.

Paso siguiente