إعداد مجموعة Kubernetes الممكّنة في Azure Arc لتشغيل App Service وFunctions وLogic Apps (معاينة)

إذا كان لديك مجموعة Kubernetes تدعم Azure Arc، فإنه يمكنك استخدامها لإنشاء موقع مخصص يدعم App Service ونشر تطبيقات الويب وتطبيقات الوظائف وتطبيقات المنطق عليها.

تتيح لك Kubernetes التي تدعم Azure Arc جعل مجموعة Kubernetes المحلية أو السحابية مرئية لـ App Service وFunctions وLogic Apps في Azure. يمكنك إنشاء تطبيق والنشر إليه تمامًا مثل منطقة Azure أخرى.

المتطلبات الأساسية

إذا لم يكن لديك حساب Azure، فسجِّل الاشتراك اليوم للحصول على حساب مجاني.

راجع متطلبات وقيود المعاينة العامة. من الأهمية الخاصة متطلبات نظام المجموعة.

أضف ملحقات Azure CLI

قم بتشغيل بيئة Bash في Azure Cloud Shell.

نظرًا إلى أن أوامر CLI هذه لم تصبح بعد جزءًا من مجموعة CLI الأساسية، فأضفها مع الأوامر التالية.

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

إنشاء مجموعة متصلة

إشعار

يستخدم هذا البرنامج التعليمي Azure Kubernetes Service (AKS) لتوفير تعليمات محددة لإعداد بيئة من الصفر. ومع ذلك، بالنسبة إلى حمل عمل الإنتاج، من المحتمل ألا ترغب في تمكين Azure Arc على مجموعة AKS حيث تتم إدارتها بالفعل في Azure. ستساعدك الخطوات على البدء في فهم الخدمة، ولكن بالنسبة إلى عمليات توزيع الإنتاج، يجب أن ينظر إليها على أنها توضيحية وليست إلزامية. انظر التشغيل السريع: توصيل مجموعة Kubernetes حالية بـ Azure Arc للحصول على تعليمات عامة حول إنشاء مجموعة Kubernetes تدعم Azure Arc.

  1. أنشئ مجموعة في Azure Kubernetes Service مع عنوان IP عام. استبدل <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 واختبر اتصالك بالمجموعة. بشكل افتراضي، يتم حفظ ملف kubeconfig إلى ~/.kube/config.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. أنشئ مجموعة موارد لاحتواء موارد Azure Arc الخاصة بك. استبدل <group-name> باسم مجموعة الموارد التي تريدها.

    GROUP_NAME="<group-name>" # Name of resource group for the connected cluster
    
    az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
    
  4. قم بتوصيل المجموعة التي أنشأتها بـ Azure Arc.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. تحقق من صحة الاتصال باستخدام الأمر التالي. يجب أن يظهر خاصية provisioningState على أنها Succeeded. إذا لم يكن الأمر كذلك، فقم بتشغيل الأمر مرة أخرى بعد دقيقة.

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

إنشاء مساحة عمل Log Analytics

