Nastavení clusteru Kubernetes s podporou služby Azure Arc pro provoz služeb App Service, Functions a Logic Apps (Preview)

Pokud máte cluster Kubernetess podporou Azure Arc, můžete ho použít k vytvoření vlastního umístění s podporou App Service a nasazení webových aplikací, aplikací funkcí a aplikací logiky.

Azure Arc Kubernetes umožňuje zviditelnit místní nebo cloudový cluster Kubernetes pro App Service, Functions a Logic Apps v Azure. Aplikaci můžete vytvořit a nasadit do ní stejně jako v jiné oblasti Azure.

Požadavky

Pokud nemáte účet Azure, zaregistrujte si bezplatný účet ještě dnes.

Přidání rozšíření Azure CLI

Spusťte prostředí Bash v Azure Cloud Shell.

Spuštění služby Cloud Shell v novém okně

Vzhledem k tomu, že tyto příkazy rozhraní příkazového řádku ještě nejsou součástí základní sady rozhraní příkazového řádku, přidejte je pomocí následujících příkazů.

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

Vytvoření připojeného clusteru

Poznámka

V tomto kurzu Azure Kubernetes Service (AKS) konkrétní pokyny pro nastavení prostředí od začátku. U produkčních úloh ale pravděpodobně nechcete povolit Azure Arc clusteru AKS, protože je již spravován v Azure. Následující kroky vám pomůžou začít službu chápat, ale u produkčních nasazení by se na tyto služby měly nahlížet jako na ilustrativní, nikoli preskriptivní. Obecné pokyny k Připojení clusteru Kubernetes s podporou clusterů Kubernetes najdete v tématu Rychlý Azure Arc Azure Arc: Vytvoření existujícího clusteru Kubernetes s podporou clusterů Kubernetes.

  1. Vytvořte cluster v Azure Kubernetes Service s veřejnou IP adresou. Nahraďte <group-name> názvem skupiny prostředků, který chcete.

    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)
    
  2. Získejte soubor kubeconfig a otestujte připojení ke clusteru. Ve výchozím nastavení se soubor kubeconfig uloží do ~/.kube/config .

    az aks get-credentials --resource-group $aksClusterGroupName --name $aksName --admin
    
    kubectl get ns
    
  3. Vytvořte skupinu prostředků, která bude obsahovat Azure Arc prostředky. Nahraďte <group-name> názvem skupiny prostředků, který chcete.

    groupName="<group-name>" # Name of resource group for the connected cluster
    
    az group create -g $groupName -l $resourceLocation
    
  4. Připojení clusteru, který jste vytvořili pro Azure Arc.

    clusterName="${groupName}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $groupName --name $clusterName
    
  5. Pomocí následujícího příkazu ověřte připojení. Měla by se zobrazit provisioningState vlastnost Succeeded jako . Pokud ne, za minutu spusťte příkaz znovu.

    az connectedk8s show --resource-group $groupName --name $clusterName
    

Vytvoření pracovního prostoru služby Log Analytics

I když pracovní prostor služby Log Analytics ke spuštění App Service v Azure Arc není potřeba, vývojáři mohou získat protokoly aplikací pro své aplikace, které běží v clusteru Kubernetes s podporou Azure Arc s podporou.

  1. Pro zjednodušení teď vytvořte pracovní prostor.

    workspaceName="$groupName-workspace" # Name of the Log Analytics workspace
    
    az monitor log-analytics workspace create \
        --resource-group $groupName \
        --workspace-name $workspaceName
    
  2. Spuštěním následujících příkazů získejte ID zakódovaného pracovního prostoru a sdílený klíč pro existující pracovní prostor služby Log Analytics. Budete je potřebovat v dalším kroku.

    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
    

