Share via


Esercitazione: Abilitare app Azure Container in Kubernetes con abilitazione di Azure Arc (anteprima)


Con i cluster Kubernetes abilitati per Azure Arc, è possibile creare una posizione personalizzata abilitata per le app contenitore nel cluster Kubernetes locale o cloud per distribuire le applicazioni di App Azure Container come qualsiasi altra area.

Questa esercitazione illustra come abilitare le app contenitore di Azure nel cluster Kubernetes abilitato per Arc. In questa esercitazione si apprenderà come:

  • Creare un cluster connesso.
  • Creare un'area di lavoro Log Analytics.
  • Installare l'estensione App contenitore.
  • Creare una posizione personalizzata.
  • Creare l'ambiente connesso di App Contenitore di Azure.

Nota

Durante l'anteprima, le app di Azure Container in Arc non sono supportate nelle configurazioni di produzione. Questo articolo fornisce una configurazione di esempio solo a scopo di valutazione.

Questa esercitazione usa servizio Azure Kubernetes (servizio Azure Kubernetes) per fornire istruzioni concrete per la configurazione di un ambiente da zero. Tuttavia, per un carico di lavoro di produzione, potrebbe non essere necessario abilitare Azure Arc in un cluster del servizio Azure Kubernetes perché è già gestito in Azure.

Prerequisiti

Configurazione

Installare le estensioni dell'interfaccia della riga di comando di Azure seguenti.

az extension add --name connectedk8s  --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
az extension add --name customlocation --upgrade --yes
az extension remove --name containerapp
az extension add --source https://aka.ms/acaarccli/containerapp-latest-py2.py3-none-any.whl --yes

Registrare gli spazi dei nomi necessari.

az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait

Impostare le variabili di ambiente in base alla distribuzione del cluster Kubernetes.

GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"

Creare un cluster connesso

I passaggi seguenti consentono di iniziare a comprendere il servizio, ma per le distribuzioni di produzione devono essere visualizzati come illustrativi, non prescrittivi. Per istruzioni generali sulla creazione di un cluster Kubernetes abilitato per Azure Arc, vedere Avvio rapido: Connessione un cluster Kubernetes esistente.

  1. Creare un cluster in servizio Azure Kubernetes.

    az group create --name $AKS_CLUSTER_GROUP_NAME --location $LOCATION
    az aks create \
       --resource-group $AKS_CLUSTER_GROUP_NAME \
       --name $AKS_NAME \
       --enable-aad \
       --generate-ssh-keys
    
  2. Ottenere il file kubeconfig e testare la connessione al cluster. Per impostazione predefinita, il file kubeconfig viene salvato in ~/.kube/config.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Creare un gruppo di risorse per contenere le risorse di Azure Arc.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Connessione il cluster creato in Azure Arc.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. Convalidare la connessione con il comando seguente. Dovrebbe visualizzare la provisioningState proprietà come Succeeded. In caso contrario, eseguire di nuovo il comando dopo un minuto.

    az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
    

Creare un'area di lavoro Log Analytics

Un'area di lavoro Log Analytics consente di accedere ai log per le applicazioni di App contenitore in esecuzione nel cluster Kubernetes abilitato per Azure Arc. Un'area di lavoro Log Analytics è facoltativa, ma consigliata.

  1. Creare un'area di lavoro Log Analytics.

    WORKSPACE_NAME="$GROUP_NAME-workspace" # Name of the Log Analytics workspace
    
    az monitor log-analytics workspace create \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME
    
  2. Eseguire i comandi seguenti per ottenere l'ID dell'area di lavoro codificata e la chiave condivisa per un'area di lavoro Log Analytics esistente. Sono necessari nel passaggio successivo.

    LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace show \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME \
        --query customerId \
        --output tsv)
    LOG_ANALYTICS_WORKSPACE_ID_ENC=$(printf %s $LOG_ANALYTICS_WORKSPACE_ID | base64 -w0) # Needed for the next step
    LOG_ANALYTICS_KEY=$(az monitor log-analytics workspace get-shared-keys \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME \
        --query primarySharedKey \
        --output tsv)
    LOG_ANALYTICS_KEY_ENC=$(printf %s $LOG_ANALYTICS_KEY | base64 -w0) # Needed for the next step
    

