Udostępnij za pośrednictwem


Samouczek: omówienie pojęć dotyczących wdrażania aplikacji internetowej w języku Python w usłudze Azure Container Apps

W tej serii samouczków pokazano, jak konteneryzować aplikację internetową w języku Python i wdrożyć ją w usłudze Azure Container Apps. Przykładowa aplikacja internetowa jest konteneryzowana, a obraz platformy Docker jest 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 dla chmury i konteneryzowanych aplikacji internetowych języka Python na platformie Azure. W tej serii samouczków omówiono usługę Azure Container Apps. Usługa Container Apps jest odpowiednia do uruchamiania kontenerów ogólnego przeznaczenia, szczególnie w przypadku aplikacji obejmujących wiele mikrousług wdrożonych w kontenerach.

W tej serii samouczków utworzysz jeden kontener. Aby wdrożyć aplikację internetową w języku Python jako kontener w usłudze Azure App Service, zobacz Konteneryzowana aplikacja internetowa Python na platformie Azure z MongoDB.

Procedury opisane w tej serii samouczków zawierają instrukcje dotyczące wykonywania następujących zadań:

  • Skompiluj obraz platformy Docker z poziomu aplikacji internetowej w języku Python i zapisz obraz w usłudze Azure Container Registry.
  • Skonfiguruj Azure Container Apps , aby hostować obraz Docker.
  • Skonfiguruj funkcji GitHub Actions, aby zaktualizować kontener przy użyciu nowego obrazu platformy Docker wyzwalanego przez zmiany w repozytorium GitHub. Ten krok jest opcjonalny.
  • Konfigurowanie ciągłej integracji i ciągłego dostarczania (CI/CD) aplikacji internetowej w języku Python na platformie Azure.

W pierwszej części serii poznasz podstawowe pojęcia dotyczące wdrażania aplikacji internetowej w języku Python w usłudze Azure Container Apps.

Omówienie usługi

Na poniższym diagramie przedstawiono sposób korzystania ze środowiska lokalnego, repozytoriów GitHub i usług platformy Azure w tej serii samouczków.

Diagram środowisk i usług na potrzeby wdrażania aplikacji internetowej w języku Python w usłudze Azure Container Apps.

Diagram zawiera następujące składniki:

  • Azure Container Apps:

    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:

    Usługa Azure Container Registry umożliwia pracę z obrazami Docker na platformie Azure. Ponieważ usługa Container Registry znajduje się blisko wdrożeń na platformie Azure, masz kontrolę nad dostępem. Możesz użyć grup i uprawnień Microsoft Entra do kontrolowania dostępu do obrazów Docker.

    W tej serii samouczków źródłem rejestru jest usługa Azure Container Registry. Można jednak również użyć usługi Docker Hub lub prywatnego rejestru z drobnymi modyfikacjami.

  • Azure Database for PostgreSQL:

    Przykładowy kod przechowuje dane aplikacji w bazie danych PostgreSQL. Aplikacja kontenerowa łączy się z PostgreSQL za pomocą zarządzanej tożsamości przypisanej użytkownikowi. Informacje o połączeniu są przechowywane w zmiennych środowiskowych skonfigurowanych jawnie lub za pośrednictwem łącznika usługi platformy Azure .

  • GitHub:

    Przykładowy kod dla tej serii samouczków znajduje się w repozytorium GitHub, które można rozwidlić i sklonować lokalnie. Aby skonfigurować przepływ pracy CI/CD przy użyciu GitHub Actions, potrzebne jest konto GitHub.

    Nadal możesz kontynuować pracę z tą serią samouczków bez konta usługi GitHub, jeśli pracujesz lokalnie lub w azure Cloud Shell, aby skompilować obraz kontenera z przykładowego repozytorium kodu.

Poprawki i ciągła integracja/ciągłe wdrażanie

Aby wprowadzić zmiany w kodzie i wypchnąć je do kontenera, należy utworzyć nowy obraz platformy Docker ze zmianami. Następnie przesyłasz obraz do usługi Container Registry i tworzysz nową poprawkę aplikacji kontenerowej.

Aby zautomatyzować ten proces, w serii samouczków znajduje się opcjonalny krok pokazujący, jak utworzyć potok CI/CD przy użyciu funkcji GitHub Actions. Potok przetwarzania automatycznie buduje i wdraża twój kod w usłudze Container Apps za każdym razem, gdy nowe zatwierdzenie zostanie przesłane do repozytorium GitHub.

Uwierzytelnianie i zabezpieczenia

W tej serii samouczków 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 wirtualnej sieci Azure. Sieci wirtualne to podstawowy blok konstrukcyjny dla sieci prywatnej na platformie Azure. Usługa Container Apps umożliwia udostępnienie aplikacji kontenerowej w publicznym internecie przez włączenie ingresu.

Aby skonfigurować ciągłą integrację/ciągłe wdrażanie, 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 w tej serii samouczków przechowuje dane w bazie danych PostgreSQL. Przykładowy kod łączy się z bazą danych PostgreSQL za pośrednictwem parametrów połączenia. Gdy aplikacja jest uruchomiona na platformie Azure, łączy się z bazą danych PostgreSQL przy użyciu tożsamości zarządzanej przypisanej przez użytkownika. Kod używa DefaultAzureCredential do dynamicznego aktualizowania hasła w parametrach połączenia przy użyciu tokenu dostępu Firmy Microsoft Entra w czasie wykonywania. Ten mechanizm uniemożliwia zakodowanie hasła w parametrach połączenia lub zmiennej środowiskowej i zapewnia dodatkową warstwę zabezpieczeń.

W tej serii samouczków przedstawiono proces tworzenia tożsamości zarządzanej i udzielania jej odpowiedniej roli i uprawnień bazy danych PostgreSQL, dzięki czemu może uzyskiwać dostęp do bazy danych i aktualizować ją. Podczas konfigurowania usługi Container Apps seria samouczków przeprowadzi Cię przez proces konfigurowania tożsamości zarządzanej w aplikacji i konfigurowania zmiennych środowiskowych zawierających informacje o połączeniu dla bazy danych. Możesz również użyć łącznika usługi platformy Azure, aby wykonać to samo.

Warunki wstępne

Do ukończenia tej serii samouczków potrzebne są następujące elementy:

  • Konto platformy Azure, na którym można utworzyć:

    • Wystąpienie usługi Azure Container Registry.
    • Środowisko usługi Azure Container Apps.
    • Instancja usługi Azure Database for PostgreSQL.
  • programu Visual Studio Code lub interfejsu wiersza polecenia platformy Azure w zależności od używanego narzędzia:

  • Pakiety języka Python:

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 serii samouczków będziesz mieć aplikację do przeglądu restauracji wdrożoną i działającą w usłudze Azure Container Apps, która wygląda jak na poniższym zrzucie ekranu.

Zrzut ekranu przedstawiający przykładową aplikację utworzoną na podstawie konteneryzowanej aplikacji internetowej w języku Python.

Następny krok