Udostępnij za pośrednictwem


Wdrażanie projektu .NET Aspire w Azure Container Apps

.NET .NET Aspire projekty są zaprojektowane do działania w środowiskach konteneryzowanych. Azure Container Apps to w pełni zarządzane środowisko, które umożliwia uruchamianie mikrousług i aplikacji konteneryzowanych na platformie bezserwerowej. W tym artykule opisano tworzenie nowego rozwiązania .NET Aspire i wdrażanie go w usłudze Microsoft Azure Container Apps przy użyciu Azure Developer CLI (azd). Dowiesz się, jak wykonać następujące zadania:

  • Utwórz grupę zasobów Azure i rejestr kontenerów
  • Publikowanie projektów .NET Aspire jako obrazów kontenerów w usłudze Azure Container Registry
  • Utwórz kontener Redis w Azure
  • Wdrażanie aplikacji w środowisku Azure Container Apps
  • Wyświetlanie dzienników konsoli aplikacji w celu rozwiązywania problemów z aplikacją

Warunki wstępne

Aby pracować z .NET.NET Aspire, musisz mieć lokalnie zainstalowane następujące elementy:

Aby uzyskać więcej informacji, zobacz .NET.NET Aspire setup and toolingi .NET.NET Aspire SDK.

Alternatywą dla tego samouczka, oferującą bardziej szczegółowe instrukcje, jest przewodnik "Wdrażanie projektu .NET Aspire do Azure Container Apps przy użyciu azd" (szczegółowy przewodnik).

Wdrażanie projektów .NET.NET Aspire przy użyciu azd

Dzięki .NET Aspire i Azure Container Apps (ACA) masz doskonały scenariusz hostingu umożliwiający tworzenie aplikacji natywnych dla chmury za pomocą .NET. Utworzyliśmy kilka wspaniałych nowych funkcji w Azure Developer CLI (azd) dedykowanych do rozwoju i wdrażania .NET Aspire do Azure jako bezproblemowe doświadczenie. Nadal możesz użyć opcji interfejsu wiersza polecenia Azure i/lub Bicep, gdy potrzebujesz szczegółowego poziomu kontroli nad wdrożeniami. Jednak w przypadku nowych projektów nie znajdziesz łatwiejszej ścieżki do pomyślnego wdrożenia nowej topologii mikrousług w chmurze.

Tworzenie projektu .NET.NET Aspire

Na początek w tym artykule założono, że utworzono projekt .NET.NET Aspire z szablonu .NET.NET Aspire Starter Application. Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie pierwszego projektu .NET.NET Aspire.

Nazewnictwo zasobów

Podczas tworzenia nowych zasobów Azure należy przestrzegać wymagań dotyczących nazewnictwa. W przypadku Azure Container Appsnazwa musi mieć długość od 2 do 32 znaków i składać się z małych liter, cyfr i łączników. Nazwa musi zaczynać się literą i kończyć znakiem alfanumerycznym.

Aby uzyskać więcej informacji, zobacz Reguły nazewnictwa i ograniczenia dotyczące zasobów Azure.

Zainstaluj Azure Developer CLI

Proces instalowania azd różni się w zależności od systemu operacyjnego, ale jest szeroko dostępny za pośrednictwem winget, brew, aptlub bezpośrednio za pośrednictwem curl. Aby zainstalować azd, zobacz Install Azure Developer CLI.

Inicjowanie szablonu

  1. Otwórz nowe okno terminalu i cd w katalogu projektu AppHost rozwiązania .NET.NET Aspire.

  2. Wykonaj polecenie azd init, aby zainicjować projekt przy użyciu azd, co spowoduje sprawdzenie struktury katalogów lokalnych i określenie typu aplikacji.

    azd init
    

    Aby uzyskać więcej informacji na temat polecenia azd init, zapoznaj się z azd init.

  3. Wybierz pozycję Użyj kodu w bieżącym katalogu, kiedy azd wyświetli dwa sposoby inicjowania aplikacji.

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
    
  4. Po zeskanowaniu katalogu azd zostanie wyświetlony monit o potwierdzenie, że został znaleziony prawidłowy projekt .NET.NET AspireAppHost. Wybierz opcję Potwierdź i kontynuuj inicjowanie mojej aplikacji.

    Detected services:
    
      .NET (Aspire)
      Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj
    
    azd will generate the files necessary to host your app on Azure using Azure Container Apps.
    
    ? Select an option  [Use arrows to move, type to filter]
    > Confirm and continue initializing my app
      Cancel and exit
    
  5. Wprowadź nazwę środowiska, która służy do nazywania aprowizowanych zasobów w Azure i zarządzania różnymi środowiskami, takimi jak dev i prod.

    Generating files to run your app on Azure:
    
      (✓) Done: Generating ./azure.yaml
      (✓) Done: Generating ./next-steps.md
    
    SUCCESS: Your app is ready for the cloud!
    You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
    

azd generuje wiele plików i umieszcza je w katalogu roboczym. Są to następujące pliki:

  • azure.yaml: opisuje usługi aplikacji, takie jak projekt .NET Aspire AppHost, i mapuje je na zasoby Azure.
  • .azure/config.json: plik konfiguracji, który informuje azd, jakie jest bieżące aktywne środowisko.
  • .azure/aspireazddev/.env: zawiera ustawienia specyficzne dla środowiska.

