Vue d’ensemble : Déployer une application web Python sur Azure Container Apps
Ce tutoriel vous montre comment conteneuriser une application web Python et la déployer sur Azure Container Apps. Un exemple d’application web sera conteneurisé et l’image Docker stockée dans Azure Container Registry. Azure Container Apps est configuré pour extraire l’image Docker à partir de Container Registry et créer un conteneur. L’exemple d’application se connecte à un Azure Database pour PostgreSQL pour illustrer la communication entre Container Apps et d’autres ressources Azure.
Il existe plusieurs options pour créer et déployer des applications web Python natives et conteneurisées dans le cloud sur Azure. Ce tutoriel traite d’Azure Container Apps. Container Apps est adapté à l’exécution de conteneurs à usage général, en particulier pour les applications qui couvrent de nombreux microservices déployés dans des conteneurs. Dans ce tutoriel, vous allez créer un conteneur. Pour déployer une application web Python en tant que conteneur sur Azure App Service, consultez l’application web Python conteneurisée sur App Service.
Dans ce tutoriel, voici ce que vous allez faire :
- Générez une image Docker à partir d’une application web Python et stockez l’image dans Azure Container Registry.
- Configurez Azure Container Apps pour héberger l’image Docker.
- Configurez une action GitHub qui met à jour le conteneur avec une nouvelle image Docker déclenchée par des modifications apportées à votre dépôt GitHub. Cette dernière étape est facultative.
À l’issue de ce tutoriel, vous allez configurer l’intégration continue (CI) et le déploiement continu (CD) d’une application web Python sur Azure.
Présentation du service
Le diagramme de service prenant en charge ce didacticiel montre comment votre environnement local, vos référentiels GitHub et les services Azure sont utilisés dans le didacticiel.
Les composants prenant en charge ce didacticiel et présentés dans le diagramme ci-dessus sont les suivants :
-
- Azure Container Apps vous permet d’exécuter des microservices et des applications conteneurisées sur une plateforme serverless. Une plateforme serverless signifie que vous bénéficiez des avantages de l’exécution de conteneurs avec une configuration minimale. Avec Azure Container Apps, vos applications peuvent évoluer dynamiquement en fonction des caractéristiques telles que le trafic HTTP, le traitement piloté par les événements ou la charge processeur ou mémoire.
- Container Apps extrait des images Docker à partir d’Azure Container Registry. Les modifications apportées aux images conteneur déclenchent une mise à jour du conteneur déployé. Vous pouvez également configurer GitHub Actions pour déclencher des mises à jour.
-
- Azure Container Registry vous permet d’utiliser des images Docker dans Azure. Étant donné que Container Registry est proche de vos déploiements dans Azure, vous avez le contrôle sur l’accès, ce qui vous permet d’utiliser vos groupes Et autorisations Microsoft Entra pour contrôler l’accès aux images Docker.
- Dans ce tutoriel, la source du Registre est Azure Container Registry, mais vous pouvez également utiliser Docker Hub ou un registre privé avec des modifications mineures.
Base de données Azure pour PostgreSQL
- L’exemple de code stocke les données d’application dans une base de données PostgreSQL.
- L’application conteneur se connecte à PostgreSQL via des variables d’environnement configurées explicitement ou avec azure Service Connecter or.
-
- L’exemple de code de ce didacticiel se trouve dans un dépôt GitHub que vous allez fork et cloner localement. Pour configurer un flux de travail CI/CD avec GitHub Actions, vous avez besoin d’un compte GitHub.
- Vous pouvez toujours suivre ce didacticiel sans compte GitHub, travailler localement ou dans Azure Cloud Shell pour générer l’image conteneur à partir de l’exemple de référentiel de code.
Révisions et CI/CD
Pour apporter des modifications de code et les envoyer (push) à un conteneur, vous créez une image Docker avec votre modification. Ensuite, vous envoyez l’image à Container Registry et créez une nouvelle révision de l’application conteneur.
Pour automatiser ce processus, une étape facultative du didacticiel vous montre comment créer un pipeline d’intégration continue et de livraison continue (CI/CD) avec GitHub Actions. Le pipeline génère et déploie automatiquement votre code dans l’application conteneur chaque fois qu’une nouvelle validation est envoyée à votre dépôt GitHub.
Authentification et sécurité
Dans ce tutoriel, vous allez créer une image conteneur Docker directement dans Azure et la déployer sur Azure Container Apps. Container Apps s’exécute dans le contexte d’un environnement pris en charge par un Réseau virtuel Azure (VNet). Les réseaux virtuels sont un bloc de construction fondamental pour votre réseau privé dans Azure. Container Apps vous permet d’exposer votre application conteneur sur le web public en activant l’entrée.
Pour configurer l’intégration continue et la livraison continue (CI/CD), vous allez autoriser Azure Container Apps en tant que Application OAuth pour votre compte GitHub. En tant que Application OAuth, Container Apps écrit un fichier de flux de travail GitHub Actions dans votre dépôt avec des informations sur les ressources et les travaux Azure pour les mettre à jour. Le flux de travail met à jour les ressources Azure à l’aide des informations d’identification d’un principal de service Microsoft Entra (ou existant) avec un accès en fonction du rôle pour Container Apps et un nom d’utilisateur et un mot de passe pour Azure Container Registry. Les informations d’identification sont stockées en toute sécurité dans votre dépôt GitHub.
Enfin, l’exemple d’application web du didacticiel stocke les données dans une base de données PostgreSQL. L’exemple de code se connecte à PostgreSQL via un chaîne de connexion. Pendant la configuration de l’application conteneur, le didacticiel vous guide tout au long de la configuration des variables d’environnement contenant des informations de connexion. Vous pouvez également utiliser un Connecter de service Azure pour accomplir la même chose.
Prérequis
Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :
Un compte Azure dans lequel vous pouvez créer :
- Azure Container Registry
- Environnement Azure Container Apps
- Base de données Azure pour PostgreSQL
Visual Studio Code ou Azure CLI, en fonction de l’outil que vous allez utiliser
- Pour Visual Studio Code, vous aurez besoin de l’extension Container Apps.
- Vous pouvez également utiliser Azure CLI via Azure Cloud Shell.
Packages Python :
- pyscopg2-binary pour la connexion à PostgreSQL.
- Infrastructure web Flask ou Django .
Exemple d’application
L’exemple d’application Python est une application de révision de restaurant qui enregistre les données de restaurant et de révision dans PostgreSQL. À la fin du tutoriel, vous disposez d’une application de révision des restaurants déployée et exécutée dans Azure Container Apps qui ressemble à la capture d’écran ci-dessous.