Udostępnij za pośrednictwem


Szybki start: wdrażanie aplikacji dapr w usłudze Azure Container Apps przy użyciu szablonu usługi Azure Resource Manager lub Bicep

Dapr (rozproszone środowisko uruchomieniowe aplikacji) ułatwia deweloperom tworzenie odpornych, niezawodnych mikrousług. W tym przewodniku Szybki start włączysz obsługę przyczepek języka Dapr wraz z dwoma aplikacjami kontenerów, które generują i zużywają komunikaty przechowywane w magazynie stanów usługi Azure Blob Storage. Korzystając z szablonów usługi Azure Resource Manager lub Bicep, wykonasz następujące czynności:

  • Przekaż polecenia interfejsu wiersza polecenia platformy Azure, aby wdrożyć szablon , który uruchamia wszystko, czego potrzebujesz do uruchamiania mikrousług.
  • Sprawdź interakcję między dwiema mikrousługami w witrynie Azure Portal.

Diagram architektury dla mikrousług Hello World w usłudze Azure Container Apps

Ten przewodnik Szybki start odzwierciedla aplikacje wdrażane w przewodniku Szybki start języka Dapr Hello World typu open source.

Wymagania wstępne

  • Wymagane jest konto platformy Azure z aktywną subskrypcją. Jeśli jeszcze go nie masz, możesz bezpłatnie utworzyć konto.
  • Konto usługi GitHub. Jeśli jeszcze go nie masz, zarejestruj się bezpłatnie.

Ustawienia

Aby zalogować się do platformy Azure z poziomu interfejsu wiersza polecenia, uruchom następujące polecenie i postępuj zgodnie z monitami, aby ukończyć proces uwierzytelniania.

az login

Aby upewnić się, że używasz najnowszej wersji interfejsu wiersza polecenia, uruchom polecenie uaktualniania.

az upgrade

Następnie zainstaluj lub zaktualizuj rozszerzenie usługi Azure Container Apps dla interfejsu wiersza polecenia.

Jeśli podczas uruchamiania az containerapp poleceń w interfejsie wiersza polecenia platformy Azure lub poleceniach cmdlet z modułu Az.App w programie Azure PowerShell wystąpią błędy dotyczące brakujących parametrów, upewnij się, że masz zainstalowaną najnowszą wersję rozszerzenia Azure Container Apps.

az extension add --name containerapp --upgrade

Uwaga

Począwszy od maja 2024 r., rozszerzenia interfejsu wiersza polecenia platformy Azure domyślnie nie włączają funkcji w wersji zapoznawczej. Aby uzyskać dostęp do funkcji usługi Container Apps w wersji zapoznawczej, zainstaluj rozszerzenie Container Apps za pomocą polecenia --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Teraz, po zainstalowaniu bieżącego rozszerzenia lub modułu Microsoft.App , zarejestruj przestrzenie nazw i Microsoft.OperationalInsights .

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Ustawianie zmiennych środowiskowych

Ustaw następujące zmienne środowiskowe. Zastąp element swoimi <PLACEHOLDERS> wartościami:

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

Tworzenie grupy zasobów platformy Azure

Utwórz grupę zasobów, aby zorganizować usługi związane z wdrożeniem aplikacji kontenera.

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

Przygotowywanie repozytorium GitHub

Przejdź do repozytorium zawierającego szablony arm i Bicep używane do wdrażania rozwiązania.

Wybierz przycisk Rozwidlenie w górnej części repozytorium, aby rozwidlić repozytorium na koncie.

Teraz możesz sklonować rozwidlenie, aby pracować z nim lokalnie.

Użyj następującego polecenia git, aby sklonować rozwidlenie repozytorium do katalogu acadapr-templates .

git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates

Wdróż

Przejdź do katalogu acadapr-templates i uruchom następujące polecenie:

az deployment group create \
  --resource-group "$RESOURCE_GROUP" \
  --template-file ./azuredeploy.json \
  --parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"

Może zostać wyświetlone ostrzeżenie (BCP081). To ostrzeżenie nie ma wpływu na pomyślne wdrożenie aplikacji.

