Aracılığıyla paylaş


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

Azure Arc özellikli bir Kubernetes kümeniz varsa, app service özellikli bir özel konum oluşturmak ve buna web uygulamaları, işlev uygulamaları ve mantıksal uygulamalar dağıtmak için bu kümeyi kullanabilirsiniz.

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

Önkoşullar

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

Azure CLI uzantıları ekleme

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

Bu CLI komutları henüz çekirdek CLI kümesinin 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 öğreticide, sıfırdan bir ortam ayarlamaya yönelik somut yönergeler sağlamak için Azure Kubernetes Service (AKS) kullanılır. Ancak bir üretim iş yükü için azure arc zaten Azure'da yönetildiğinden aks kümesinde Azure Arc'ı etkinleştirmek istemeyebilirsiniz. Aşağıdaki adımlar hizmeti anlamaya başlamanıza yardımcı olur, ancak üretim dağıtımları için bunlar açıklayıcı değil, açıklayıcı olarak görüntülenmelidir. Azure Arc özellikli Kubernetes kümesi oluşturmayla ilgili genel yönergeler için bkz. Hızlı Başlangıç: Mevcut kubernetes kümesini Azure Arc'a Bağlan.

  1. Azure Kubernetes Service'te genel IP adresiyle bir küme oluşturun. değerini istediğiniz kaynak grubu adıyla değiştirin <group-name> .

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

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

    GROUP_NAME="<group-name>" # Name of resource group for the connected cluster
    
    az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
    
  4. Oluşturduğunuz kümeyi Azure Arc'a Bağlan.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. Bağlantıyı aşağıdaki komutla doğrulayın. özelliği olarak SucceededgösterilmelidirprovisioningState. Aksi takdirde, komutu bir dakika sonra yeniden çalıştırın.

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

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

Azure Arc'ta App Service çalıştırmak için Log Analytic çalışma alanı gerekli olmasa da, geliştiriciler Azure Arc özellikli Kubernetes kümesinde çalışan uygulamaları için uygulama günlüklerini bu şekilde alabilir.

  1. Kolaylık olması için şimdi çalışma alanını oluşturun.

    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. Mevcut Log Analytics çalışma alanının kodlanmış çalışma alanı kimliğini ve paylaşılan anahtarını almak için aşağıdaki komutları çalıştırın. Bir sonraki adımda bunlara ihtiyacınız olacak.

    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
    

App Service uzantısını yükleme

  1. App Service uzantısının istenen 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. app Service Kubernetes ortamında oluşturulan uygulamanın etki alanı adının bir parçası olacağı için için <kube-environment-name>benzersiz bir ad seçin.

    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. Log Analytics etkinken App Service uzantısını Azure Arc'a bağlı kümenize yükleyin. Log Analytics gerekli olmasa da, daha sonra uzantıya ekleyemezsiniz, bu nedenle şimdi yapmak daha kolaydır.

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

    Not

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

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

    Parametre Açıklama
    Microsoft.CustomLocation.ServiceAccount Oluşturulacak özel konum için oluşturulması gereken hizmet hesabı. Bunun değerine defaultayarlanması önerilir.
    appsNamespace Uygulama tanımlarını ve podlarını sağlamak için ad alanı. Uzantı yayın ad alanıyla eşleşmelidir .
    clusterName Bu uzantıda oluşturulacak App Service Kubernetes ortamının adı.
    keda.enabled KEDA'nın Kubernetes kümesine yüklenip yüklenmeyeceği. veya falsekabul edertrue.
    buildService.storageClassName Derleme yapıtlarını depolamak için derleme hizmetinin depolama sınıfının adı. gibi default bir değer, varsayılan olarak işaretlenmiş herhangi bir sınıfı değil, adlı defaultbir sınıfı belirtir. Varsayılan, AKS ve AKS HCI için geçerli bir depolama sınıfıdır, ancak diğer dağıtımlar/platformlar için olmayabilir.
    buildService.storageAccessMode Yukarıdaki adlandırılmış depolama sınıfıyla kullanılacak erişim modu. veya ReadWriteManykabul ederReadWriteOnce.
    customConfigMap App Service Kubernetes ortamı tarafından ayarlanacak yapılandırma eşlemesinin adı. Şu anda değerini yukarıdaki değeriyle appsNamespace değiştirerek <namespace> olmalıdır<namespace>/kube-environment-config.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Azure Kubernetes Service kümesinin bulunduğu kaynak grubunun adı. Geçerli ve yalnızca temel küme Azure Kubernetes Service olduğunda gereklidir.
    logProcessor.appLogs.destination isteğe bağlı. veya nonekabul ederlog-analytics, hiçbiri seçildiğinde platform günlükleri devre dışı bırakılır.
    logProcessor.appLogs.logAnalyticsConfig.customerId Yalnızca logProcessor.appLogs.destination olarak ayarlandığında log-analyticsgereklidir. 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 olarak ayarlandığında log-analyticsgereklidir. Base64 kodlu Log Analytics çalışma alanı paylaşılan anahtarı. Bu parametre korumalı bir ayar olarak yapılandırılmalıdır.
  3. id App Service uzantısının özelliğini daha sonra için kaydedin.

    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. Devam etmeden önce uzantının tamamen yüklenmesini bekleyin. Aşağıdaki komutu çalıştırarak terminal oturumunuzun bu işlem tamamlanana kadar beklemesini sağlayabilirsiniz:

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

Kubernetes kümenizde oluşturulmuş podları görmek için kullanabilirsiniz kubectl :

kubectl get pods -n $NAMESPACE

App Service uzantısı tarafından oluşturulan podlardan bu podlar ve sistemdeki rolleri hakkında daha fazla bilgi edinebilirsiniz.

Ö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'a bağlı kümenin kimliği için aşağıdaki ortam değişkenlerini ayarlayın.

    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. Özel konumu oluşturun:

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

    Not

    Kümenizde özel konum oluştururken sorunlarla karşılaşırsanız, kümenizde özel konum özelliğini etkinleştirmeniz gerekebilir. Cli'de hizmet sorumlusu kullanarak oturum açtıysanız veya küme kaynağında kısıtlı izinlere sahip bir Microsoft Entra kullanıcısıyla oturum açtıysanız bu gereklidir.

  3. Aşağıdaki komutla özel konumun başarıyla oluşturulduğunu doğrulayın. Çıkış, özelliğini olarak SucceededgöstermelidirprovisioningState. Aksi takdirde, bir dakika sonra yeniden çalıştırın.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Sonraki adım için özel konum kimliğini kaydedin.

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

App Service Kubernetes ortamını oluşturma

Özel konumda uygulama oluşturmaya başlamadan önce bir App Service Kubernetes ortamına ihtiyacınız vardır.

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

    az appservice kube create \
        --resource-group $GROUP_NAME \
        --name $KUBE_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID 
    
  2. Aşağıdaki komutla App Service Kubernetes ortamının başarıyla oluşturulduğunu doğrulayın. Çıkış, özelliğini olarak SucceededgöstermelidirprovisioningState. Aksi takdirde, bir dakika sonra yeniden çalıştırın.

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

Sonraki adımlar