Azure Arc destekli bir Kubernetes kümesini App Service, İşlevler ve Logic Apps (Önizleme) hizmetlerini çalıştıracak şekilde ayarlama

Azure Arc etkin bir Kubernetes kümenizvarsa, bu özelliği kullanarak App Service etkinleştirilmiş bir özel konum oluşturabilir ve Web Apps, işlev uygulamaları ve mantıksal uygulamalar dağıtabilirsiniz.

Azure Arc özellikli Kubernetes, şirket içi veya bulut Kubernetes kümenizi Azure 'da App Service, Işlevler ve Logic Apps görünür hale getirir. Bir uygulama oluşturabilir ve bunu başka bir Azure bölgesi gibi dağıtabilirsiniz.

Önkoşullar

Azure hesabınız yoksa, ücretsiz hesap için bugün kaydolun .

Azure CLı uzantıları ekleme

Azure Cloud Shell'Da Bash ortamını başlatın.

Cloud Shell’i yeni bir pencerede başlatma

Bu CLı komutları henüz çekirdek CLı kümesinin bir parçası olmadığından, bunları aşağıdaki komutlarla ekleyin.

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

Bağlı küme oluşturma

Not

Bu öğretici, sıfırdan bir ortam ayarlamaya yönelik somut yönergeler sağlamak için Azure Kubernetes hizmeti 'ni (AKS) kullanır. Ancak, bir üretim iş yükü için Azure 'da zaten Azure 'da yönetiliyor olduğu gibi bir AKS kümesinde Azure yayı 'yi etkinleştirmek istemeyecektir. Aşağıdaki adımlar hizmeti kavramasına başlamanıza yardımcı olur, ancak üretim dağıtımları için, bunların öngörüleri değil tanım olarak görüntülenmesi gerekir. bkz. hızlı başlangıç: azure arc özellikli bir kubernetes kümesi oluşturma hakkında genel yönergeler için mevcut bir kubernetes kümesini azure yaya Bağlan .

  1. Azure Kubernetes hizmetinde genel IP adresiyle bir küme oluşturun. İstediğiniz <group-name> kaynak grubu adıyla değiştirin.

    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. Kubeconfig dosyasını alın ve kümeyle bağlantınızı test edin. Varsayılan olarak, kubeconfig dosyası öğesine kaydedilir ~/.kube/config .

    az aks get-credentials --resource-group $aksClusterGroupName --name $aksName --admin
    
    kubectl get ns
    
  3. Azure Arc kaynaklarınızı içerecek bir kaynak grubu oluşturun. İstediğiniz <group-name> kaynak grubu adıyla değiştirin.

    groupName="<group-name>" # Name of resource group for the connected cluster
    
    az group create -g $groupName -l $resourceLocation
    
  4. oluşturduğunuz kümeyi Azure yaya Bağlan.

    clusterName="${groupName}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $groupName --name $clusterName
    
  5. Aşağıdaki komutla bağlantıyı doğrulayın. provisioningStateÖzelliği olarak göstermelidir Succeeded . Aksi takdirde, bir dakika sonra komutu tekrar çalıştırın.

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

Log Analytics çalışma alanı oluşturma

Azure Arc 'da App Service çalıştırmak için bir log analitik çalışma alanı gerekli olmasa da, geliştiricilerin Azure Arc özellikli Kubernetes kümesinde çalışan uygulamaları için uygulama günlüklerini nasıl alabildiği.

  1. Basitlik için, çalışma alanını şimdi oluşturun.

    workspaceName="$groupName-workspace" # Name of the Log Analytics workspace
    
    az monitor log-analytics workspace create \
        --resource-group $groupName \
        --workspace-name $workspaceName
    
  2. Mevcut bir Log Analytics çalışma alanı için kodlanmış çalışma alanı KIMLIĞINI ve paylaşılan anahtarı almak için aşağıdaki komutları çalıştırın. Bir sonraki adımda ihtiyacınız vardır.

    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
    

