Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym tutorialu wdrażasz aplikację kontenerową do istniejącego środowiska Container Apps connected na klastrze Kubernetes z obsługą Azure Arc. Następnie weryfikujesz proces udostępniania, DNS, ruch przychodzący, odpowiedź aplikacji i dzienniki.
- Pobierz konkretne połączone środowisko po nazwie.
- Stwórz aplikację kontenerową z zewnętrznym wejściem.
- Zweryfikowaj wersję aplikacji i w pełni kwalifikowaną nazwę domeny.
- Wyślij zapytanie do aplikacji.
- Przeglądaj logi aplikacji w Log Analytics, jeśli są skonfigurowane.
- Usuń aplikację tutorialową.
Wymagania wstępne
Zanim zaczniesz, sprawdź następujące wymagania:
- Połączone środowisko utworzone przez wykonanie Włączanie usługi Azure Container Apps w klastrze Kubernetes z obsługą usługi Azure Arc.
- Dostęp za pomocą interfejsu wiersza polecenia platformy Azure do subskrypcji zawierającej połączone środowisko.
- Uprawnienie platformy Azure do tworzenia aplikacji kontenerowych w docelowej grupie zasobów i połączonym środowisku.
- Grupa zasobów i nazwa środowiska połączonego.
- Dostęp do sieci i systemu DNS ze stacji roboczej do adresu wejściowego połączonego środowiska.
- Opcjonalne uprawnienia do zapytań w przestrzeni roboczej Log Analytics skonfigurowanej podczas instalacji rozszerzenia.
Przed wdrożeniem aplikacji produkcyjnej zapoznaj się z usługą Azure Container Apps w usłudze Azure Arc. Jeśli aplikacja nie zostanie aprowizowana lub nie będzie dostępna, zobacz Rozwiązywanie problemów z usługą Azure Container Apps w klastrze Kubernetes z obsługą usługi Azure Arc.
Dodaj rozszerzenie Azure CLI
Uruchom środowisko powłoki Bash w usłudze Azure Cloud Shell.
Następnie dodaj wymagane rozszerzenie Azure CLI.
az extension add --name containerapp --upgrade --yes
Stwórz grupę zasobów dla aplikacji
Aplikacja kontenerowa może korzystać z innej grupy zasobów niż środowisko połączone. Ustaw grupę zasobów aplikacji oraz region Azure używany do przechowywania metadanych zasobów. Kontener aplikacji działa w klastrze Kubernetes powiązanym z połączonym środowiskiem.
APP_RESOURCE_GROUP="my-container-apps-resource-group"
AZURE_LOCATION="eastus"
az group create --name $APP_RESOURCE_GROUP --location $AZURE_LOCATION
Zdobądź środowisko połączone
Ustaw grupę zasobów oraz nazwę środowiska połączonego:
CONNECTED_ENVIRONMENT_RESOURCE_GROUP="<CONNECTED_ENVIRONMENT_RESOURCE_GROUP>"
CONNECTED_ENVIRONMENT_NAME="<CONNECTED_ENVIRONMENT_NAME>"
Pobierz to konkretne środowisko połączone i sprawdź, czy jest gotowe:
CONNECTED_ENVIRONMENT_ID=$(az containerapp connected-env show \
--resource-group $CONNECTED_ENVIRONMENT_RESOURCE_GROUP \
--name $CONNECTED_ENVIRONMENT_NAME \
--query id \
--output tsv)
az containerapp connected-env show \
--resource-group $CONNECTED_ENVIRONMENT_RESOURCE_GROUP \
--name $CONNECTED_ENVIRONMENT_NAME \
--query "{Id:id,State:properties.provisioningState,Domain:properties.defaultDomain}" \
--output yaml
Kontynuuj tylko wtedy, gdy State jest Succeeded.
Utwórz i zweryfikuj aplikację
Utwórz przykładową aplikację:
CONTAINER_APP_NAME="my-container-app"
az containerapp create \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--environment $CONNECTED_ENVIRONMENT_ID \
--environment-type connected \
--image mcr.microsoft.com/k8se/quickstart:latest \
--target-port 80 \
--ingress external
Poczekaj, aż proces aprowizacji zakończy się pomyślnie:
CONTAINER_APP_ID=$(az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query id \
--output tsv)
az resource wait --ids $CONTAINER_APP_ID --created --timeout 600
az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query "{State:properties.provisioningState,Revision:properties.latestReadyRevisionName,FQDN:properties.configuration.ingress.fqdn}" \
--output yaml
APP_FQDN=$(az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query properties.configuration.ingress.fqdn \
--output tsv)
Kontynuuj tylko wtedy, gdy State jest Succeeded, Revision nie jest puste, a FQDN zawiera domenę połączonego środowiska. Testuj DNS oraz odpowiedź aplikacji z sieci, która może dotrzeć do adresu wejściowego środowiska połączonego:
nslookup $APP_FQDN
curl --fail --show-error "https://$APP_FQDN"
Możesz także otworzyć aplikację w przeglądarce:
az containerapp browse \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME
Jeśli DNS nie zostanie rozwiązany, żądanie się skończy lub odpowiedź nie jest pomyślna, zobacz: Wejście aplikacji nie jest osiągalne.
Pobieranie dzienników diagnostycznych przy użyciu usługi Log Analytics
Uwaga
Ta sekcja dotyczy tylko konfiguracji Log Analytics podczas instalacji rozszerzenia Container Apps. Jeśli nie konfigurowałeś Log Analytics, pomiń tę sekcję.
Otwórz przestrzeń roboczą Log Analytics skonfigurowaną dla rozszerzenia Container Apps i wybierz Logs. Uruchom następujące zapytanie, aby wyświetlić logi z ostatnich 72 godzin. Pierwsze spożycie może trwać 10–15 minut.
let StartTime = ago(72h);
let EndTime = now();
ContainerAppConsoleLogs_CL
| where TimeGenerated between (StartTime .. EndTime)
| where ContainerAppName_s =~ "my-container-app"
Dzienniki aplikacji dla wszystkich aplikacji hostowanych w klastrze Kubernetes są rejestrowane w obszarze roboczym usługi Log Analytics w niestandardowej tabeli dzienników o nazwie ContainerAppConsoleLogs_CL.
-
Log_szawiera komunikaty dziennika aplikacji oraz komunikaty cyklu życia kontenera. -
ContainerAppName_sidentyfikuje aplikację kontenerową. To pole jest używane przez poprzednie zapytanie.
Więcej o zapytaniach dzienników można dowiedzieć się z przewodnika Rozpoczynanie pracy z Kusto.
Uporządkuj aplikację tutorialową
Usuń przykładową aplikację kontenerową:
az containerapp delete \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--yes
Jeśli utworzyłeś grupę zasobów aplikacji tylko dla tego tutoriala i nie zawiera ona żadnych innych zasobów, usuń ją.
az group delete --name $APP_RESOURCE_GROUP --yes --no-wait
Nie usuwaj środowiska połączonego, niestandardowej lokalizacji, rozszerzenia ani połączonego klastra, ponieważ inne aplikacje mogą dzielić te zasoby.