az deployment group create \
  --resource-group "$RESOURCE_GROUP" \
  --template-file ./azuredeploy.bicep \
  --parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"

To polecenie wdraża:

  • Środowisko usługi Container Apps i skojarzony obszar roboczy usługi Log Analytics do hostowania rozwiązania Dapr hello world.
  • Wystąpienie usługi Application Insights dla rozproszonego śledzenia języka Dapr.
  • Serwer nodeapp aplikacji uruchomiony w systemie targetPort: 3000 z włączoną obsługą języka Dapr i skonfigurowany przy użyciu:
    • "appId": "nodeapp"
    • "appPort": 3000
    • Tożsamość przypisana przez użytkownika z dostępem do usługi Azure Blob Storage za pośrednictwem przypisania roli Współautor danych usługi Storage
  • Składnik języka Dapr o "type": "state.azure.blobstorage" określonym zakresie do użycia przez nodeapp element do przechowywania stanu.
  • Bez użycia języka Dapr, pythonapp który wywołuje usługę nodeapp przy użyciu wywołania usługi Dapr.
  • Przypisanie roli Identyfikator entra firmy Microsoft dla aplikacji Node.js używanej przez składnik Dapr w celu nawiązania połączenia z usługą Blob Storage.

Weryfikowanie wyniku

Potwierdzanie trwałości stanu pomyślnego

Możesz potwierdzić, że usługi działają prawidłowo, wyświetlając dane na koncie usługi Azure Storage.

  1. W przeglądarce otwórz witrynę Azure Portal.

  2. Przejdź do nowo utworzonego konta magazynu w grupie zasobów.

  3. Wybierz pozycję Kontenery magazynu>danych z menu po lewej stronie.

  4. Wybierz utworzony kontener.

  5. Sprawdź, czy w kontenerze jest widoczny plik o nazwie order .

  6. Wybierz plik.

  7. Wybierz kartę Edytuj .

  8. Wybierz przycisk Odśwież, aby obserwować aktualizacje.

Wyświetl dzienniki

Dzienniki z aplikacji kontenera są przechowywane w tabeli niestandardowej ContainerAppConsoleLogs_CL w obszarze roboczym usługi Log Analytics. Dzienniki można wyświetlać za pośrednictwem witryny Azure Portal lub interfejsu wiersza polecenia. Początkowo w obszarze roboczym może występować niewielkie opóźnienie.

Użyj następującego polecenia, aby wyświetlić dzienniki w powłoce bash lub programie PowerShell.

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`
az monitor log-analytics query \
  --workspace "$LOG_ANALYTICS_WORKSPACE_CLIENT_ID" \
  --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5" \
  --out table

Poniższe dane wyjściowe przedstawiają typ odpowiedzi oczekiwanej z polecenia .

ContainerAppName_s    Log_s                            TableName      TimeGenerated
--------------------  -------------------------------  -------------  ------------------------
nodeapp               Got a new order! Order ID: 61    PrimaryResult  2021-10-22T21:31:46.184Z
nodeapp               Successfully persisted state.    PrimaryResult  2021-10-22T21:31:46.184Z
nodeapp               Got a new order! Order ID: 62    PrimaryResult  2021-10-22T22:01:57.174Z
nodeapp               Successfully persisted state.    PrimaryResult  2021-10-22T22:01:57.174Z
nodeapp               Got a new order! Order ID: 63    PrimaryResult  2021-10-22T22:45:44.618Z

Czyszczenie zasobów

Ponieważ pythonapp ciągłe nawiązywanie połączeń nodeapp z komunikatami utrwalone w skonfigurowanym magazynie stanów jest ważne, aby wykonać te kroki oczyszczania, aby uniknąć bieżących operacji rozliczanych.

Jeśli chcesz usunąć zasoby utworzone w ramach tego przewodnika, uruchom następujące polecenie.

az group delete \
  --resource-group $RESOURCE_GROUP

Napiwek

Masz problemy? Poinformuj nas o usłudze GitHub, otwierając problem w repozytorium usługi Azure Container Apps.

Następne kroki