Zelfstudie: Overzichtsconcepten voor het implementeren van een Python-web-app in Azure Container Apps
In deze reeks zelfstudies ziet u hoe u een Python-web-app in een container kunt zetten en deze implementeert in Azure Container Apps. Een voorbeeldwebapplicatie wordt in een container geplaatst en de Docker-image wordt opgeslagen in Azure Container Registry. Azure Container Apps is geconfigureerd om de Docker-installatiekopie op te halen uit Container Registry en een container te maken. De voorbeeld-app maakt verbinding met Azure Database for PostgreSQL- om communicatie tussen Container Apps en andere Azure-resources te demonstreren.
Er zijn verschillende opties voor het bouwen en implementeren van cloudeigen en in containers geplaatste Python-web-apps in Azure. Deze reeks zelfstudies heeft betrekking op Azure Container Apps. Container Apps is geschikt voor het uitvoeren van containers voor algemeen gebruik, met name voor toepassingen die veel microservices omvatten die zijn geïmplementeerd in containers.
In deze reeks zelfstudies maakt u één container. Als u een Python-web-app wilt implementeren als een container in Azure App Service, raadpleegt u In containers geplaatste Python-web-app in Azure met MongoDB-.
De procedures in deze reeks zelfstudies helpen u bij het voltooien van deze taken:
- Bouw een Docker-image van een Python-web-app en sla de image op in Azure Container Registry.
- Configureer Azure Container Apps- om de Docker-installatiekopie te hosten.
- Stel GitHub Actions in om de container bij te werken met een nieuwe Docker-image die door wijzigingen in uw GitHub-opslagplaats wordt geactiveerd. Deze stap is optioneel.
- Stel continue integratie en continue levering (CI/CD) van een Python-web-app in op Azure.
In dit eerste deel van de reeks leert u basisconcepten voor het implementeren van een Python-web-app in Azure Container Apps.
Overzicht van de service
In het volgende diagram ziet u hoe u uw lokale omgeving, GitHub-opslagplaatsen en Azure-services in deze reeks zelfstudies gaat gebruiken.
Het diagram bevat de volgende onderdelen:
-
Met Azure Container Apps kunt u microservices en toepassingen in containers uitvoeren op een serverloos platform. Een serverloos platform betekent dat u profiteert van de voordelen van het uitvoeren van containers met minimale configuratie. Met Azure Container Apps kunnen uw toepassingen dynamisch worden geschaald op basis van kenmerken zoals HTTP-verkeer, gebeurtenisgestuurde verwerking of CPU- of geheugenbelasting.
Container Apps haalt Docker-installatiekopieën op uit Azure Container Registry. Wijzigingen in containerafbeeldingen veroorzaken een update van de geïmplementeerde container. U kunt gitHub Actions ook configureren om updates te activeren.
-
Met Azure Container Registry kunt u werken met Docker-installatiekopieën in Azure. Omdat Container Registry zich dicht bij uw implementaties in Azure bevindt, hebt u controle over toegang. U kunt uw Microsoft Entra-groepen en -machtigingen gebruiken om de toegang tot Docker-installatiekopieën te beheren.
In deze reeks zelfstudies is de registerbron Azure Container Registry. Maar u kunt ook Docker Hub of een privéregister gebruiken met kleine wijzigingen.
Azure Database for PostgreSQL-:
In de voorbeeldcode worden toepassingsgegevens opgeslagen in een PostgreSQL-database. De container-app maakt verbinding met PostgreSQL met behulp van een door de gebruiker toegewezen beheerde identiteit. Verbindingsgegevens worden opgeslagen in omgevingsvariabelen die expliciet of via een Azure-serviceconnector zijn geconfigureerd.
-
De voorbeeldcode voor deze reeks zelfstudies bevindt zich in een GitHub-opslagplaats die u lokaal forkeert en kloont. Als u een CI/CD-werkstroom wilt instellen met GitHub Actions, hebt u een GitHub-account nodig.
U kunt deze reeks zelfstudies nog steeds volgen zonder een GitHub-account, als u lokaal of in Azure Cloud Shell werkt om de containerinstallatiekopieën te bouwen vanuit de voorbeeldcodeopslagplaats.
Revisies en CI/CD
Als u codewijzigingen wilt aanbrengen en naar een container wilt pushen, maakt u een nieuwe Docker-image met uw wijzigingen. Vervolgens pusht u de image naar Container Registry en maakt u een nieuwe revisie van de container app.
Als u dit proces wilt automatiseren, ziet u in een optionele stap in de reeks zelfstudies hoe u een CI/CD-pijplijn bouwt met behulp van GitHub Actions. De pijplijn bouwt en implementeert uw code automatisch naar Container Apps wanneer een nieuwe commit naar uw GitHub-opslagplaats wordt gepusht.
Verificatie en beveiliging
In deze reeks zelfstudies bouwt u een Docker-containerimage rechtstreeks in Azure en implementeert u deze naar Azure Container Apps. Container Apps wordt uitgevoerd in de context van een -omgeving, die wordt ondersteund door een virtueel Azure-netwerk. Virtuele netwerken zijn een fundamentele bouwsteen voor uw privénetwerk in Azure. Met Container Apps kunt u uw container-app beschikbaar maken voor het openbare web door inkomend verkeer in te schakelen.
Als u CI/CD wilt instellen, autoriseert u Azure Container Apps als een OAuth-app voor uw GitHub-account. Als OAuth-app schrijft Container Apps een Werkstroombestand voor GitHub Actions naar uw opslagplaats met informatie over Azure-resources en -taken om ze bij te werken. De werkstroom werkt Azure-resources bij door gebruik te maken van de referenties van een Microsoft Entra-service-principal (of een bestaande service-principal) met rolgebaseerde toegang tot Container Apps en een gebruikersnaam en wachtwoord voor Azure Container Registry. Referenties worden veilig opgeslagen in uw GitHub-opslagplaats.
Ten slotte slaat de voorbeeldweb-app in deze reeks zelfstudies gegevens op in een PostgreSQL-database. De voorbeeldcode maakt verbinding met PostgreSQL via een verbindingsreeks. Wanneer de app wordt uitgevoerd in Azure, maakt deze verbinding met de PostgreSQL-database met behulp van een door de gebruiker toegewezen beheerde identiteit. De code gebruikt DefaultAzureCredential
om het wachtwoord in de verbindingsreeks dynamisch bij te werken met een Microsoft Entra-toegangstoken tijdens runtime. Dit mechanisme voorkomt dat het wachtwoord in de verbindingsreeks of een omgevingsvariabele moet worden vastgelegd en biedt een extra beveiligingslaag.
De reeks zelfstudies begeleidt u bij het maken van de beheerde identiteit en het verlenen van een geschikte PostgreSQL-rol en -machtigingen, zodat deze toegang heeft tot de database en deze kan bijwerken. Tijdens de configuratie van Container Apps begeleidt de reeks zelfstudies u bij het configureren van de beheerde identiteit in de app en het instellen van omgevingsvariabelen die verbindingsgegevens voor de database bevatten. U kunt ook een Azure-serviceconnector gebruiken om hetzelfde te bereiken.
Voorwaarden
U hebt het volgende nodig om deze reeks zelfstudies te voltooien:
Een Azure-account waar u het volgende kunt maken:
- Een Azure Container Registry-exemplaar.
- Een Azure Container Apps-omgeving.
- Een Azure Database for PostgreSQL-exemplaar.
Visual Studio Code of de Azure CLI-, afhankelijk van het hulpprogramma dat u gebruikt:
- Voor Visual Studio Code hebt u de Container Apps-extensie nodig.
- U kunt de Azure CLI gebruiken via Azure Cloud Shell-.
Python-pakketten:
- pyscopg2-binary voor het maken van verbinding met PostgreSQL.
- Flask of Django als webframework.
Voorbeeld-app
De Python-voorbeeld-app is een restaurantbeoordelings-app die restaurant- en beoordelingsgegevens opslaat in PostgreSQL. Aan het einde van de reeks zelfstudies hebt u een app voor restaurantbeoordeling geïmplementeerd en uitgevoerd in Azure Container Apps die eruitziet als de volgende schermopname.