Übersicht: Bereitstellen einer Python-Web-App in Azure-Container-Apps
In diesem Lernprogramm erfahren Sie, wie Sie eine Python-Web-App containerisieren und in Azure-Container-Apps bereitstellen. Eine Beispielweb-App wird containerisiert und das Docker-Image, das in der Azure-Containerregistrierung gespeichert ist. 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 einer Azure-Datenbank für PostgreSQL bereit, um die Kommunikation zwischen Container-Apps und anderen Azure-Ressourcen zu veranschaulichen.
Es gibt mehrere Optionen zum Erstellen und Bereitstellen von cloud nativen und containerisierten Python-Web-Apps in Azure. In diesem Lernprogramm werden Azure Container-Apps behandelt. Container-Apps eignen sich gut zum Ausführen allgemeiner Container, insbesondere für Anwendungen, die viele Microservices umfassen, die in Containern bereitgestellt werden. In diesem Lernprogramm 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 on App Service.
In diesem Tutorial werden Sie:
- Erstellen Sie ein Docker-Image aus einer Python-Web-App, und speichern Sie das Image in azure Container Registry.
- Konfigurieren Sie Azure-Container-Apps , um das Docker-Image zu hosten.
- Richten Sie eine GitHub-Aktion ein, die den Container mit einem neuen Docker-Image aktualisiert, das durch Änderungen an Ihrem GitHub-Repository ausgelöst wird. Dieser letzte Schritt ist optional.
Im Anschluss an dieses Lernprogramm werden Sie für continuous Integration (CI) und Continuous Deployment (CD) einer Python-Web-App für Azure eingerichtet.
Übersicht über die Dienste
Das Dienstdiagramm, das dieses Lernprogramm unterstützt, zeigt, wie Ihre lokale Umgebung, GitHub-Repositorys und Azure-Dienste im Lernprogramm verwendet werden.
Die Komponenten, die dieses Lernprogramm unterstützen und im obigen Diagramm gezeigt werden, sind:
-
- Mit Azure Container Apps können Sie Microservices und Containeranwendungen 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 der Azure-Containerregistrierung ab. Änderungen an Containerimages lösen ein Update für den bereitgestellten Container aus. Sie können GitHub-Aktionen auch so konfigurieren, dass Updates ausgelöst werden.
-
- Mit der Azure-Containerregistrierung 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, sodass Sie Ihre Microsoft Entra-Gruppen und Berechtigungen verwenden können, um den Zugriff auf Docker-Images zu steuern.
- In diesem Lernprogramm ist die Registrierungsquelle azure Container Registry, Sie können aber auch Docker Hub oder eine private Registrierung mit geringfügigen Änderungen verwenden.
Azure-Datenbank für PostgreSQL
- Im Beispielcode werden Anwendungsdaten in einer PostgreSQL-Datenbank gespeichert.
- Die Container-App stellt eine Verbindung mit PostgreSQL über Umgebungsvariablen bereit, die explizit oder mit Azure Service Verbinden or konfiguriert sind.
-
- Der Beispielcode für dieses Lernprogramm befindet sich in einem GitHub-Repository, das Sie lokal verzweigen und klonen. Zum Einrichten eines CI/CD-Workflows mit GitHub-Aktionen benötigen Sie ein GitHub-Konto.
- Sie können diesem Lernprogramm weiterhin folgen, ohne ein GitHub-Konto zu verwenden, lokal oder in der Azure Cloud Shell zu arbeiten, um das Containerimage aus dem Beispielcode-Repository zu erstellen.
Überarbeitungen und CI/CD
Um Codeänderungen vorzunehmen und an einen Container zu übertragen, erstellen Sie ein neues Docker-Image mit Ihrer Änderung. Anschließend übertragen Sie das Image in die Containerregistrierung und erstellen eine neue Überarbeitung der Container-App.
Um diesen Prozess zu automatisieren, zeigt ihnen ein optionaler Schritt im Lernprogramm, wie Sie eine fortlaufende Integrations- und Kontinuierliche Übermittlungspipeline (CI/CD) mit GitHub Actions erstellen. Die Pipeline erstellt und stellt Ihren Code automatisch in der Container-App bereit, wenn ein neuer Commit an Ihr GitHub-Repository übertragen wird.
Authentifizierung und Sicherheit
In diesem Lernprogramm erstellen Sie ein Docker-Containerimage direkt in Azure und stellen es in Azure-Container-Apps bereit. Container-Apps werden im Kontext einer Umgebung ausgeführt, die von einem virtuellen Azure-Netzwerk (VNet) unterstützt wird. VNets 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 den Eingang aktivieren.
Um eine kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) einzurichten, autorisieren Sie Azure-Container-Apps als OAuth-App für Ihr GitHub-Konto. Als OAuth-App schreibt Container-Apps eine GitHub Actions-Workflowdatei in Ihr Repository mit Informationen zu Azure-Ressourcen und -Aufträgen, um sie zu aktualisieren. Der Workflow aktualisiert Azure-Ressourcen mithilfe von Anmeldeinformationen eines Microsoft Entra-Dienstprinzipals (oder einer vorhandenen) mit rollenbasiertem Zugriff für Container-Apps und Benutzername und Kennwort für die Azure Container Registry. Anmeldeinformationen werden sicher in Ihrem GitHub-Repository gespeichert.
Schließlich speichert das Lernprogramm-Web-App Daten in einer PostgreSQL-Datenbank. Der Beispielcode stellt über eine Verbindungszeichenfolge eine Verbindung mit PostgreSQL bereit. Während der Konfiguration der Container-App führt Sie das Lernprogramm durch das Einrichten von Umgebungsvariablen, die Verbindungsinformationen enthalten. Sie können auch einen Azure Service Verbinden or verwenden, um dasselbe zu erreichen.
Voraussetzungen
Um dieses Tutorial abzuschließen, benötigen Sie Folgendes:
Ein Azure-Konto, in dem Sie Folgendes erstellen können:
- Azure Container Registry
- Azure Container Apps-Umgebung
- Azure Database for PostgreSQL
Visual Studio Code oder Azure CLI, je nachdem, welches Tool Sie verwenden werden
- Für Visual Studio Code benötigen Sie die Container-Apps-Erweiterung.
- Sie können Azure CLI auch über die Azure Cloud Shell verwenden.
Python-Pakete:
- pyscopg2-binary zum Herstellen einer Verbindung mit PostgreSQL.
- Flask - oder Django-Webframework .
Beispiel-App
Die Python-Beispiel-App ist eine Restaurant-Rezensions-App, die Restaurant- und Rezensionsdaten in PostgreSQL speichert. Am Ende des Lernprogramms haben Sie eine Restaurantüberprüfungs-App bereitgestellt und in Azure-Container-Apps ausgeführt, die wie der folgende Screenshot aussieht.