Azure Arc-kompatibilis Kubernetes-fürt beállítása az App Service, a Functions és a Logic Apps (előzetes verziójának) futtatásához

Ha rendelkezik Azure Arc-kompatibilis Kubernetes-fürtel, létrehozhat egy App Service-kompatibilis egyéni helyet , és webalkalmazásokat, függvényalkalmazásokat és logikai alkalmazásokat helyezhet üzembe rajta.

Az Azure Arc-kompatibilis Kubernetes lehetővé teszi, hogy a helyszíni vagy a felhőbeli Kubernetes-fürtöt láthatóvá tegye az App Service, a Functions és a Logic Apps számára az Azure-ban. Létrehozhat egy alkalmazást, és üzembe helyezheti azt, ugyanúgy, mint egy másik Azure-régióban.

Előfeltételek

Ha nem rendelkezik Azure-fiókkal, regisztráljon ma egy ingyenes fiókra.

Azure CLI-bővítmények hozzáadása

Indítsa el a Bash-környezetet az Azure Cloud Shellben.

Mivel ezek a parancssori felületi parancsok még nem részei az alapvető PARANCSSOR-készletnek, vegye fel őket az alábbi parancsokkal.

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

Csatlakoztatott fürt létrehozása

Feljegyzés

Ez az oktatóanyag az Azure Kubernetes Service -t (AKS) használja, hogy konkrét útmutatást adjon a környezet nulláról történő beállításához. Éles számítási feladatok esetén azonban valószínűleg nem szeretné engedélyezni az Azure Arcot egy AKS-fürtön, mivel az már az Azure-ban van felügyelve. Az alábbi lépések segítenek a szolgáltatás megismerésében, de éles környezetekben azokat szemléltetőnek, nem pedig előírónak kell tekinteni. Az Azure Arc-kompatibilis Kubernetes-fürtök létrehozásával kapcsolatos általános utasításokért tekintse meg a rövid útmutatót: Csatlakozás egy meglévő Kubernetes-fürtöt az Azure Arcba.

  1. Hozzon létre egy fürtöt az Azure Kubernetes Service-ben nyilvános IP-címmel. Cserélje le <group-name> a kívánt erőforráscsoport-névre.

    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. Kérje le a kubeconfig fájlt, és tesztelje a fürthöz való kapcsolatot. Alapértelmezés szerint a kubeconfig fájl a következőre lesz mentve ~/.kube/config: .

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Hozzon létre egy erőforráscsoportot, amely tartalmazza az Azure Arc-erőforrásokat. Cserélje le <group-name> a kívánt erőforráscsoport-névre.

    GROUP_NAME="<group-name>" # Name of resource group for the connected cluster
    
    az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
    
  4. Csatlakozás az Azure Arcban létrehozott fürtöt.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. Ellenőrizze a kapcsolatot a következő paranccsal. A tulajdonságnak a provisioningState következőképpen kell megjelennie Succeeded: . Ha nem, futtassa újra a parancsot egy perc múlva.

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

Log Analytics-munkaterület létrehozása

Bár az App Service Azure Arcban való futtatásához nincs szükség napló-elemzési munkaterületre, a fejlesztők így kérhetnek le alkalmazásnaplókat az Azure Arc-kompatibilis Kubernetes-fürtön futó alkalmazásaikhoz.

  1. Az egyszerűség kedvéért most hozza létre a munkaterületet.

    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. Futtassa az alábbi parancsokat egy meglévő Log Analytics-munkaterület kódolt munkaterület-azonosítójának és megosztott kulcsának lekéréséhez. A következő lépésben szüksége lesz rájuk.

    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
    

