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
- Un account Azure con una sottoscrizione attiva.
- Se non hai un account, puoi crearlo gratuitamente.
- Installare l'interfaccia della riga di comando di Azure.
- Accesso a un registro contenitori pubblico o privato, ad esempio Registro Azure Container.
- Esaminare requisiti e limitazioni dell'anteprima pubblica. I requisiti del cluster sono particolarmente importanti.
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.
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
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
Creare un gruppo di risorse per contenere le risorse di Azure Arc.
az group create --name $GROUP_NAME --location $LOCATION
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
Convalidare la connessione con il comando seguente. Dovrebbe visualizzare la proprietà
provisioningState
comeSucceeded
. 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.
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
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.
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>"
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
onone
, scegliendo nessuno disabilita i log della piattaforma.logProcessor.appLogs.logAnalyticsConfig.customerId
Obbligatorio solo quando logProcessor.appLogs.destination
è impostato sulog-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 sulog-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. 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)
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.
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)
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.
Verificare che il percorso personalizzato sia stato creato correttamente con il comando seguente. L'output dovrebbe mostrare la proprietà
provisioningState
comeSucceeded
. In caso contrario, eseguire di nuovo il comando dopo un minuto.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
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.
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
Verificare che l'ambiente connesso App contenitore sia stato creato correttamente con il comando seguente. L'output dovrebbe mostrare la proprietà
provisioningState
comeSucceeded
. In caso contrario, eseguirlo di nuovo dopo un minuto.az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME