Condividi tramite


Esercitazione: Abilitare App contenitore di Azure in Kubernetes abilitato per Azure Arc (anteprima)


Con i cluster Kubernetes abilitati per Azure Arc, è possibile creare un percorso personalizzato abilitato per App contenitore nel cluster Kubernetes locale o cloud per distribuire le applicazioni di App contenitore di Azure 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.
  • Crea una località personalizzata.
  • Creare l'ambiente connesso di App contenitore di Azure.

Nota

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

Questa esercitazione usa il 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

Attrezzaggio

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 add --name containerapp  --upgrade --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. Vedere la Avvio rapido: Connettere un cluster Kubernetes esistente ad Azure Arc per istruzioni generali sulla creazione di un cluster Kubernetes abilitato per Azure Arc.

  1. Creare un cluster nel 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. Connettere il cluster creato ad 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 proprietà provisioningState 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 di 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

Importante

Se si esegue la distribuzione in AKS-HCI, assicurarsi di avere configurato HAProxy o un servizio di bilanciamento del carico prima di provare a installare l'estensione.

  1. Impostare le variabili di ambiente seguenti sul nome desiderato dell'estensione App contenitore, lo spazio dei nomi del cluster in cui eseguire il provisioning delle risorse e il nome per l'ambiente connesso a 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 di App contenitore nel cluster connesso ad Azure Arc, con Log Analytics abilitato. Il Log Analytics non può essere aggiunto 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 parametri --configuration-settings dal comando.

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

    Parametro Descrizione
    Microsoft.CustomLocation.ServiceAccount Account del servizio creato per il percorso personalizzato. È consigliabile impostare sul 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 del Servizio Azure Kubernetes. Valido e obbligatorio solo quando il cluster sottostante è il Servizio Azure Kubernetes.
  3. Salvare la proprietà id dell'estensione di 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 la sessione del terminale fino al completamento 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.

Crea una località personalizzata

Il percorso personalizzato è 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 dovrebbe mostrare la proprietà provisioningState 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 contenitore di Azure

Prima di iniziare a creare app nel percorso personalizzato, è necessario un ambiente connesso a 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 dovrebbe mostrare la proprietà provisioningState 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