Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Lernprogrammreihe wird gezeigt, wie Sie eine Python Web-App containerisieren und in Azure Container Apps bereitstellen. Eine Beispielweb-App ist containerisiert, und das Docker-Image wird in Azure Container Registry gespeichert. Azure Container Apps ist so konfiguriert, dass das Docker-Image aus der Containerregistrierung abgerufen und ein Container erstellt wird. Die Beispiel-App stellt eine Verbindung mit Azure Database for PostgreSQL zur Veranschaulichung der Kommunikation zwischen Container-Apps und anderen Azure Ressourcen dar.
Es gibt mehrere Optionen zum Erstellen und Bereitstellen von cloud nativen und containerisierten Python Web-Apps auf Azure. In dieser Lernprogrammreihe werden Azure Container Apps behandelt. Container Apps eignet sich zum Ausführen von allgemeinen Containern, insbesondere für Anwendungen, die viele Microservices umfassen, die in Containern bereitgestellt werden.
In dieser Lernprogrammreihe erstellen Sie einen Container. Informationen zum Bereitstellen einer Python Web-App als Container für Azure App Service finden Sie unter Containerized Python Web App auf Azure mit MongoDB.
Die Anleitungen in dieser Tutorial-Serie helfen Ihnen bei der Durchführung dieser Aufgaben:
- Erstellen Sie ein DockerBild aus einer Python Web-App, und speichern Sie das Bild in Azure Container Registry.
- Konfigurieren Sie Azure Container Apps zum Hosten des Docker-Images.
- Richten Sie GitHub Actions ein, um den Container mit einem neuen Docker-Image zu aktualisieren, das durch Änderungen an Ihrem GitHub Repository ausgelöst wird. Dieser Schritt ist optional.
- Richten Sie eine kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) einer Python-Web-App für Azure ein.
In diesem ersten Teil der Reihe lernen Sie grundlegende Konzepte für die Bereitstellung einer Python Web-App auf Azure Container Apps kennen.
Dienstübersicht
Das folgende Diagramm zeigt, wie Sie Ihre lokale Umgebung, GitHub Repositorys und Azure Dienste in dieser Lernprogrammreihe verwenden.
Das Diagramm enthält die folgenden Komponenten:
-
mit Azure Container Apps können Sie Microservices und containerisierte Anwendungen auf einer serverlosen Plattform ausführen. Eine serverlose Plattform bedeutet, dass Sie die Vorteile der Ausführung von Containern mit minimaler Konfiguration genießen. Mit Azure Container Apps können Ihre Anwendungen basierend auf Merkmalen wie HTTP-Datenverkehr, ereignisgesteuerter Verarbeitung oder CPU- oder Arbeitsspeicherlast dynamisch skaliert werden.
Container-Apps ruft Docker-Images aus Azure Container Registry ab. Änderungen an Containerimages lösen ein Update für den bereitgestellten Container aus. Sie können auch GitHub Actions konfigurieren, um Updates auszulösen.
-
mit Azure Container Registry können Sie mit Docker-Images in Azure arbeiten. Da die Containerregistrierung ihren Bereitstellungen in Azure nahe kommt, haben Sie die Kontrolle über den Zugriff. Sie können Ihre Microsoft Entra Gruppen und Berechtigungen verwenden, um den Zugriff auf Docker-Images zu steuern.
In dieser Tutorialreihe ist die Quelle des Registrierungsdienstes Azure Container Registry. Sie können aber auch Docker Hub oder eine private Registrierung mit geringfügigen Änderungen verwenden.
Azure Database for PostgreSQL:
Im Beispielcode werden Anwendungsdaten in einer PostgreSQL-Datenbank gespeichert. Die Container-App verbindet sich mit PostgreSQL, indem sie eine vom Benutzer zugewiesene verwaltete Identität verwendet. Verbindungsinformationen werden in Umgebungsvariablen gespeichert, die explizit oder über einen Azure Service Connector konfiguriert sind.
-
Der Beispielcode für diese Tutorial-Reihe befindet sich in einem GitHub-Repository, das Sie lokal forken und klonen. Zum Einrichten eines CI/CD-Workflows mit GitHub Actions benötigen Sie ein GitHub Konto.
Sie können diese Lernprogrammreihe weiterhin ohne GitHub Konto befolgen, wenn Sie lokal oder in Azure Cloud Shell arbeiten, um das Containerimage aus dem Beispielcode-Repository zu erstellen.
Revisionen und CI/CD
Um Codeänderungen vorzunehmen und an einen Container zu übertragen, erstellen Sie ein neues Docker-Image mit Ihren Änderungen. Dann pushen Sie das Image in die Containerregistrierung und erstellen eine neue Revision der Container App.
Um diesen Prozess zu automatisieren, zeigt Ihnen ein optionaler Schritt in der Lernprogrammreihe, wie Sie eine CI/CD-Pipeline mithilfe von GitHub Actions erstellen. Die Pipeline erstellt und stellt Ihren Code automatisch für Container-Apps bereit, wenn ein neuer Commit an Ihr GitHub Repository übertragen wird.
Authentifizierung und Sicherheit
In dieser Lernprogrammreihe erstellen Sie ein Docker-Containerimage direkt in Azure und stellen es für Azure Container Apps bereit. Container-Apps werden im Kontext eines environment ausgeführt, das von einem Azure virtual network unterstützt wird. Virtuelle Netzwerke sind ein grundlegender Baustein für Ihr privates Netzwerk in Azure. Container-Apps ermöglichen es Ihnen, Ihre Container-App im öffentlichen Web verfügbar zu machen, indem Sie Ingress aktivieren.
Zum Einrichten von CI/CD autorisieren Sie Azure Container Apps als OAuth-App für Ihr GitHub Konto. Als OAuth-App schreibt Container-Apps eine GitHub Actions Workflow-Datei in Ihr Repository mit Informationen zu Azure-Ressourcen und Aufträgen, um diese zu aktualisieren. Der Workflow aktualisiert Azure-Ressourcen mithilfe der Anmeldeinformationen eines Microsoft Entra-Dienstprinzipals (oder eines vorhandenen) mit rollenbasiertem Zugriff für Container Apps und eines Benutzernamens und Kennworts für Azure Container Registry. Anmeldeinformationen werden sicher in Ihrem GitHub Repository gespeichert.
Schließlich speichert die Beispielweb-App in dieser Lernprogrammreihe Daten in einer PostgreSQL-Datenbank. Der Beispielcode stellt über eine connection string eine Verbindung mit PostgreSQL bereit. Wenn die App in Azure ausgeführt wird, wird eine Verbindung mit der PostgreSQL-Datenbank mithilfe einer vom Benutzer zugewiesenen verwalteten Identität hergestellt. Der Code verwendet DefaultAzureCredential, um das Kennwort im connection string dynamisch mit einem Microsoft Entra Zugriffstoken während der Laufzeit zu aktualisieren. Dieser Mechanismus verhindert, dass das Kennwort in der connection string oder einer Umgebungsvariable hartcodiert werden muss, und es bietet eine zusätzliche Sicherheitsebene.
Die Tutorialreihe begleitet Sie bei der Erstellung der verwalteten Identität und dabei, ihr eine geeignete PostgreSQL-Rolle und -Berechtigungen zuzuweisen, damit sie auf die Datenbank zugreifen und diese aktualisieren kann. Während der Konfiguration von Container-Apps führt Sie die Tutorialreihe durch die Konfiguration der verwalteten Identität auf der App und das Einrichten von Umgebungsvariablen, die Verbindungsinformationen für die Datenbank enthalten. Sie können auch einen Azure-Dienstconnector verwenden, um dasselbe zu erreichen.
Voraussetzungen
Um diese Lernprogrammreihe abzuschließen, benötigen Sie Folgendes:
Ein Azure Konto, in dem Sie Folgendes erstellen können:
- Eine Azure Container Registry Instanz.
- Eine Azure Container Apps Umgebung.
- Eine Azure-Datenbank für PostgreSQL-Instanz.
Visual Studio Code oder Azure CLI, je nachdem, welches Tool Sie verwenden:
- Für Visual Studio Code benötigen Sie die Erweiterung Container-Apps.
- Sie können die Azure CLI über Azure Cloud Shell verwenden.
Python Pakete:
- psycopg2-binary zum Herstellen einer Verbindung mit PostgreSQL.
- Flask oder Django als Webframework .
Beispiel-App
Die Python Beispiel-App ist eine Restaurantüberprüfungs-App, die Restaurant- und Prüfdaten in PostgreSQL speichert. Am Ende der Lernprogrammreihe haben Sie eine Restaurantüberprüfungs-App bereitgestellt und in Azure Container Apps ausgeführt, die wie der folgende Screenshot aussieht.