Tutoriel : Découvrir les concepts de vue d’ensemble du déploiement d’une application web Python sur Azure Container Apps
Cette série de tutoriels vous montre comment conteneuriser une application web Python et la déployer sur Azure Container Apps. Un exemple d’application web est conteneurisé et l’image Docker est 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 à 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. Cette série de tutoriels couvre Azure Container Apps. Container Apps est adapté à l’exécution de conteneurs à usage général, en particulier pour les applications qui s’étendent sur de nombreux microservices déployés dans des conteneurs.
Dans cette série de tutoriels, vous créez un conteneur. Pour déployer une application web Python en tant que conteneur sur Azure App Service, consultez application web Python conteneurisée sur Azure avec mongoDB.
Les procédures de cette série de tutoriels vous guident pour effectuer ces tâches :
- Créez 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 GitHub Actions pour mettre à jour le conteneur avec une nouvelle image Docker déclenchée par des modifications apportées à votre dépôt GitHub. Cette étape est facultative.
- Configurez l’intégration continue et la livraison continue (CI/CD) d’une application web Python sur Azure.
Dans cette première partie de la série, vous allez découvrir les concepts fondamentaux du déploiement d’une application web Python sur Azure Container Apps.
Vue d’ensemble du service
Le diagramme suivant montre comment utiliser votre environnement local, vos dépôts GitHub et vos services Azure dans cette série de tutoriels.
Le diagramme comprend les composants 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. Vous pouvez utiliser vos groupes et autorisations Microsoft Entra pour contrôler l’accès aux images Docker.
Dans cette série de tutoriels, la source du Registre est Azure Container Registry. Toutefois, vous pouvez également utiliser Docker Hub ou un registre privé avec des modifications mineures.
Azure Database 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 en utilisant une identité gérée assignée par l'utilisateur. Les informations de connexion sont stockées dans des variables d’environnement configurées explicitement ou via un connecteur de service Azure .
-
L’exemple de code de cette série de tutoriels se trouve dans un dépôt GitHub que vous fork et clonez localement. Pour configurer un flux de travail CI/CD avec GitHub Actions, vous avez besoin d’un compte GitHub.
Vous pouvez toujours suivre cette série de tutoriels sans compte GitHub, si vous travaillez 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 vos modifications. 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 de la série de tutoriels vous montre comment créer un pipeline CI/CD à l’aide de GitHub Actions. Le pipeline génère et déploie automatiquement votre code sur Container Apps chaque fois qu’une nouvelle validation est envoyée à votre dépôt GitHub.
Authentification et sécurité
Dans cette série de tutoriels, vous générez une image conteneur Docker directement dans Azure et déployez-la dans Azure Container Apps. Container Apps s’exécute dans le contexte d’un environnement , pris en charge par un réseau virtuel Azure. Les réseaux virtuels constituent 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 CI/CD, vous autorisez Azure Container Apps en tant qu’application OAuth pour votre compte GitHub. En tant qu’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 d’un principal 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 de cette série de didacticiels stocke les données dans une base de données PostgreSQL. L’exemple de code se connecte à PostgreSQL via une chaîne de connexion. Lorsque l’application s’exécute dans Azure, elle se connecte à la base de données PostgreSQL à l’aide d’une identité managée affectée par l’utilisateur. Le code utilise DefaultAzureCredential
pour mettre à jour dynamiquement le mot de passe dans la chaîne de connexion avec un jeton d’accès Microsoft Entra pendant l’exécution. Ce mécanisme empêche la nécessité de coder en dur le mot de passe dans la chaîne de connexion ou une variable d’environnement, et fournit une couche de sécurité supplémentaire.
La série de tutoriels vous guide tout au long de la création de l’identité managée et lui octroie un rôle Et des autorisations PostgreSQL appropriés afin qu’elle puisse accéder à la base de données et la mettre à jour. Pendant la configuration de Container Apps, la série de tutoriels vous guide tout au long de la configuration de l’identité managée sur l’application et de la configuration des variables d’environnement qui contiennent des informations de connexion pour la base de données. Vous pouvez également utiliser un connecteur de service Azure pour accomplir la même chose.
Conditions préalables
Pour suivre cette série de tutoriels, vous avez besoin des éléments suivants :
Un compte Azure dans lequel vous pouvez créer :
- Une instance de registre de conteneurs Azure.
- Un environnement Azure Container Apps.
- Une instance d'Azure Database for PostgreSQL.
Visual Studio Code ou leAzure CLI, en fonction de l’outil que vous utilisez : - Pour Visual Studio Code, vous avez besoin de l’extension Container Apps.
- Vous pouvez utiliser Azure CLI via azure Cloud Shell.
Packages Python :
- pyscopg2-binary pour se connecter à PostgreSQL.
- Flask ou Django en tant que framework web.
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 de la série de tutoriels, vous disposez d’une application de révision de restaurant déployée et exécutée dans Azure Container Apps qui ressemble à la capture d’écran suivante.