Wdrażanie szablonu

  1. Po zainicjowaniu szablonu azd proces provisionowania i wdrażania można wykonać jednym poleceniem z katalogu projektu AppHost przy użyciu azd up.

    azd up
    
  2. Wybierz subskrypcję, do której chcesz wdrożyć, z listy dostępnych opcji:

    Select an Azure Subscription to use:  [Use arrows to move, type to filter]
      1. SampleSubscription01 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
      2. SamepleSubscription02 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
    
  3. Wybierz odpowiednią lokalizację Azure, która ma być używana z listy dostępnych opcji:

    Select an Azure location to use:  [Use arrows to move, type to filter]
      42. (US) Central US (centralus)
      43. (US) East US (eastus)
    > 44. (US) East US 2 (eastus2)
      46. (US) North Central US (northcentralus)
      47. (US) South Central US (southcentralus)
    

Po wybraniu opcji azd wykonuje proces aprowizacji i wdrażania.

By default, a service can only be reached from inside the Azure Container Apps environment it is running in. Selecting a service here will also allow it to be reached from the Internet.
? Select which services to expose to the Internet webfrontend
? Select an Azure Subscription to use:  1. <YOUR SUBSCRIPTION>
? Select an Azure location to use: 1. <YOUR LOCATION>

Packaging services (azd package)


Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.

Subscription: <YOUR SUBSCRIPTION>
Location: <YOUR LOCATION>

  You can view detailed progress in the Azure Portal:
  <LINK TO DEPLOYMENT>

  (✓) Done: Resource group: <YOUR RESOURCE GROUP>
  (✓) Done: Container Registry: <ID>
  (✓) Done: Log Analytics workspace: <ID>
  (✓) Done: Container Apps Environment: <ID>

SUCCESS: Your application was provisioned in Azure in 1 minute 13 seconds.
You can view the resources created under the resource group <YOUR RESOURCE GROUP> in Azure Portal:
<LINK TO RESOURCE GROUP OVERVIEW>

Deploying services (azd deploy)

  (✓) Done: Deploying service apiservice
  - Endpoint: <YOUR UNIQUE apiservice APP>.azurecontainerapps.io/

  (✓) Done: Deploying service webfrontend
  - Endpoint: <YOUR UNIQUE webfrontend APP>.azurecontainerapps.io/

Aspire Dashboard: <LINK TO DEPLOYED .NET ASPIRE DASHBOARD>

SUCCESS: Your up workflow to provision and deploy to Azure completed in 3 minutes 50 seconds.

Polecenie azd up działa jako osłona dla następujących poleceń azd, mające na celu aprowizację i wdrażanie zasobów w jednym kroku:

  1. azd package: projekty aplikacji i ich zależności są pakowane w kontenery.
  2. azd provision: zasoby Azure, których aplikacja będzie potrzebować, są zapewniane.
  3. azd deploy: Projekty są przesyłane jako kontenery do instancji Azure Container Registry, a następnie wykorzystywane do tworzenia nowych wersji Azure Container Apps, w których będzie hostowany kod.

Po zakończeniu etapów azd up aplikacja będzie dostępna w Azurei możesz otworzyć portal Azure, aby eksplorować zasoby. azd również generuje adresy URL w celu uzyskania bezpośredniego dostępu do wdrożonych aplikacji.

Testowanie wdrożonej aplikacji

Teraz, gdy aplikacja została aprowizowana i wdrożona, możesz przejść do portalu Azure. W grupie zasobów, w której wdrożono aplikację, zobaczysz trzy aplikacje kontenera i inne zasoby.

Zrzut ekranu przedstawiający grupę zasobów projektu .NET Aspire w portalu Azure.

Kliknij aplikację kontenera web, aby otworzyć ją w portalu.

Zrzut ekranu frontonu projektu .NET Aspire w portalu Azure.

Kliknij link Adres URL aplikacji, aby otworzyć interfejs użytkownika w przeglądarce.

Zrzut ekranu frontonu projektu .NET.NET Aspire w przeglądarce.

Po kliknięciu węzła "Pogoda" na pasku nawigacyjnym aplikacja kontenera frontonu web wykonuje wywołanie aplikacji kontenera apiservice w celu pobrania danych. Wyjście front-endu będzie buforowane przy użyciu aplikacji kontenerowej redis oraz integracji buforowania wyjścia .NET AspireRedis. Gdy kilkukrotnie odświeżysz interfejs, zauważysz, że dane pogodowe są buforowane. Zostanie ona zaktualizowana po kilku sekundach.

Wdróż pulpit nawigacyjny .NET.NET Aspire

Pulpit nawigacyjny .NET.NET Aspire można wdrożyć w ramach hostowanej aplikacji. Ta funkcja jest teraz w pełni obsługiwana. Podczas wdrażania dzienniki wyjściowe azd drukują dodatkowy adres URL do wdrożonego pulpitu nawigacyjnego.

Możesz uruchomić azd monitor, aby automatycznie uruchomić pulpit nawigacyjny.

azd monitor

Czyszczenie zasobów

Uruchom następujące polecenie CLI Azure, aby usunąć grupę zasobów, gdy nie potrzebujesz już zasobów utworzonych w Azure. Usunięcie grupy zasobów powoduje również usunięcie zawartych w niej zasobów.

az group delete --name <your-resource-group-name>

Aby uzyskać więcej informacji, zobacz Czyszczenie zasobów w Azure.