Konfigurera ett Azure Arc-aktiverat Kubernetes-kluster för att köra App Service, Functions och Logic Apps (förhandsversion)
Om du har ett Azure Arc-aktiverat Kubernetes-kluster kan du använda det för att skapa en App Service-aktiverad anpassad plats och distribuera webbappar, funktionsappar och logikappar till det.
Med Azure Arc-aktiverade Kubernetes kan du göra ditt lokala kubernetes-kluster eller molnkluster synliga för App Service, Functions och Logic Apps i Azure. Du kan skapa en app och distribuera den precis som en annan Azure-region.
Förutsättningar
Om du inte har något Azure-konto registrerar du dig idag för ett kostnadsfritt konto.
Granska kraven och begränsningarna för den offentliga förhandsversionen. Klusterkraven är särskilt viktiga.
Lägga till Azure CLI-tillägg
Starta Bash-miljön i Azure Cloud Shell.
Eftersom dessa CLI-kommandon ännu inte är en del av cli-kärnuppsättningen lägger du till dem med följande kommandon.
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
Skapa ett anslutet kluster
Kommentar
I den här självstudien används Azure Kubernetes Service (AKS) för att ge konkreta instruktioner för att konfigurera en miljö från grunden. Men för en produktionsarbetsbelastning vill du förmodligen inte aktivera Azure Arc i ett AKS-kluster eftersom det redan hanteras i Azure. Stegen hjälper dig att komma igång med att förstå tjänsten, men för produktionsdistributioner bör de ses som illustrativa, inte normativa. Se Snabbstart: Ansluta ett befintligt Kubernetes-kluster till Azure Arc för allmänna instruktioner om hur du skapar ett Azure Arc-aktiverat Kubernetes-kluster.
Skapa ett kluster i Azure Kubernetes Service med en offentlig IP-adress. Ersätt
<group-name>
med det resursgruppsnamn du vill ha.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
Hämta kubeconfig-filen och testa anslutningen till klustret. Som standard sparas kubeconfig-filen till
~/.kube/config
.az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get ns
Skapa en resursgrupp som ska innehålla dina Azure Arc-resurser. Ersätt
<group-name>
med det resursgruppsnamn du vill ha.GROUP_NAME="<group-name>" # Name of resource group for the connected cluster az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
Anslut klustret som du skapade till Azure Arc.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
Verifiera anslutningen med följande kommando. Den bör visa egenskapen
provisioningState
somSucceeded
. Annars kör du kommandot igen efter en minut.az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
Skapa en Log Analytics-arbetsyta
Även om en Log Analytic-arbetsyta inte krävs för att köra App Service i Azure Arc är det så utvecklare kan hämta programloggar för sina appar som körs i Det Azure Arc-aktiverade Kubernetes-klustret.
Skapa arbetsytan nu för enkelhetens skull.
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
Kör följande kommandon för att hämta det kodade arbetsyte-ID:t och den delade nyckeln för en befintlig Log Analytics-arbetsyta. Du behöver dem i nästa steg.
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
Installera App Service-tillägget
Ange följande miljövariabler för det önskade namnet på App Service-tillägget, klusternamnområdet där resurser ska etableras och namnet på App Service Kubernetes-miljön. Välj ett unikt namn för
<kube-environment-name>
, eftersom det är en del av domännamnet för appen som skapats i App Service Kubernetes-miljön.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
Installera App Service-tillägget till ditt Azure Arc-anslutna kluster med Log Analytics aktiverat. Även om Log Analytics inte krävs kan du inte lägga till det i tillägget senare, så det är enklare att göra det nu.
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}"
Kommentar
Om du vill installera tillägget utan Log Analytics-integrering tar du bort de tre
--configuration-settings
sista parametrarna från kommandot.I följande tabell beskrivs de olika
--configuration-settings
parametrarna när du kör kommandot:Parameter Description Microsoft.CustomLocation.ServiceAccount
Tjänstkontot som ska skapas för den anpassade plats som skapas. Vi rekommenderar att detta anges till värdet default
.appsNamespace
Namnområdet för att etablera appdefinitioner och poddar. Måste matcha namnet på tilläggets versionsnamnområde. clusterName
Namnet på App Service Kubernetes-miljön som skapas mot det här tillägget. keda.enabled
Om KEDA ska installeras på Kubernetes-klustret. true
Accepterar ellerfalse
.buildService.storageClassName
Namnet på lagringsklassen för byggtjänsten för att lagra byggartefakter. Ett värde som anger en klass med default
namnetdefault
, och inte någon klass som är markerad som standard. Standardvärdet är en giltig lagringsklass för AKS och AKS HCI, men det kanske inte är för andra distrubtioner/plattformar.buildService.storageAccessMode
Det åtkomstläge som ska användas med den namngivna lagringsklassen. ReadWriteOnce
Accepterar ellerReadWriteMany
.customConfigMap
Namnet på konfigurationskartan som ska anges av App Service Kubernetes-miljön. För närvarande måste det vara <namespace>/kube-environment-config
och ersätta<namespace>
med värdetappsNamespace
för .envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group
Namnet på resursgruppen där Azure Kubernetes Service-klustret finns. Giltig och krävs endast när det underliggande klustret är Azure Kubernetes Service. logProcessor.appLogs.destination
Valfritt. log-analytics
Accepterar ellernone
, om du väljer ingen inaktiveras plattformsloggar.logProcessor.appLogs.logAnalyticsConfig.customerId
Krävs endast när logProcessor.appLogs.destination
är inställt pålog-analytics
. Det base64-kodade Log Analytics-arbetsyte-ID:t. Den här parametern ska konfigureras som en skyddad inställning.logProcessor.appLogs.logAnalyticsConfig.sharedKey
Krävs endast när logProcessor.appLogs.destination
är inställt pålog-analytics
. Den delade nyckeln för den base64-kodade Log Analytics-arbetsytan. Den här parametern ska konfigureras som en skyddad inställning.id
Spara egenskapen för App Service-tillägget för senare.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)
Vänta tills tillägget har installerats helt innan du fortsätter. Du kan låta terminalsessionen vänta tills detta har slutförts genom att köra följande kommando:
az resource wait --ids $EXTENSION_ID --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
Du kan använda kubectl
för att se poddar som skapats i ditt Kubernetes-kluster:
kubectl get pods -n $NAMESPACE
Du kan lära dig mer om dessa poddar och deras roll i systemet från poddar som skapats av App Service-tillägget.
Skapa en anpassad plats
Den anpassade platsen i Azure används för att tilldela App Service Kubernetes-miljön.
Ange följande miljövariabler för önskat namn på den anpassade platsen och för ID:t för det Azure Arc-anslutna klustret.
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)
Skapa den anpassade platsen:
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_ID
Kommentar
Om du har problem med att skapa en anpassad plats i klustret kan du behöva aktivera funktionen för anpassad plats i klustret. Detta krävs om du är inloggad i CLI med hjälp av ett tjänsthuvudnamn eller om du är inloggad med en Microsoft Entra-användare med begränsad behörighet för klusterresursen.
Kontrollera att den anpassade platsen har skapats med följande kommando. Utdata ska visa egenskapen
provisioningState
somSucceeded
. Annars kör du den igen efter en minut.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
Spara det anpassade plats-ID:t för nästa steg.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv)
Skapa App Service Kubernetes-miljön
Innan du kan börja skapa appar på den anpassade platsen behöver du en App Service Kubernetes-miljö.
Skapa App Service Kubernetes-miljön:
az appservice kube create \ --resource-group $GROUP_NAME \ --name $KUBE_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID
Kontrollera att App Service Kubernetes-miljön har skapats med följande kommando. Utdata ska visa egenskapen
provisioningState
somSucceeded
. Annars kör du den igen efter en minut.az appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME