Configurare un cluster Kubernetes abilitato Azure Arc per l'esecuzione del servizio app, delle funzioni e delle app per la logica (anteprima)
Se si dispone di un cluster Kubernetes abilitato per Azure Arc, è possibile usarlo per creare un percorso personalizzato abilitato servizio app e distribuire app Web, app per le funzioni e app per la logica.
Kubernetes abilitato per Azure Arc consente di rendere visibile il cluster Kubernetes locale o cloud per servizio app, funzioni e app per la logica in Azure. È possibile creare un'app e distribuirla come un'altra area di Azure.
Prerequisiti
Se non si ha un account Azure, iscriversi subito per ottenere un account gratuito.
Aggiungere estensioni dell'interfaccia della riga di comando di Azure
Avviare l'ambiente Bash in Azure Cloud Shell.
Poiché questi comandi dell'interfaccia della riga di comando non fanno ancora parte del set di interfaccia della riga di comando di base, aggiungerli con i comandi seguenti.
az extension add --upgrade --yes --name connectedk8s
az extension add --upgrade --yes --name k8s-extension
az extension add --upgrade --yes --name customlocation
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.Web --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube
Creare un cluster connesso
Nota
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, è probabile che non si voglia abilitare Azure Arc in un cluster del servizio Azure Kubernetes perché è già gestito in Azure. 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.
Creare un cluster in servizio Azure Kubernetes con un indirizzo IP pubblico. Sostituire
<group-name>
con il nome del gruppo di risorse desiderato.AKS_CLUSTER_GROUP_NAME="<group-name>" # Name of resource group for the AKS cluster AKS_NAME="${aksClusterGroupName}-aks" # Name of the AKS cluster RESOURCE_LOCATION="eastus" # "eastus" or "westeurope" az group create -g $AKS_CLUSTER_GROUP_NAME -l $RESOURCE_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. Sostituire
<group-name>
con il nome del gruppo di risorse desiderato.GROUP_NAME="<group-name>" # Name of resource group for the connected cluster az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
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
Convalidare la connessione con il comando seguente. Dovrebbe visualizzare la
provisioningState
proprietà 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
Anche se non è necessaria un'area di lavoro Log Analytics per eseguire servizio app in Azure Arc, gli sviluppatori possono ottenere i log delle applicazioni per le app in esecuzione nel cluster Kubernetes abilitato per Azure Arc.
Per semplicità, creare ora l'area di lavoro.
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 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 Servizio app
Impostare le variabili di ambiente seguenti per il nome desiderato dell'estensione servizio app, lo spazio dei nomi del cluster in cui eseguire il provisioning delle risorse e il nome dell'ambiente Kubernetes servizio app. Scegliere un nome univoco per
<kube-environment-name>
perché farà parte del nome di dominio per l'app creata nell'ambiente servizio app Kubernetes.EXTENSION_NAME="appservice-ext" # Name of the App Service extension NAMESPACE="appservice-ns" # Namespace in your cluster to install the extension and provision resources KUBE_ENVIRONMENT_NAME="<kube-environment-name>" # Name of the App Service Kubernetes environment resource
Installare l'estensione servizio app nel cluster connesso ad Azure Arc, con Log Analytics abilitato. Anche in questo caso, anche se Log Analytics non è necessario, non è possibile aggiungerlo all'estensione in un secondo momento, quindi è più facile farlo ora.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --extension-type 'Microsoft.Web.Appservice' \ --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=${KUBE_ENVIRONMENT_NAME}" \ --configuration-settings "keda.enabled=true" \ --configuration-settings "buildService.storageClassName=default" \ --configuration-settings "buildService.storageAccessMode=ReadWriteOnce" \ --configuration-settings "customConfigMap=${NAMESPACE}/kube-environment-config" \ --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${aksClusterGroupName}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --config-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 che deve essere creato per la posizione personalizzata che verrà creata. È consigliabile impostare questo valore sul valore default
.appsNamespace
Spazio dei nomi per il provisioning delle definizioni e dei pod dell'app. Deve corrispondere a quello dello spazio dei nomi della versione dell'estensione. clusterName
Nome dell'ambiente Kubernetes servizio app che verrà creato in base a questa estensione. keda.enabled
Indica se KEDA deve essere installato nel cluster Kubernetes. Accetta true
ofalse
.buildService.storageClassName
Nome della classe di archiviazione per il servizio di compilazione in cui archiviare gli artefatti di compilazione. Un valore come default
specifica una classe denominatadefault
e non qualsiasi classe contrassegnata come predefinita. Il valore predefinito è una classe di archiviazione valida per il servizio Azure Kubernetes e il servizio Azure Kubernetes HCI, ma potrebbe non essere per altre istruzioni/piattaforme.buildService.storageAccessMode
Modalità di accesso da usare con la classe di archiviazione denominata precedente. Accetta ReadWriteOnce
oReadWriteMany
.customConfigMap
Nome della mappa di configurazione che verrà impostata dall'ambiente Kubernetes servizio app. Attualmente deve essere <namespace>/kube-environment-config
, sostituendo<namespace>
con il valore precedenteappsNamespace
.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. logProcessor.appLogs.destination
Facoltativo. 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.Salvare la
id
proprietà dell'estensione servizio app 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.installState!='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 Pod creati dall'estensione servizio app.
Creare un percorso personalizzato
La posizione personalizzata in Azure viene usata per assegnare l'ambiente Kubernetes servizio app.
Impostare le variabili di ambiente seguenti per il nome desiderato della posizione personalizzata e per l'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 deve visualizzare la
provisioningState
proprietà comeSucceeded
. In caso contrario, eseguirlo di nuovo 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 Kubernetes servizio app
Prima di iniziare a creare app nel percorso personalizzato, è necessario un ambiente Kubernetes servizio app.
Creare l'ambiente Kubernetes servizio app:
az appservice kube create \ --resource-group $GROUP_NAME \ --name $KUBE_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID
Verificare che l'ambiente Kubernetes servizio app sia stato creato correttamente con il comando seguente. L'output deve visualizzare la
provisioningState
proprietà comeSucceeded
. In caso contrario, eseguirlo di nuovo dopo un minuto.az appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME