البرنامج التعليمي: تمكين الوظيفة الإضافية لوحدة تحكم دخول بوابة التطبيق لمجموعة AKS موجودة مع بوابة تطبيق موجودة
يمكنك استخدام Azure CLI أو المدخل لتمكين الوظيفة الإضافية لوحدة التحكم في دخول بوابة التطبيق (AGIC) لنظام مجموعة Azure Kubernetes Services (AKS) الموجودة. في هذا البرنامج التعليمي، ستتعلم كيفية استخدام الوظيفة الإضافية AGIC لعرض تطبيق Kubernetes الخاص بك في مجموعة AKS موجودة من خلال بوابة تطبيق موجودة تم نشرها في شبكات ظاهرية منفصلة. ستبدأ بإنشاء مجموعة AKS في شبكة ظاهرية واحدة وبوابة تطبيق في شبكة ظاهرية منفصلة لمحاكاة الموارد الموجودة. ستقوم بعد ذلك بتمكين الوظيفة الإضافية AGIC، ونظير الشبكتين الظاهريتين معا، ونشر نموذج تطبيق سيتم عرضه من خلال بوابة التطبيق باستخدام الوظيفة الإضافية AGIC. إذا كنت تقوم بتمكين الوظيفة الإضافية AGIC لبوابة تطبيق موجودة والمجموعة AKS الموجودة في نفس الشبكة الظاهرية، فيمكنك تخطي خطوة التناظر أدناه. توفر الوظيفة الإضافية طريقة أسرع بكثير لنشر AGIC لمجموعة AKS الخاصة بك من خلال Helm كما تقدم تجربة مدارة بالكامل.
في هذا البرنامج التعليمي، تتعلم كيفية:
- قم بإنشاء مجموعة موارد.
- إنشاء نظام مجموعة AKS جديد.
- إنشاء بوابة تطبيق جديدة.
- تمكين الوظيفة الإضافية AGIC في مجموعة AKS الموجودة من خلال Azure CLI.
- تمكين الوظيفة الإضافية AGIC في مجموعة AKS الموجودة من خلال مدخل Microsoft Azure.
- نظير الشبكة الظاهرية لبوابة التطبيق مع الشبكة الظاهرية لنظام مجموعة AKS.
- نشر نموذج تطبيق باستخدام AGIC للدخول على نظام مجموعة AKS.
- تحقق من إمكانية الوصول إلى التطبيق من خلال بوابة التطبيق.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
المتطلبات الأساسية
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
إنشاء مجموعة موارد
في Azure، تقوم بتخصيص الموارد ذات الصلة لمجموعة موارد. أنشئ مجموعة موارد باستخدام az group create. ينشئ المثال التالي مجموعة موارد تسمى myResourceGroup في موقع شرق الولايات المتحدة (المنطقة):
az group create --name myResourceGroup --location eastus
انشر مجموعة AKS جديدة
ستقوم الآن بنشر مجموعة AKS جديدة، لمحاكاة وجود مجموعة AKS الحالية التي تريد تمكين وظيفة AGIC الإضافية لها.
في المثال التالي، فسوف يكون نشر AKS جديدة كتلة المسمى myCluster باستخدام Azure CNI والهويات المدارة في مجموعة الموارد قمت بإنشائه،myResourceGroup.
az aks create --name myCluster --resource-group myResourceGroup --network-plugin azure --enable-managed-identity --generate-ssh-keys
لتكوين المزيد من المعلمات للأمر أعلاه، راجع az aks create.
إشعار
سيتم إنشاء مجموعة موارد عقدة باسم MC_resource-group-name_cluster-name_location.
نشر بوابة تطبيق جديدة
ستقوم الآن بنشر بوابة تطبيق جديدة، لمحاكاة وجود بوابة تطبيق موجودة تريد استخدامها لتحميل حركة مرور الرصيد إلى مجموعة AKS الخاصة بك، myCluster. سيكون اسم بوابة التطبيق myApplicationGateway، ولكن ستحتاج أولا إلى إنشاء مورد IP عام، يسمى myPublicIp، وشبكة ظاهرية جديدة تسمى myVnet بمساحة العنوان 10.0.0.0/16، وشبكة فرعية بمساحة العنوان 10.0.0.0/24 تسمى mySubnet، ونشر بوابة التطبيق في mySubnet باستخدام myPublicIp.
تنبيه
عند استخدام نظام مجموعة AKS وبوابة التطبيق في شبكات ظاهرية منفصلة، يجب ألا تتداخل مساحات عناوين الشبكتين الظاهريتين. مساحة العنوان الافتراضية التي تنشرها مجموعة AKS هي 10.224.0.0/12.
az network public-ip create --name myPublicIp --resource-group myResourceGroup --allocation-method Static --sku Standard
az network vnet create --name myVnet --resource-group myResourceGroup --address-prefix 10.0.0.0/16 --subnet-name mySubnet --subnet-prefix 10.0.0.0/24
az network application-gateway create --name myApplicationGateway --resource-group myResourceGroup --sku Standard_v2 --public-ip-address myPublicIp --vnet-name myVnet --subnet mySubnet --priority 100
إشعار
تدعم الوظيفة الإضافية لوحدة التحكم في دخول بوابة التطبيق (AGIC) فقط وحدات SKU لبوابة التطبيق v2 (قياسية و WAF)، وليس وحدات SKU لبوابة التطبيق v1.
قم بتمكين الوظيفة الإضافية AGIC في مجموعة AKS الحالية من خلال Azure CLI
إذا كنت ترغب في الاستمرار في استخدام Azure CLI، يمكنك الاستمرار في تمكين الوظيفة الإضافية AGIC في مجموعة AKS التي أنشأتها، myCluster، وتحديد الوظيفة الإضافية AGIC لاستخدام بوابة التطبيق الموجودة التي قمت بإنشائها، myApplicationGateway.
appgwId=$(az network application-gateway show --name myApplicationGateway --resource-group myResourceGroup -o tsv --query "id")
az aks enable-addons --name myCluster --resource-group myResourceGroup --addon ingress-appgw --appgw-id $appgwId
تمكين الوظيفة الإضافية AGIC في مجموعة AKS الموجودة من خلال مدخل Microsoft Azure
- من الصفحة الرئيسية لمدخل Azure، انتقل إلى مورد نظام مجموعة AKS.
- في قائمة الخدمة، ضمن Settings، حدد Networking>Virtual network integration.
- ضمن وحدة تحكم دخول بوابة التطبيق، حدد إدارة.
- في صفحة وحدة تحكم دخول بوابة التطبيق، حدد خانة الاختيار لتمكين وحدة تحكم الدخول، ثم حدد بوابة التطبيق الموجودة من القائمة المنسدلة.
- حدد حفظ.
هام
إذا كنت تستخدم بوابة تطبيق في مجموعة موارد مختلفة عن مجموعة موارد نظام مجموعة AKS، يجب تعيين أدوار المساهم والقارئ للهوية المدارة ingressapplicationgateway-{AKSNAME} التي تم إنشاؤها في مجموعة موارد بوابة التطبيق.
نظير الشبكتين الافتراضيتين معاً
نظرا لأنك قمت بنشر نظام مجموعة AKS في شبكتها الظاهرية الخاصة وبوابة التطبيق في شبكة ظاهرية أخرى، فستحتاج إلى نظير الشبكتين الظاهريتين معا من أجل تدفق حركة المرور من بوابة التطبيق إلى الحجيرات في نظام المجموعة. يتطلب التناظر بين الشبكتين الظاهريتين تشغيل أمر Azure CLI مرتين منفصلتين، للتأكد من أن الاتصال ثنائي الاتجاه. سيقوم الأمر الأول بإنشاء اتصال نظير من الشبكة الظاهرية لبوابة التطبيق إلى شبكة AKS الظاهرية؛ سيقوم الأمر الثاني بإنشاء اتصال نظير في الاتجاه الآخر.
nodeResourceGroup=$(az aks show --name myCluster --resource-group myResourceGroup -o tsv --query "nodeResourceGroup")
aksVnetName=$(az network vnet list --resource-group $nodeResourceGroup -o tsv --query "[0].name")
aksVnetId=$(az network vnet show --name $aksVnetName --resource-group $nodeResourceGroup -o tsv --query "id")
az network vnet peering create --name AppGWtoAKSVnetPeering --resource-group myResourceGroup --vnet-name myVnet --remote-vnet $aksVnetId --allow-vnet-access
appGWVnetId=$(az network vnet show --name myVnet --resource-group myResourceGroup -o tsv --query "id")
az network vnet peering create --name AKStoAppGWVnetPeering --resource-group $nodeResourceGroup --vnet-name $aksVnetName --remote-vnet $appGWVnetId --allow-vnet-access
إشعار
في الخطوة "Deploy a new AKS cluster" أعلاه، أنشأنا AKS مع Azure CNI، في حالة وجود مجموعة AKS موجودة باستخدام وضع Kubenet تحتاج إلى تحديث جدول التوجيه لمساعدة الحزم الموجهة ل POD IP في الوصول إلى العقدة التي تستضيف الحاوية. طريقة بسيطة لتحقيق ذلك هي عن طريق ربط نفس جدول التوجيه الذي تم إنشاؤه بواسطة AKS بالشبكة الفرعية لبوابة التطبيق.
نشر تطبيق نموذج باستخدام AGIC
ستقوم الآن بنشر نموذج تطبيق إلى مجموعة AKS التي قمت بإنشائها والتي ستستخدم الوظيفة الإضافية AGIC للدخول وتوصيل بوابة التطبيق بمجموعة AKS. أولاً، وستحصل على أوراق الاعتماد إلى AKS تتجمع لك نشرها عن طريق تشغيل az aks get-credentials
الأوامر.
az aks get-credentials --name myCluster --resource-group myResourceGroup
بمجرد حصولك على بيانات الاعتماد للمجموعة التي قمت بإنشائها، قم بتشغيل الأمر التالي لإعداد تطبيق نموذجي يستخدم AGIC من أجل الدخول إلى الكتلة. ستقوم AGIC بتحديث بوابة التطبيق التي قمت بإعدادها مسبقا بقواعد التوجيه المقابلة إلى نموذج التطبيق الجديد الذي قمت بنشره.
kubectl apply -f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml
تأكد من إمكانية الوصول إلى التطبيق
الآن بعد أن تم إعداد بوابة التطبيق لخدمة نسبة استخدام الشبكة إلى مجموعة AKS، دعنا نتحقق من إمكانية الوصول إلى التطبيق الخاص بك. ستحصل أولاً على عنوان IP الخاص بـ Ingress.
kubectl get ingress
تحقق من أن نموذج التطبيق الذي قمت بإنشائه قيد التشغيل إما عن طريق زيارة عنوان IP لبوابة التطبيق التي حصلت عليها من تشغيل الأمر أعلاه أو تحقق مع curl
. قد يستغرق الأمر دقيقة واحدة للحصول على التحديث، لذلك إذا كانت بوابة التطبيق لا تزال في حالة "تحديث" على مدخل Microsoft Azure، فدعها تنتهي قبل محاولة الوصول إلى عنوان IP.
تنظيف الموارد
عند عدم الحاجة، احذف جميع الموارد التي تم إنشاؤها في هذا البرنامج التعليمي عن طريق حذف myResourceGroup ومجموعات الموارد MC_myResourceGroup_myCluster_eastus :
az group delete --name myResourceGroup
az group delete --name MC_myResourceGroup_myCluster_eastus