Installare l'estensione App contenitore

  1. Impostare le variabili di ambiente seguenti sul nome desiderato dell'estensione App contenitore, sullo spazio dei nomi del cluster in cui eseguire il provisioning delle risorse e sul nome per l'ambiente connesso app contenitore di Azure. Scegliere un nome univoco per <connected-environment-name>. Il nome dell'ambiente connesso farà parte del nome di dominio per l'app che verrà creata nell'ambiente connesso app contenitore di Azure.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. Installare l'estensione App contenitore nel cluster connesso ad Azure Arc con Log Analytics abilitato. Non è possibile aggiungere Log Analytics all'estensione in un secondo momento.

    az k8s-extension create \
        --resource-group $GROUP_NAME \
        --name $EXTENSION_NAME \
        --cluster-type connectedClusters \
        --cluster-name $CLUSTER_NAME \
        --extension-type 'Microsoft.App.Environment' \
        --release-train stable \
        --auto-upgrade-minor-version true \
        --scope cluster \
        --release-namespace $NAMESPACE \
        --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" \
        --configuration-settings "appsNamespace=${NAMESPACE}" \
        --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" \
        --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${AKS_CLUSTER_GROUP_NAME}" \
        --configuration-settings "logProcessor.appLogs.destination=log-analytics" \
        --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \
        --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
    

    Nota

    Per installare l'estensione senza l'integrazione di Log Analytics, rimuovere gli ultimi tre --configuration-settings parametri dal comando .

    Nella tabella seguente vengono descritti i vari --configuration-settings parametri durante l'esecuzione del comando :

    Parametro Descrizione
    Microsoft.CustomLocation.ServiceAccount Account del servizio creato per il percorso personalizzato. È consigliabile impostare il valore default.
    appsNamespace Spazio dei nomi usato per creare le definizioni e le revisioni dell'app. Deve corrispondere a quello dello spazio dei nomi della versione dell'estensione.
    clusterName Nome dell'ambiente Kubernetes dell'estensione App contenitore che verrà creato in base a questa estensione.
    logProcessor.appLogs.destination (Facoltativo). Destinazione per i log dell'applicazione. Accetta log-analytics o none, scegliendo nessuno disabilita i log della piattaforma.
    logProcessor.appLogs.logAnalyticsConfig.customerId Obbligatorio solo quando logProcessor.appLogs.destination è impostato su log-analytics. ID dell'area di lavoro Log Analytics con codifica base64. Questo parametro deve essere configurato come impostazione protetta.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Obbligatorio solo quando logProcessor.appLogs.destination è impostato su log-analytics. Chiave condivisa dell'area di lavoro Log Analytics con codifica Base64. Questo parametro deve essere configurato come impostazione protetta.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Nome del gruppo di risorse in cui risiede il cluster servizio Azure Kubernetes. Valido e obbligatorio solo quando il cluster sottostante è servizio Azure Kubernetes.
  3. Salvare la id proprietà dell'estensione App contenitore per un secondo momento.

    EXTENSION_ID=$(az k8s-extension show \
        --cluster-type connectedClusters \
        --cluster-name $CLUSTER_NAME \
        --resource-group $GROUP_NAME \
        --name $EXTENSION_NAME \
        --query id \
        --output tsv)
    
  4. Attendere che l'estensione venga installata completamente prima di procedere. È possibile attendere il completamento della sessione del terminale eseguendo il comando seguente:

    az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
    

È possibile usare kubectl per visualizzare i pod creati nel cluster Kubernetes:

kubectl get pods -n $NAMESPACE

Per altre informazioni su questi pod e sul relativo ruolo nel sistema, vedere Panoramica di Azure Arc.

Creare un percorso personalizzato

La posizione personalizzata è una posizione di Azure assegnata all'ambiente connesso di App Contenitore di Azure.

  1. Impostare le variabili di ambiente seguenti sul nome desiderato della posizione personalizzata e sull'ID del cluster connesso ad Azure Arc.

    CUSTOM_LOCATION_NAME="my-custom-location" # Name of the custom location
    CONNECTED_CLUSTER_ID=$(az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME --query id --output tsv)
    
  2. Creare la posizione personalizzata:

    az customlocation create \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --host-resource-id $CONNECTED_CLUSTER_ID \
        --namespace $NAMESPACE \
        --cluster-extension-ids $EXTENSION_ID
    

    Nota

    Se si verificano problemi durante la creazione di una posizione personalizzata nel cluster, potrebbe essere necessario abilitare la funzionalità di posizione personalizzata nel cluster. Questa operazione è necessaria se si è connessi all'interfaccia della riga di comando usando un'entità servizio o se si è connessi con un utente Di Microsoft Entra con autorizzazioni limitate per la risorsa cluster.

  3. Verificare che il percorso personalizzato sia stato creato correttamente con il comando seguente. L'output deve visualizzare la provisioningState proprietà come Succeeded. In caso contrario, eseguire di nuovo il comando dopo un minuto.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Salvare l'ID percorso personalizzato per il passaggio successivo.

    CUSTOM_LOCATION_ID=$(az customlocation show \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --query id \
        --output tsv)
    

Creare l'ambiente connesso di App Azure Container

Prima di iniziare a creare app nel percorso personalizzato, è necessario un ambiente connesso di App Contenitore di Azure.

  1. Creare l'ambiente connesso app contenitore:

    az containerapp connected-env create \
        --resource-group $GROUP_NAME \
        --name $CONNECTED_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID \
        --location $LOCATION
    
  2. Verificare che l'ambiente connesso app contenitore sia stato creato correttamente con il comando seguente. L'output deve visualizzare la provisioningState proprietà come Succeeded. In caso contrario, eseguirlo di nuovo dopo un minuto.

    az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME
    

Passaggi successivi