Instalace rozšíření App Service

  1. Nastavte následující proměnné prostředí pro požadovaný název rozšíření App Service , obor názvů clusteru, ve kterém se mají prostředky zřídit, anázev pro App Service Prostředí Kubernetes. Zvolte jedinečný název pro , protože bude součástí názvu domény pro aplikaci vytvořenou v App Service <kube-environment-name> Kubernetes.

    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. Nainstalujte App Service do clusteru připojeného Azure Arc s povolenou službou Log Analytics. I když log Analytics není potřeba, nemůžete ho později přidat do rozšíření, takže je to teď jednodušší.

    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}"
    

    Poznámka

    Pokud chcete rozšíření nainstalovat bez integrace Log Analytics, odeberte z příkazu --configuration-settings poslední tři parametry.

    Následující tabulka popisuje různé parametry --configuration-settings při spuštění příkazu:

    Parametr Popis
    Microsoft.CustomLocation.ServiceAccount Účet služby, který by se měl vytvořit pro vlastní umístění, které se vytvoří. Doporučuje se nastavit na hodnotu default .
    appsNamespace Obor názvů pro zřízení definic aplikací a podů. Musí odpovídat oboru názvů verze rozšíření.
    clusterName Název virtuálního App Service Kubernetes, které se vytvoří pro toto rozšíření.
    keda.enabled Určuje, jestli se má v clusteru Kubernetes nainstalovat KEDA. Přijímá true nebo false .
    buildService.storageClassName Název třídy úložiště pro službu sestavení pro ukládání artefaktů sestavení. Hodnota jako určuje třídu s názvem a ne žádnou default default třídu, která je označena jako výchozí. Výchozí hodnota je platná třída úložiště pro AKS a AKS HCI, ale nemusí být daná pro jiné rozdělení nebo platformy.
    buildService.storageAccessMode Režim přístupu, který se má použít s pojmenovanou třídou úložiště uvedenou výše. Přijímá ReadWriteOnce nebo ReadWriteMany .
    customConfigMap Název mapy konfigurace, kterou nastaví App Service Kubernetes. V současné době musí být <namespace>/kube-environment-config , <namespace> nahraďte výše uvedenou appsNamespace hodnotou.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Název skupiny prostředků, ve které se nachází Azure Kubernetes Service cluster. Platné a povinné pouze v případě, že je základní cluster Azure Kubernetes Service.
    logProcessor.appLogs.destination Nepovinný parametr. log-analyticsAkceptuje nebo . Pokud none zvolíte žádný, zakáže se protokoly platformy.
    logProcessor.appLogs.logAnalyticsConfig.customerId Vyžaduje se jenom v logProcessor.appLogs.destination případě, že je nastavená na log-analytics . ID pracovního prostoru služby Log Analytics s kódováním Base64. Tento parametr by měl být nakonfigurovaný jako chráněné nastavení.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Vyžaduje se jenom v logProcessor.appLogs.destination případě, že je nastavená na log-analytics . Sdílený klíč pracovního prostoru služby Log Analytics s kódováním Base64. Tento parametr by měl být nakonfigurovaný jako chráněné nastavení.
  3. Uložte id vlastnost rozšíření App Service pro pozdější použití.

    extensionId=$(az k8s-extension show \
        --cluster-type connectedClusters \
        --cluster-name $clusterName \
        --resource-group $groupName \
        --name $extensionName \
        --query id \
        --output tsv)
    
  4. Než budete pokračovat, počkejte na úplnou instalaci rozšíření. Spuštěním následujícího příkazu můžete počkat na dokončení relace terminálu:

    az resource wait --ids $extensionId --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
    

Pomocí můžete kubectl zobrazit pody, které byly vytvořeny v clusteru Kubernetes:

kubectl get pods -n $namespace

Další informace o těchto podech a jejich rolích v systému najdete v části Pody vytvořené rozšířením App Service .

Vytvoření vlastního umístění

Vlastní umístění v Azure se používá k přiřazení App Service Kubernetes.

  1. Nastavte následující proměnné prostředí pro požadovaný název vlastního umístění a pro ID clusteru připojeného Azure Arc počítače.

    customLocationName="my-custom-location" # Name of the custom location
    
    connectedClusterId=$(az connectedk8s show --resource-group $groupName --name $clusterName --query id --output tsv)
    
  2. Vytvořte vlastní umístění:

    az customlocation create \
        --resource-group $groupName \
        --name $customLocationName \
        --host-resource-id $connectedClusterId \
        --namespace $namespace \
        --cluster-extension-ids $extensionId
    
  3. Pomocí následujícího příkazu ověřte, že se vlastní umístění úspěšně vytvořilo. Výstup by měl zobrazit provisioningState vlastnost jako Succeeded . Pokud ne, spusťte ho za minutu znovu.

    az customlocation show --resource-group $groupName --name $customLocationName
    
  4. Uložte id vlastního umístění pro další krok.

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

Vytvoření prostředí App Service Kubernetes

Než budete moct začít vytvářet aplikace ve vlastním umístění, budete potřebovat prostředí App Service Kubernetes.

  1. Vytvořte prostředí App Service Kubernetes:

    az appservice kube create \
        --resource-group $groupName \
        --name $kubeEnvironmentName \
        --custom-location $customLocationId 
    
  2. Pomocí následujícího příkazu ověřte, že se prostředí App Service Kubernetes úspěšně vytvořilo. Výstup by měl tuto provisioningState vlastnost zobrazit jako Succeeded . Pokud ne, spusťte ji znovu za minutu.

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

Další kroky