في حين أن مساحة عمل Log Analytic ليست مطلوبة لتشغيل App Service في Azure Arc، إلا أن هذه هي الطريقة التي يمكن بها للمطورين الحصول على سجلات التطبيقات لتطبيقاتهم التي تعمل في مجموعة Kubernetes التي تدعم Azure Arc.

  1. من أجل التبسيط، أنشئ مساحة العمل الآن.

    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. قم بتشغيل الأوامر التالية للحصول على معرّف مساحة العمل المرمَّز والمفتاح المشترك لمساحة عمل Log Analytics الحالية. أنت تحتاج إليهما في الخطوة التالية.

    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

  1. قم بتعيين متغيرات البيئة التالية للاسم المطلوب لـ ملحق App Service، ومساحة اسم المجموعة التي يجب توفير الموارد فيها، واسم بيئة App Service Kubernetes. اختر اسما فريدا ل <kube-environment-name>، لأنه جزء من اسم المجال للتطبيق الذي تم إنشاؤه في بيئة App Service Kubernetes.

    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. قم بتثبيت ملحق App Service على مجموعتك المتصلة بـ Azure Arc، مع تمكين Log Analytics. مرة أخرى، في حين أن Log Analytics ليست مطلوبة، لا يمكنك إضافتها إلى الملحق لاحقًا، لذلك من الأسهل القيام بذلك الآن.

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

    إشعار

    لتثبيت الامتداد دون تكامل Log Analytics، قم بإزالة المعلمات الثلاث الأخيرة --configuration-settings من الأمر.

    يصف الجدول التالي المعلمات المختلفة --configuration-settings عند تشغيل الأمر:

    المعلمة ‏‏الوصف‬
    Microsoft.CustomLocation.ServiceAccount حساب الخدمة الذي يجب إنشاؤه للموقع المخصص الذي تم إنشاؤه. يُوصى بضبط ذلك على القيمة default.
    appsNamespace مساحة الاسم من أجل توفير تعريفات ووحدات التطبيق. يجب أن تطابق تلك الموجودة في مساحة اسم إصدار الملحق.
    clusterName اسم بيئة App Service Kubernetes التي تم إنشاؤها مقابل هذا الملحق.
    keda.enabled ما إذا كان ينبغي تثبيت KEDA على مجموعة Kubernetes. تقبل true أو false.
    buildService.storageClassName اسم فئة التخزين لخدمة الإنشاء لتخزين البيانات الاصطناعية للإنشاء. قيمة مثل default تحدد فئة تسمى default، وليس أي فئة يتم تمييزها على أنها افتراضية. الافتراضي هو فئة تخزين صالحة لـ AKS وAKS HCI ولكن قد لا يكون مخصصًا للتوزيعات/الأنظمة الأساسية الأخرى.
    buildService.storageAccessMode وضع الوصول لاستخدامه مع فئة التخزين المسماة. تقبل ReadWriteOnce أو ReadWriteMany.
    customConfigMap اسم خريطة التكوين التي سوف يتم تعيينها بواسطة بيئة App Service Kubernetes. حاليا، يجب أن يكون <namespace>/kube-environment-config، مع <namespace> استبدال بقيمة appsNamespace.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group اسم مجموعة الموارد التي توجد فيها مجموعة Azure Kubernetes Service. صالحة ومطلوبة فقط عندما تكون المجموعة الأساسية هي Azure Kubernetes Service.
    logProcessor.appLogs.destination اختياري. تقبل log-analytics أو none، واختيار لا شيء يعطل سجلات النظام الأساسي.
    logProcessor.appLogs.logAnalyticsConfig.customerId مطلوبة فقط عند تعيين logProcessor.appLogs.destination على log-analytics. معرّف مساحة عمل Log analytics المرمَّزة بمجموعة base64. يجب تكوين هذه المعلمة كإعداد محميّ.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey مطلوبة فقط عند تعيين logProcessor.appLogs.destination على log-analytics. المفتاح المشترك لمساحة عمل Log analytics المرمَّزة بمجموعة base64. يجب تكوين هذه المعلمة كإعداد محميّ.
  3. احفظ خاصية id لملحق App Service لاستخدامها في وقت لاحق.

    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. انتظر حتى يتم تثبيت الملحق بالكامل قبل المتابعة. يمكنك أن تجعل جلستك الطرفية تنتظر حتى يكتمل ذلك من خلال تشغيل الأمر التالي:

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

يمكنك استخدام kubectl لمشاهدة الحجيرات التي تم إنشاؤها في مجموعة Kubernetes الخاصة بك:

kubectl get pods -n $NAMESPACE

يمكنك معرفة المزيد عن هذه الوحدات ودورها في النظام من الوحدات التي تم إنشاؤها بواسطة ملحق App Service.

إنشاء موقع مخصص

يُستخدم الموقع المخصص في Azure لتعيين بيئة App Service Kubernetes.

  1. قم بتعيين متغيرات البيئة التالية للاسم المطلوب للموقع المخصص ولمعرّف المجموعة المتصلة بـ 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. قم بإنشاء الموقع المخصص:

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

    إشعار

    إذا واجهت مشكلات في إنشاء موقع مخصص على نظام المجموعة، فقد تحتاج إلى تمكين ميزة الموقع المخصص على نظام المجموعة. هذا مطلوب إذا تم تسجيل الدخول إلى CLI باستخدام كيان الخدمة أو إذا قمت بتسجيل الدخول باستخدام مستخدم Microsoft Entra بأذونات مقيدة على مورد نظام المجموعة.

  3. تحقق من صحة إنشاء الموقع المخصص بنجاح باستخدام الأمر التالي. يجب أن يظهر الإخراج خاصية provisioningState على أنها Succeeded. إذا لم يكن كذلك، فقم بتشغيله مرة أخرى بعد دقيقة.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. احفظ معرّف الموقع المخصص للخطوة التالية.

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

إنشاء بيئة App Service Kubernetes

قبل أن تتمكن من البدء في إنشاء تطبيقات على الموقع المخصص، أنت بحاجة إلى بيئة App Service Kubernetes.

  1. أنشئ بيئة App Service Kubernetes:

    az appservice kube create \
        --resource-group $GROUP_NAME \
        --name $KUBE_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID 
    
  2. تحقق من صحة إنشاء بيئة App Service Kubernetes بنجاح باستخدام الأمر التالي. يجب أن يظهر الإخراج خاصية provisioningState على أنها Succeeded. إذا لم يكن كذلك، فقم بتشغيله مرة أخرى بعد دقيقة.

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

الخطوات التالية