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

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

Kubernetes s podporou Služby Azure Arc umožňuje zpřístupnit váš 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 jinou oblast Azure.

Požadavky

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

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

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

Protož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:

Tento kurz používá službu Azure Kubernetes Service (AKS) k poskytnutí konkrétních pokynů pro nastavení prostředí od začátku. V případě produkční úlohy ale pravděpodobně nebudete chtít povolit Azure Arc v clusteru AKS, protože už je spravovaný v Azure. Následující kroky vám pomůžou začít porozumět službě, ale pro produkční nasazení by se měly zobrazit jako ilustrativní, nikoli preskriptivní. Viz Rychlý start: Připojení existujícího clusteru Kubernetes do Služby Azure Arc, kde najdete obecné pokyny k vytvoření clusteru Kubernetes s podporou Azure Arc.

  1. Vytvořte cluster ve službě Azure Kubernetes Service s veřejnou IP adresou. Nahraďte <group-name> požadovaným názvem skupiny prostředků.

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

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Vytvořte skupinu prostředků, která bude obsahovat vaše prostředky Azure Arc. Nahraďte <group-name> požadovaným názvem skupiny prostředků.

    GROUP_NAME="<group-name>" # Name of resource group for the connected cluster
    
    az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
    
  4. Připojení clusteru, který jste vytvořili ve službě Azure Arc.

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

    az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
    

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

Pracovní prostor Log Analytic sice není nutný ke spuštění služby App Service v Azure Arc, ale vývojáři můžou získat protokoly aplikací pro své aplikace spuštěné v clusteru Kubernetes s podporou Azure Arc.

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

    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
    
  2. Spuštěním následujících příkazů získejte kódované ID pracovního prostoru a sdílený klíč pro existující pracovní prostor služby Log Analytics. Budete je potřebovat v dalším kroku.

    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
    

Instalace rozšíření služby App Service

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

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

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

    Poznámka:

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

    Následující tabulka popisuje různé --configuration-settings parametry 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 tuto hodnotu default.
    appsNamespace Obor názvů pro zřízení definic a podů aplikace. Musí odpovídat oboru názvů vydané verze rozšíření.
    clusterName Název prostředí Kubernetes služby App Service, které se vytvoří proti tomuto rozšíření.
    keda.enabled Jestli by se měl keDA nainstalovat do clusteru Kubernetes. 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 default určuje třídu s názvem default, a ne žádnou 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í se jednat o jiné distrubce/platformy.
    buildService.storageAccessMode Režim přístupu , který se má použít s pojmenovanou třídou úložiště výše. Přijímá ReadWriteOnce nebo ReadWriteMany.
    customConfigMap Název mapy konfigurace, která bude nastavena prostředím Kubernetes služby App Service. V současné době musí být <namespace>/kube-environment-confignahrazen <namespace> hodnotou appsNamespace výše.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Název skupiny prostředků, ve které se nachází cluster Azure Kubernetes Service. Platné a povinné pouze v případě, že základní cluster je Azure Kubernetes Service.
    logProcessor.appLogs.destination Nepovinné. Přijme log-analytics nebo nonezvolíte možnost žádného zákazu protokolů platformy.
    logProcessor.appLogs.logAnalyticsConfig.customerId Povinné pouze v případě, že logProcessor.appLogs.destination je nastavena hodnota log-analytics. ID pracovního prostoru služby Log Analytics kódované podle base64. Tento parametr by měl být nakonfigurovaný jako chráněné nastavení.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Povinné pouze v případě, že logProcessor.appLogs.destination je nastavena hodnota log-analytics. Sdílený klíč pracovního prostoru Log Analytics kódovaný base64. Tento parametr by měl být nakonfigurovaný jako chráněné nastavení.
  3. id Uložte vlastnost rozšíření služby App Service pro pozdější použití.

    EXTENSION_ID=$(az k8s-extension show \
        --cluster-type connectedClusters \
        --cluster-name $CLUSTER_NAME \
        --resource-group $GROUP_NAME \
        --name $EXTENSION_NAME \
        --query id \
        --output tsv)
    
  4. Než budete pokračovat, počkejte, až se rozšíření plně nainstaluje. Relaci terminálu můžete nechat počkat, až se dokončí, spuštěním následujícího příkazu:

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

Můžete použít kubectl k zobrazení podů vytvořených v clusteru Kubernetes:

kubectl get pods -n $NAMESPACE

Další informace o těchto podech a jejich roli v systému najdete v podech vytvořených rozšířením služby App Service.

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

Vlastní umístění v Azure slouží k přiřazení prostředí Kubernetes služby App Service.

  1. Nastavte následující proměnné prostředí pro požadovaný název vlastního umístění a ID clusteru připojeného ke službě 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)
    
  2. Vytvořte vlastní umístění:

    az customlocation create \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --host-resource-id $CONNECTED_CLUSTER_ID \
        --namespace $NAMESPACE \ 
        --cluster-extension-ids $EXTENSION_ID
    

    Poznámka:

    Pokud máte problémy s vytvořením vlastního umístění v clusteru, možná budete muset ve svém clusteru povolit funkci vlastního umístění. To se vyžaduje, pokud jste přihlášení k rozhraní příkazového řádku pomocí instančního objektu nebo pokud jste přihlášení pomocí uživatele Microsoft Entra s omezenými oprávněními k prostředku clusteru.

  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 znovu po minutě.

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

    CUSTOM_LOCATION_ID=$(az customlocation show \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --query id \
        --output tsv)
    

Vytvoření prostředí Kubernetes služby App Service

Než začnete vytvářet aplikace ve vlastním umístění, potřebujete prostředí Kubernetes služby App Service.

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

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

    az appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME
    

Další kroky