Az App Service-bővítmény telepítése

  1. Adja meg a következő környezeti változókat az App Service-bővítmény kívánt nevéhez, a fürt névteréhez, amelyben az erőforrásokat ki kell helyezni, valamint az App Service Kubernetes-környezet nevét. Válasszon egyedi nevet, <kube-environment-name>mert az az App Service Kubernetes-környezetben létrehozott alkalmazás tartománynevének része lesz.

    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. Telepítse az App Service-bővítményt az Azure Archoz csatlakoztatott fürtre, és engedélyezve van a Log Analytics. Bár a Log Analyticsre nincs szükség, később nem adhatja hozzá a bővítményhez, így most már egyszerűbben elvégezhető.

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

    Feljegyzés

    Ha Log Analytics-integráció nélkül szeretné telepíteni a bővítményt, távolítsa el az utolsó három --configuration-settings paramétert a parancsból.

    Az alábbi táblázat a parancs futtatásakor a különböző --configuration-settings paramétereket ismerteti:

    Paraméter Leírás
    Microsoft.CustomLocation.ServiceAccount A létrehozandó egyéni helyhez létrehozandó szolgáltatásfiók. Javasoljuk, hogy ezt az értéket defaultállítsa be.
    appsNamespace Az alkalmazásdefiníciók és podok kiépítéséhez használt névtér. Meg kell egyeznie a bővítmény kiadási névterével.
    clusterName A bővítményhez létrehozandó App Service Kubernetes-környezet neve.
    keda.enabled Hogy a KEDA-t telepíteni kell-e a Kubernetes-fürtre. Elfogadja vagy truefalse.
    buildService.storageClassName A buildelési összetevők tárolására szolgáló buildszolgáltatás tárolási osztályának neve. Egy ilyen default érték egy elnevezett defaultosztályt határoz meg, és nem az alapértelmezettként megjelölt osztályt. Az alapértelmezett érték az AKS és az AKS HCI érvényes tárolási osztálya, de lehet, hogy más distrubtionokhoz/platformokhoz nem.
    buildService.storageAccessMode A fenti nevesített tárosztályhoz használandó hozzáférési mód . Elfogadja vagy ReadWriteOnceReadWriteMany.
    customConfigMap Az App Service Kubernetes-környezet által beállított konfigurációs térkép neve. Jelenleg a fenti értékkel appsNamespace kell helyettesítenie.<namespace>/kube-environment-config<namespace>
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Annak az erőforráscsoportnak a neve, amelyben az Azure Kubernetes Service-fürt található. Csak akkor érvényes és kötelező, ha a mögöttes fürt az Azure Kubernetes Service.
    logProcessor.appLogs.destination Opcionális. Az elfogadás vagy log-analyticsnonea nem választás letiltja a platformnaplókat.
    logProcessor.appLogs.logAnalyticsConfig.customerId Csak akkor szükséges, ha logProcessor.appLogs.destination be van állítva.log-analytics Az alap64 kódolású Log Analytics-munkaterület azonosítója. Ezt a paramétert védett beállításként kell konfigurálni.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Csak akkor szükséges, ha logProcessor.appLogs.destination be van állítva.log-analytics Az alap64 kódolású Log Analytics-munkaterület megosztott kulcsa. Ezt a paramétert védett beállításként kell konfigurálni.
  3. Mentse az id App Service-bővítmény tulajdonságát későbbi használatra.

    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. A folytatás előtt várja meg, amíg a bővítmény teljesen telepítve lesz. Az alábbi parancs futtatásával megvárhatja a terminálmunkamenetet, amíg ez befejeződik:

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

A Kubernetes-fürtben létrehozott podokat a következő kubectl módon tekintheti meg:

kubectl get pods -n $NAMESPACE

Ezekről a podokról és a rendszerben betöltött szerepükről az App Service bővítmény által létrehozott podokból tudhat meg többet.

Egyéni hely létrehozása

Az Egyéni Hely az Azure-ban az App Service Kubernetes-környezet hozzárendelésére szolgál.

  1. Adja meg az alábbi környezeti változókat az egyéni hely kívánt nevéhez és az Azure Arc-hez csatlakoztatott fürt azonosítójának.

    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. Hozza létre az egyéni helyet:

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

    Feljegyzés

    Ha problémákat tapasztal egy egyéni hely fürtben való létrehozásakor, előfordulhat, hogy engedélyeznie kell az egyéni hely funkciót a fürtön. Erre akkor van szükség, ha szolgáltatásnévvel jelentkezik be a parancssori felületre, vagy ha korlátozott engedélyekkel rendelkező Microsoft Entra-felhasználóval van bejelentkezve a fürterőforrásra.

  3. Ellenőrizze, hogy az egyéni hely sikeresen létrejött-e az alábbi paranccsal. A kimenetnek a tulajdonságot a provisioningState következőként kell megjelenítenie Succeeded: . Ha nem, futtassa újra egy perc múlva.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Mentse az egyéni helyazonosítót a következő lépéshez.

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

Az App Service Kubernetes-környezet létrehozása

Ahhoz, hogy alkalmazásokat hozzon létre az egyéni helyen, egy App Service Kubernetes-környezetre van szüksége.

  1. Hozza létre az App Service Kubernetes-környezetet:

    az appservice kube create \
        --resource-group $GROUP_NAME \
        --name $KUBE_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID 
    
  2. Ellenőrizze, hogy az App Service Kubernetes-környezet sikeresen létrejött-e az alábbi paranccsal. A kimenetnek a tulajdonságot a provisioningState következőként kell megjelenítenie Succeeded: . Ha nem, futtassa újra egy perc múlva.

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

Következő lépések