Tutorial: Creare un'applicazione contenitore su Kubernetes con Azure Arc abilitato

In questo tutorial, distribuisci un'app container su un ambiente connesso a Container Apps esistente su un cluster Kubernetes abilitato ad Azure Arc. Poi verifichi il provisioning, il DNS, l'ingress, la risposta dell'applicazione e i log.

  • Recupera un ambiente connesso specifico per nome.
  • Crea un'applicazione contenitore con ingresso esterno.
  • Verifica la revisione dell'applicazione e il nome di dominio completamente qualificato.
  • Invia una richiesta all'applicazione.
  • Visualizza i log delle applicazioni in Log Analytics, se configurato.
  • Elimina l'applicazione del tutorial.

Prerequisiti

Prima di iniziare, verifica i seguenti requisiti:

  • Un ambiente connesso creato completando Abilitare App contenitore di Azure in Kubernetes abilitato per Azure Arc.
  • Accesso tramite l'interfaccia della riga di comando di Azure all'abbonamento che contiene l'ambiente connesso.
  • Autorizzazione di Azure per creare app contenitore nel gruppo di risorse di destinazione e nell'ambiente connesso.
  • Il gruppo di risorse e il nome dell'ambiente connesso.
  • Accesso di rete e DNS dalla tua workstation all'indirizzo di ingresso dell'ambiente connesso.
  • Permesso opzionale per consultare lo spazio di lavoro Log Analytics configurato durante l'installazione dell'estensione.

Prima di distribuire un'applicazione di produzione, consulta App contenitore di Azure su Azure Arc. Se l'applicazione non viene fornita o non diventa raggiungibile, consulta Troubleshoot App contenitore di Azure on Azure Arc-enabled Kubernetes.

Aggiungi l'estensione interfaccia della riga di comando di Azure

Avviare l'ambiente Bash in Azure Cloud Shell.

Avviare Cloud Shell in una nuova finestra.

Successivamente, aggiungi l'estensione interfaccia della riga di comando di Azure richiesta.

az extension add --name containerapp --upgrade --yes

Crea un gruppo di risorse per l'applicazione

L'app container può utilizzare un gruppo di risorse diverso dall'ambiente connesso. Imposta il gruppo di risorse applicative e la regione Azure utilizzata per memorizzare i metadati delle risorse. Il container applicativo funziona nel cluster Kubernetes associato all'ambiente connesso.

APP_RESOURCE_GROUP="my-container-apps-resource-group"
AZURE_LOCATION="eastus"
az group create --name $APP_RESOURCE_GROUP --location $AZURE_LOCATION

Scopri l'ecosistema connesso

Imposta il gruppo di risorse e il nome dell'ambiente connesso:

CONNECTED_ENVIRONMENT_RESOURCE_GROUP="<CONNECTED_ENVIRONMENT_RESOURCE_GROUP>"
CONNECTED_ENVIRONMENT_NAME="<CONNECTED_ENVIRONMENT_NAME>"

Recupera quell'ambiente connesso specifico e verifica che sia pronto:

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

Continua solo quando State è Succeeded.

Crea e verifica l'app

Creare l'applicazione di esempio:

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

Aspetta che il provisioning abbia successo:

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)

Continuare solo quando State è Succeeded, Revision non è vuoto e FQDN contiene il dominio dell'ambiente connesso. Test DNS e risposta dell'applicazione da una rete che può raggiungere l'indirizzo di ingresso dell'ambiente connesso:

nslookup $APP_FQDN
curl --fail --show-error "https://$APP_FQDN"

Puoi anche aprire l'applicazione in un browser:

az containerapp browse \
  --resource-group $APP_RESOURCE_GROUP \
  --name $CONTAINER_APP_NAME

Se il DNS non si risolve, la richiesta scade o la risposta non ha successo, vedi L'ingresso dell'applicazione non è raggiungibile.

Ottenere i log di diagnostica con Log Analytics

Nota

Questa sezione si applica solo quando si configura Log Analytics durante l'installazione dell'estensione Container Apps. Se non hai configurato Log Analytics, salta questa sezione.

Apri l'area di lavoro Log Analytics configurata per l'estensione Container Apps e seleziona Logs. Esegui la seguente query per mostrare i registri delle ultime 72 ore. La prima assunzione può durare 10–15 minuti.

let StartTime = ago(72h);
let EndTime = now();
ContainerAppConsoleLogs_CL
| where TimeGenerated between (StartTime .. EndTime)
| where ContainerAppName_s =~ "my-container-app"

I log dell'applicazione per tutte le app ospitate nel cluster Kubernetes vengono registrati nell'area di lavoro Log Analytics nella tabella log personalizzata denominata ContainerAppConsoleLogs_CL.

  • Log_s contiene messaggi di log dell'applicazione e messaggi sul ciclo di vita del container.
  • ContainerAppName_s identifica l'app container. Questo campo è usato dalla query precedente.

Per altre informazioni sulle query di log, vedere Introduzione a Kusto.

Pulisci l'applicazione tutorial

Elimina l'app contenitore di esempio:

az containerapp delete \
  --resource-group $APP_RESOURCE_GROUP \
  --name $CONTAINER_APP_NAME \
  --yes

Se hai creato il gruppo di risorse applicativi solo per questo tutorial e non contiene altre risorse, eliminalo.

az group delete --name $APP_RESOURCE_GROUP --yes --no-wait

Non eliminare l'ambiente connesso, la posizione personalizzata, l'estensione o il cluster connesso perché altre applicazioni possono condividere queste risorse.

Passaggi successivi