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 Serviço de Aplicativo aktiverad anpassad plats och distribuera webbappar, funktionsappar och logikappar till det.

Med Azure Arc-aktiverade Kubernetes kan du göra ditt lokala eller molnbaserade Kubernetes-kluster synligt för Serviço de Aplicativo, Functions och Logic Apps i Azure. Du kan skapa en app och distribuera den precis som en annan Azure-region.

Krav

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.

Starta Cloud Shell i ett nytt fönster

Eftersom dessa CLI-kommandon ännu inte ingår i 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

I den här självstudien används Azure Kubernetes Service (AKS) för att tillhandahålla konkreta instruktioner för att konfigurera en miljö från grunden. Men för en produktionsarbetsbelastning vill du förmodligen inte aktivera Azure Arc på 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 beskrivande. 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.

  1. Skapa ett kluster i Azure Kubernetes Service med en offentlig IP-adress. Ersätt <group-name> med önskat resursgruppsnamn.

    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
    
  2. 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 ns
    
  3. Skapa en resursgrupp som ska innehålla dina Azure Arc-resurser. Ersätt <group-name> med önskat resursgruppsnamn.

    groupName="<group-name>" # Name of resource group for the connected cluster
    
    az group create -g $groupName -l $resourceLocation
    
  4. Anslut klustret som du skapade till Azure Arc.

    clusterName="${groupName}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $groupName --name $clusterName
    
  5. Verifiera anslutningen med följande kommando. Den bör visa egenskapen provisioningState som Succeeded. Annars 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 Analytics-arbetsyta inte krävs för att köra Serviço de Aplicativo 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.

  1. För enkelhetens skull skapar du arbetsytan nu.

    workspaceName="$groupName-workspace" # Name of the Log Analytics workspace
    
    az monitor log-analytics workspace create \
        --resource-group $groupName \
        --workspace-name $workspaceName
    
  2. 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.

    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ägget

  1. Ange följande miljövariabler för önskat namn på Serviço de Aplicativo-tillägget, klusternamnområdet där resurser ska etableras och namnet på Serviço de Aplicativo Kubernetes-miljön. Välj ett unikt namn för <kube-environment-name>eftersom det kommer att ingå i domännamnet för appen som skapas i Serviço de Aplicativo 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 resource
    
  2. Installera Serviço de Aplicativo-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 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 Beskrivning
    Microsoft.CustomLocation.ServiceAccount Tjänstkontot som ska skapas för den anpassade plats som ska 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å den Serviço de Aplicativo Kubernetes-miljö som ska skapas mot det här tillägget.
    keda.enabled Om KEDA ska installeras på Kubernetes-klustret. true Accepterar eller false.
    buildService.storageClassName Namnet på lagringsklassen för byggtjänsten för att lagra byggartefakter. Ett värde som default anger en klass med namnet defaultoch inte någon klass som är markerad som standard. Standard ä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 ovan. ReadWriteOnce Accepterar eller ReadWriteMany.
    customConfigMap Namnet på konfigurationskartan som ska anges av Serviço de Aplicativo Kubernetes-miljön. För närvarande måste den vara <namespace>/kube-environment-config, och <namespace> ersätta med värdet appsNamespace ovan.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Namnet på resursgruppen där det 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 eller none, 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.
  3. Spara egenskapen för id Serviço de Aplicativo-tillägget till senare.

    extensionId=$(az k8s-extension show \
        --cluster-type connectedClusters \
        --cluster-name $clusterName \
        --resource-group $groupName \
        --name $extensionName \
        --query id \
        --output tsv)
    
  4. Vänta tills tillägget har installerats helt innan du fortsätter. Du kan låta terminalsessionen vänta tills den har slutförts 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 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 Serviço de Aplicativo-tillägget.

Skapa en anpassad plats

Den anpassade platsen i Azure används för att tilldela Serviço de Aplicativo Kubernetes-miljön.

  1. 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.

    customLocationName="my-custom-location" # Name of the custom location
    
    connectedClusterId=$(az connectedk8s show --resource-group $groupName --name $clusterName --query id --output tsv)
    
  2. Skapa den anpassade platsen:

    az customlocation create \
        --resource-group $groupName \
        --name $customLocationName \
        --host-resource-id $connectedClusterId \
        --namespace $namespace \
        --cluster-extension-ids $extensionId
    
  3. Kontrollera att den anpassade platsen har skapats med följande kommando. Utdata ska visa egenskapen provisioningState som Succeeded. Annars kör du den igen efter en minut.

    az customlocation show --resource-group $groupName --name $customLocationName
    
  4. Spara det anpassade plats-ID:t för nästa steg.

    customLocationId=$(az customlocation show \
        --resource-group $groupName \
        --name $customLocationName \
        --query id \
        --output tsv)
    

Skapa Serviço de Aplicativo Kubernetes-miljön

Innan du kan börja skapa appar på den anpassade platsen behöver du en Serviço de Aplicativo Kubernetes-miljö.

  1. Skapa Serviço de Aplicativo Kubernetes-miljön:

    az appservice kube create \
        --resource-group $groupName \
        --name $kubeEnvironmentName \
        --custom-location $customLocationId 
    
  2. Kontrollera att Serviço de Aplicativo Kubernetes-miljön har skapats med följande kommando. Utdata bör visa egenskapen provisioningState som Succeeded. Annars kör du den igen efter en minut.

    az appservice kube show --resource-group $groupName --name $kubeEnvironmentName
    

Nästa steg