Omówienie: wdrażanie aplikacji internetowej w języku Python w usłudze Azure Container Apps
W tym samouczku pokazano, jak konteneryzować aplikację internetową w języku Python i wdrożyć ją w usłudze Azure Container Apps. Przykładowa aplikacja internetowa zostanie konteneryzowana i obraz platformy Docker przechowywany w usłudze Azure Container Registry. Usługa Azure Container Apps jest skonfigurowana do ściągania obrazu platformy Docker z usługi Container Registry i tworzenia kontenera. Przykładowa aplikacja łączy się z usługą Azure Database for PostgreSQL w celu zademonstrowania komunikacji między usługą Container Apps i innymi zasobami platformy Azure.
Istnieje kilka opcji tworzenia i wdrażania natywnych i konteneryzowanych aplikacji internetowych w chmurze na platformie Azure. W tym samouczku opisano usługę Azure Container Apps. Usługa Container Apps jest odpowiednia do uruchamiania kontenerów ogólnego przeznaczenia, zwłaszcza w przypadku aplikacji obejmujących wiele mikrousług wdrożonych w kontenerach. W tym samouczku utworzysz jeden kontener. Aby wdrożyć aplikację internetową w języku Python jako kontener w usłudze aplikacja systemu Azure Service, zobacz Konteneryzowana aplikacja internetowa języka Python w usłudze App Service.
W tym samouczku wykonasz następujące elementy:
- Skompiluj obraz platformy Docker z poziomu aplikacji internetowej w języku Python i zapisz obraz w usłudze Azure Container Registry.
- Skonfiguruj usługę Azure Container Apps do hostowania obrazu platformy Docker.
- Skonfiguruj akcję usługi GitHub, która aktualizuje kontener przy użyciu nowego obrazu platformy Docker wyzwalanego przez zmiany w repozytorium GitHub. Ten ostatni krok jest opcjonalny.
Po wykonaniu tego samouczka skonfigurujesz usługę Continuous Integration (CI) i continuous deployment (CD) aplikacji internetowej w języku Python na platformę Azure.
Przegląd funkcji obsługi klienta
Diagram usługi obsługujący ten samouczek przedstawia sposób użycia środowiska lokalnego, repozytoriów GitHub i usług platformy Azure w tym samouczku.
Składniki obsługujące ten samouczek i pokazane na powyższym diagramie to:
-
- Usługa Azure Container Apps umożliwia uruchamianie mikrousług i konteneryzowanych aplikacji na platformie bezserwerowej. Platforma bezserwerowa oznacza, że możesz korzystać z zalet uruchamiania kontenerów z minimalną konfiguracją. Dzięki usłudze Azure Container Apps aplikacje mogą dynamicznie skalować na podstawie cech, takich jak ruch HTTP, przetwarzanie sterowane zdarzeniami lub obciążenie procesora CPU lub pamięci.
- Usługa Container Apps ściąga obrazy platformy Docker z usługi Azure Container Registry. Zmiany obrazów kontenerów wyzwalają aktualizację wdrożonego kontenera. Możesz również skonfigurować funkcję GitHub Actions do wyzwalania aktualizacji.
-
- Usługa Azure Container Registry umożliwia pracę z obrazami platformy Docker na platformie Azure. Ponieważ usługa Container Registry znajduje się blisko wdrożeń na platformie Azure, masz kontrolę nad dostępem, dzięki czemu możesz użyć grup i uprawnień firmy Microsoft do kontrolowania dostępu do obrazów platformy Docker.
- W tym samouczku źródłem rejestru jest usługa Azure Container Registry, ale możesz również użyć usługi Docker Hub lub prywatnego rejestru z drobnymi modyfikacjami.
-
- Przykładowy kod przechowuje dane aplikacji w bazie danych PostgreSQL.
- Aplikacja kontenera łączy się z bazą danych PostgreSQL za pomocą zmiennych środowiskowych skonfigurowanych jawnie lub za pomocą Połączenie or usługi Platformy Azure.
-
- Przykładowy kod dla tego samouczka znajduje się w repozytorium GitHub, w którym rozwidniesz i sklonujesz lokalnie. Aby skonfigurować przepływ pracy ciągłej integracji/ciągłego wdrażania za pomocą funkcji GitHub Actions, potrzebne jest konto usługi GitHub.
- Nadal możesz kontynuować pracę z tym samouczkiem bez konta usługi GitHub, działającego lokalnie lub w usłudze Azure Cloud Shell , aby skompilować obraz kontenera z repozytorium przykładowego kodu.
Poprawki i ciągła integracja/ciągłe wdrażanie
Aby wprowadzić zmiany kodu i wypchnąć je do kontenera, należy utworzyć nowy obraz platformy Docker ze zmianą. Następnie wypchniesz obraz do usługi Container Registry i utworzysz nową wersję aplikacji kontenera.
Aby zautomatyzować ten proces, opcjonalny krok w samouczku pokazuje, jak utworzyć potok ciągłej integracji i ciągłego dostarczania (CI/CD) za pomocą funkcji GitHub Actions. Potok automatycznie kompiluje i wdraża kod w aplikacji kontenera za każdym razem, gdy nowe zatwierdzenie zostanie wypchnięte do repozytorium GitHub.
Uwierzytelnianie i zabezpieczenia
W tym samouczku utworzysz obraz kontenera platformy Docker bezpośrednio na platformie Azure i wdrożysz go w usłudze Azure Container Apps. Usługa Container Apps działa w kontekście środowiska, które jest obsługiwane przez sieci wirtualne platformy Azure. Sieci wirtualne to podstawowy blok konstrukcyjny dla sieci prywatnej na platformie Azure. Usługa Container Apps umożliwia uwidocznienie aplikacji kontenera w publicznej sieci Web przez włączenie ruchu przychodzącego.
Aby skonfigurować ciągłą integrację i ciągłe dostarczanie (CI/CD), autoryzujesz usługę Azure Container Apps jako aplikację OAuth dla konta usługi GitHub. Jako aplikacja OAuth usługa Container Apps zapisuje plik przepływu pracy funkcji GitHub Actions w repozytorium z informacjami o zasobach i zadaniach platformy Azure w celu ich zaktualizowania. Przepływ pracy aktualizuje zasoby platformy Azure przy użyciu poświadczeń jednostki usługi Microsoft Entra (lub istniejącej) z dostępem opartym na rolach dla usługi Container Apps oraz nazwą użytkownika i hasłem usługi Azure Container Registry. Poświadczenia są bezpiecznie przechowywane w repozytorium GitHub.
Na koniec przykładowa aplikacja internetowa z samouczka przechowuje dane w bazie danych PostgreSQL. Przykładowy kod łączy się z bazą danych PostgreSQL za pośrednictwem parametry połączenia. Podczas konfigurowania aplikacji kontenera samouczek przeprowadzi Cię przez proces konfigurowania zmiennych środowiskowych zawierających informacje o połączeniu. Możesz również użyć Połączenie or usługi platformy Azure, aby wykonać to samo.
Wymagania wstępne
Do ukończenia tego samouczka potrzebne są następujące elementy:
Konto platformy Azure, na którym można utworzyć:
- Azure Container Registry
- Środowisko usługi Azure Container Apps
- Azure Database for PostgreSQL
Program Visual Studio Code lub interfejs wiersza polecenia platformy Azure w zależności od narzędzia, którego będziesz używać
- W przypadku programu Visual Studio Code potrzebne jest rozszerzenie Container Apps.
- Interfejs wiersza polecenia platformy Azure można również używać za pośrednictwem usługi Azure Cloud Shell.
Pakiety języka Python:
- pyscopg2-binary na potrzeby nawiązywania połączenia z bazą danych PostgreSQL.
- Platforma internetowa Flask lub Django .
Przykładowa aplikacja
Przykładowa aplikacja w języku Python to aplikacja do przeglądu restauracji, która zapisuje dane restauracji i przegląda dane w usłudze PostgreSQL. Na końcu samouczka będziesz mieć wdrożoną i uruchomioną aplikację do przeglądu restauracji w usłudze Azure Container Apps, która wygląda jak na poniższym zrzucie ekranu.