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-klusterkan du använda det för att skapa en App Service-aktiverad anpassad plats och distribuera webbappar, funktionsappar och logikappar till den.
Azure Arc kubernetes kan du göra ditt lokala eller molnbaserade Kubernetes-kluster synligt för App Service, Functions och Logic Apps i Azure. Du kan skapa en app och distribuera till den precis som en annan Azure-region.
Förutsättningar
Om du inte har något Azure-konto kan du registrera dig för ett kostnadsfritt konto i dag.
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
Anteckning
Den här självstudien använder 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 nedan hjälper dig att komma igång med att förstå tjänsten, men för produktionsdistributioner bör de ses som illustrerande, inte förebyggande. I Snabbstart: Anslut ett befintligt Kubernetes-kluster att Azure Arc allmänna anvisningar 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 som du vill använda.aksClusterGroupName="<group-name>" # Name of resource group for the AKS cluster aksName="${aksClusterGroupName}-aks" # Name of the AKS cluster resourceLocation="eastus" # "eastus" or "westeurope" az group create -g $aksClusterGroupName -l $resourceLocation az aks create --resource-group $aksClusterGroupName --name $aksName --enable-aad --generate-ssh-keys infra_rg=$(az aks show --resource-group $aksClusterGroupName --name $aksName --output tsv --query nodeResourceGroup)Hämta kubeconfig-filen och testa anslutningen till klustret. Som standard sparas kubeconfig-filen i
~/.kube/config.az aks get-credentials --resource-group $aksClusterGroupName --name $aksName --admin kubectl get nsSkapa en resursgrupp som ska innehålla Azure Arc resurser. Ersätt
<group-name>med det resursgruppsnamn som du vill använda.groupName="<group-name>" # Name of resource group for the connected cluster az group create -g $groupName -l $resourceLocationAnslut klustret som du skapade för att Azure Arc.
clusterName="${groupName}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $groupName --name $clusterNameVerifiera anslutningen med följande kommando. Egenskapen bör visas
provisioningStatesomSucceeded. Om inte kör du kommandot igen efter en minut.az connectedk8s show --resource-group $groupName --name $clusterName
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.
workspaceName="$groupName-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $groupName \ --workspace-name $workspaceNameKö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.
logAnalyticsWorkspaceId=$(az monitor log-analytics workspace show \ --resource-group $groupName \ --workspace-name $workspaceName \ --query customerId \ --output tsv) logAnalyticsWorkspaceIdEnc=$(printf %s $logAnalyticsWorkspaceId | base64 -w0) # Needed for the next step logAnalyticsKey=$(az monitor log-analytics workspace get-shared-keys \ --resource-group $groupName \ --workspace-name $workspaceName \ --query primarySharedKey \ --output tsv) logAnalyticsKeyEnc=$(printf %s $logAnalyticsKey | base64 -w0) # Needed for the next step
Installera App Service tillägg
Ange följande miljövariabler för det önskade namnet på App Service-tillägget, det klusternamnområde där resurser ska etableras och namnet på App Service Kubernetes-miljön. Välj ett unikt namn för , eftersom det ska ingå i domännamnet för appen som
<kube-environment-name>skapats i App Service Kubernetes-miljön.extensionName="appservice-ext" # Name of the App Service extension namespace="appservice-ns" # Namespace in your cluster to install the extension and provision resources kubeEnvironmentName="<kube-environment-name>" # Name of the App Service Kubernetes environment resourceInstallera 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 $groupName \ --name $extensionName \ --cluster-type connectedClusters \ --cluster-name $clusterName \ --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=${kubeEnvironmentName}" \ --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" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${logAnalyticsWorkspaceIdEnc}" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${logAnalyticsKeyEnc}"Anteckning
Om du vill installera tillägget utan Log Analytics-integrering tar du bort de
--configuration-settingstre sista parametrarna från kommandot.I följande tabell beskrivs de olika
--configuration-settingsparametrarna när du kör kommandot :Parameter Beskrivning Microsoft.CustomLocation.ServiceAccountTjänstkontot som ska skapas för den anpassade platsen som ska skapas. Vi rekommenderar att detta anges till värdet default.appsNamespaceNamnområdet för att etablera appdefinitioner och poddar. Måste matcha det för namnområdet för tilläggsutgågåren. clusterNameNamnet på den App Service Kubernetes-miljö som ska skapas mot det här tillägget. keda.enabledOm KEDA ska installeras på Kubernetes-klustret. Accepterar trueellerfalse.buildService.storageClassNameNamnet på lagringsklassen för byggtjänsten för att lagra byggartefakter. Ett värde som defaultanger en klass med namnet och inte någon klass som är markerad somdefaultstandard. Standard är en giltig lagringsklass för AKS och AKS HCI, men det kanske inte är för andra distributioner/plattformar.buildService.storageAccessModeÅtkomstläget som ska användas med den namngivna lagringsklassen ovan. Accepterar ReadWriteOnceellerReadWriteMany.customConfigMapNamnet på konfigurationskartan som anges av App Service Kubernetes-miljön. För närvarande måste det <namespace>/kube-environment-configvara , som<namespace>ersätter med värdetappsNamespaceovan.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-groupNamnet på den resursgrupp där Azure Kubernetes Service klustret finns. Giltig och krävs endast när det underliggande klustret Azure Kubernetes Service. logProcessor.appLogs.destinationValfritt. Godkänner log-analyticseller , om du väljer ingennoneinaktiveras plattformsloggar.logProcessor.appLogs.logAnalyticsConfig.customerIdKrävs endast när logProcessor.appLogs.destinationhar angetts tilllog-analytics. Id för Base64-kodad Log Analytics-arbetsyta. Den här parametern ska konfigureras som en skyddad inställning.logProcessor.appLogs.logAnalyticsConfig.sharedKeyKrävs endast när logProcessor.appLogs.destinationhar angetts tilllog-analytics. Den delade nyckeln för den base64-kodade Log Analytics-arbetsytan. Den här parametern ska konfigureras som en skyddad inställning.Spara egenskapen
idför App Service till senare.extensionId=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $clusterName \ --resource-group $groupName \ --name $extensionName \ --query id \ --output tsv)Vänta tills tillägget har installerats helt innan du fortsätter. Du kan vänta terminalsessionen tills den är klar genom att köra följande kommando:
az resource wait --ids $extensionId --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
Du kan använda kubectl för att se de poddar som har 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 det önskade namnet på den anpassade platsen och för ID:t för Azure Arc-anslutna klustret.
customLocationName="my-custom-location" # Name of the custom location connectedClusterId=$(az connectedk8s show --resource-group $groupName --name $clusterName --query id --output tsv)Skapa den anpassade platsen:
az customlocation create \ --resource-group $groupName \ --name $customLocationName \ --host-resource-id $connectedClusterId \ --namespace $namespace \ --cluster-extension-ids $extensionIdKontrollera att den anpassade platsen har skapats med följande kommando. Utdata bör visa
provisioningStateegenskapen somSucceeded. Annars kör du den igen efter en minut.az customlocation show --resource-group $groupName --name $customLocationNameSpara det anpassade plats-ID:t för nästa steg.
customLocationId=$(az customlocation show \ --resource-group $groupName \ --name $customLocationName \ --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 $groupName \ --name $kubeEnvironmentName \ --custom-location $customLocationIdKontrollera att App Service Kubernetes-miljön har skapats med följande kommando. Utdata bör visa
provisioningStateegenskapen somSucceeded. Annars kör du den igen efter en minut.az appservice kube show --resource-group $groupName --name $kubeEnvironmentName