App Service uzantısını yükler

  1. App Service uzantısınınistenen adı, kaynakların sağlanması gereken küme ad alanı ve App Service Kubernetes ortamının adı için aşağıdaki ortam değişkenlerini ayarlayın. <kube-environment-name>App Service Kubernetes ortamında oluşturulan uygulamanın etki alanı adının bir parçası olacağı için benzersiz bir ad seçin.

    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. App Service uzantısını, Azure Arc bağlantılı kümenize, Log Analytics etkinleştirilmiş olarak yükler. Log Analytics gerekli olmasa da, bunu daha sonra uzantıya ekleyemezsiniz, bu sayede şimdi daha kolay hale gelir.

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

    Not

    Uzantıyı Log Analytics tümleştirme olmadan yüklemek için, komuttan son üç parametreyi kaldırın --configuration-settings .

    Aşağıdaki tabloda --configuration-settings komutunu çalıştırırken çeşitli parametreler açıklanmaktadır:

    Parametre Açıklama
    Microsoft.CustomLocation.ServiceAccount Oluşturulacak özel konum için oluşturulacak hizmet hesabı. Bu değerin değere ayarlanması önerilir default .
    appsNamespace Uygulama tanımlarını ve pods 'yi sağlamak için ad alanı. Uzantı sürümü ad alanıyla eşleşmelidir.
    clusterName Bu uzantıya göre oluşturulacak Kubernetes ortamının App Service adı.
    keda.enabled Kubernetes kümesinde Keda 'nın yüklü olması gerekip gerekmediğini belirtir. Veya kabul eder true false .
    buildService.storageClassName Derleme yapıtlarının depolandığı derleme hizmeti için depolama sınıfının adı . Benzer bir değer default default , Varsayılan olarak işaretlenen hiçbir sınıfıdeğil, adlı bir sınıfı belirtir. Varsayılan, AKS ve AKS CI için geçerli bir depolama sınıfıdır, ancak diğer detrler/platformlar için olmayabilir.
    buildService.storageAccessMode Yukarıdaki adlandırılmış depolama sınıfıyla birlikte kullanılacak erişim modu . Veya kabul eder ReadWriteOnce ReadWriteMany .
    customConfigMap App Service Kubernetes ortamı tarafından ayarlanacak yapılandırma eşlemesinin adı. Şu anda, değeri, <namespace>/kube-environment-config <namespace> Yukarıdaki değeriyle değiştirilerek olmalıdır appsNamespace .
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Azure Kubernetes hizmet kümesinin bulunduğu kaynak grubunun adı. Yalnızca temeldeki küme Azure Kubernetes hizmeti olduğunda geçerlidir ve gereklidir.
    logProcessor.appLogs.destination İsteğe bağlı. Ya da kabul eder log-analytics none , seçme, platform günlüklerini devre dışı bırakır.
    logProcessor.appLogs.logAnalyticsConfig.customerId Yalnızca logProcessor.appLogs.destination öğesine ayarlandığında gereklidir log-analytics . Base64 ile kodlanmış Log Analytics çalışma alanı KIMLIĞI. Bu parametre korumalı bir ayar olarak yapılandırılmalıdır.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Yalnızca logProcessor.appLogs.destination öğesine ayarlandığında gereklidir log-analytics . Base64 ile kodlanmış Log Analytics çalışma alanı paylaşılan anahtarı. Bu parametre korumalı bir ayar olarak yapılandırılmalıdır.
  3. idApp Service uzantısının özelliğini daha sonra kaydedin.

    extensionId=$(az k8s-extension show \
        --cluster-type connectedClusters \
        --cluster-name $clusterName \
        --resource-group $groupName \
        --name $extensionName \
        --query id \
        --output tsv)
    
  4. Devam etmeden önce uzantının tam olarak yüklenmesini bekleyin. Aşağıdaki komutu çalıştırarak, Terminal oturumunuzun bu işlemin tamamlanmasını beklemesini sağlayabilirsiniz:

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

kubectlKubernetes kümenizde oluşturulmuş olan Pod 'leri görmek için ' i kullanabilirsiniz:

kubectl get pods -n $namespace

Bu Pod hakkında daha fazla bilgi edinmek için App Service uzantısı tarafından oluşturulan Pod'deki sistem rolü.

Özel konum oluşturma

Azure 'daki özel konum App Service Kubernetes ortamını atamak için kullanılır.

  1. Özel konumun istenen adı ve Azure Arc bağlantılı kümesinin KIMLIĞI için aşağıdaki ortam değişkenlerini ayarlayın.

    customLocationName="my-custom-location" # Name of the custom location
    
    connectedClusterId=$(az connectedk8s show --resource-group $groupName --name $clusterName --query id --output tsv)
    
  2. Özel konumu oluşturun:

    az customlocation create \
        --resource-group $groupName \
        --name $customLocationName \
        --host-resource-id $connectedClusterId \
        --namespace $namespace \
        --cluster-extension-ids $extensionId
    
  3. Özel konumun aşağıdaki komutla başarıyla oluşturulduğunu doğrulayın. Çıktının özelliği olarak gösterilmesi gerekir provisioningState Succeeded . Aksi takdirde, bir dakika sonra yeniden çalıştırın.

    az customlocation show --resource-group $groupName --name $customLocationName
    
  4. Bir sonraki adım için özel konum KIMLIĞINI kaydedin.

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

Kubernetes ortamını App Service oluşturma

Özel konumda uygulama oluşturmaya başlayabilmeniz için önce bir App Service Kubernetes ortamıgerekir.

  1. Kubernetes ortamını App Service oluşturun:

    az appservice kube create \
        --resource-group $groupName \
        --name $kubeEnvironmentName \
        --custom-location $customLocationId 
    
  2. App Service Kubernetes ortamının aşağıdaki komutla başarıyla oluşturulduğunu doğrulayın. Çıktının özelliği olarak gösterilmesi gerekir provisioningState Succeeded . Aksi takdirde, bir dakika sonra yeniden çalıştırın.

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

Sonraki adımlar