التشغيل السريع: إنشاء بوابة التطبيق للحاويات التي تديرها وحدة تحكم ALB

يفترض هذا الدليل أنك تتبع استراتيجية نشر وحدة تحكمALB المدارة، حيث تتم إدارة جميع موارد Application Gateway for Containers بواسطة وحدة تحكم ALB. يتم تحديد دورة الحياة الموارد المحددة في Kubernetes. تنشئ وحدة تحكم ALB مورد بوابة التطبيق للحاويات عند تعريف مورد مخصص ApplicationLoadBalancer على نظام المجموعة. تستند دورة حياة بوابة التطبيق للحاويات إلى دورة حياة المورد المخصص.

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

تأكد من نشر وحدة تحكم ALB أولا في مجموعة Kubernetes الخاصة بك. راجع التشغيل السريع: نشر بوابة التطبيق لوحدة تحكم ALB للحاويات إذا لم تكن قد نشرت بالفعل وحدة تحكم ALB.

إعداد الشبكة الظاهرية / الشبكة الفرعية لبوابة التطبيق للحاويات

إذا لم يكن لديك شبكة فرعية متوفرة مع ما لا يقل عن 250 عنوان IP متوفر وتم تفويضها إلى مورد بوابة التطبيق للحاويات، فاستخدم الخطوات التالية لإنشاء شبكة فرعية جديدة وتمكين تفويض الشبكة الفرعية. لا يمكن أن تتداخل مساحة عنوان الشبكة الفرعية الجديدة مع أي شبكات فرعية موجودة في الشبكة الظاهرية.

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

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'

MC_RESOURCE_GROUP=$(az aks show --name $AKS_NAME --resource-group $RESOURCE_GROUP --query "nodeResourceGroup" -o tsv)
CLUSTER_SUBNET_ID=$(az vmss list --resource-group $MC_RESOURCE_GROUP --query '[0].virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].subnet.id' -o tsv)
read -d '' VNET_NAME VNET_RESOURCE_GROUP VNET_ID <<< $(az network vnet show --ids $CLUSTER_SUBNET_ID --query '[name, resourceGroup, id]' -o tsv)

قم بتشغيل الأمر التالي لإنشاء شبكة فرعية جديدة تحتوي على ما لا يقل عن 250 عنوان IP متوفر وتمكين تفويض الشبكة الفرعية لمورد اقتران بوابة التطبيق للحاويات:

SUBNET_ADDRESS_PREFIX='<network address and prefix for an address space under the vnet that has at least 250 available addresses (/24 or larger subnet)>'
ALB_SUBNET_NAME='subnet-alb' # subnet name can be any non-reserved subnet name (i.e. GatewaySubnet, AzureFirewallSubnet, AzureBastionSubnet would all be invalid)
az network vnet subnet create \
  --resource-group $VNET_RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name $ALB_SUBNET_NAME \
  --address-prefixes $SUBNET_ADDRESS_PREFIX \
  --delegations 'Microsoft.ServiceNetworking/trafficControllers'
ALB_SUBNET_ID=$(az network vnet subnet show --name $ALB_SUBNET_NAME --resource-group $VNET_RESOURCE_GROUP --vnet-name $VNET_NAME --query '[id]' --output tsv)

تفويض الأذونات إلى الهوية المدارة

تحتاج وحدة تحكم ALB إلى القدرة على توفير بوابة تطبيق جديدة لموارد الحاويات والانضمام إلى الشبكة الفرعية المخصصة لمورد اقتران بوابة التطبيق للحاويات.

في هذا المثال، نقوم بتفويض دور AppGW for Containers Configuration Manager إلى مجموعة الموارد التي تحتوي على المجموعة المدارة وتفويض دور مساهم الشبكة إلى الشبكة الفرعية المستخدمة من قبل الشبكة الفرعية لاقتران بوابة التطبيق للحاويات، والتي تحتوي على إذن اقتران Microsoft.Network/virtualNetworks/subnets/join/action .

إذا رغبت في ذلك، يمكنك إنشاء دور مخصص وتعيينه باستخدام إذن Microsoft.Network/virtualNetworks/subnets/join/action لإزالة الأذونات الأخرى المضمنة في دور مساهم الشبكة. تعرف على المزيد حول إدارة أذونات الشبكة الفرعية.

IDENTITY_RESOURCE_NAME='azure-alb-identity'

MC_RESOURCE_GROUP=$(az aks show --name $AKS_NAME --resource-group $RESOURCE_GROUP --query "nodeResourceGroup" -otsv | tr -d '\r')

mcResourceGroupId=$(az group show --name $MC_RESOURCE_GROUP --query id -otsv)
principalId=$(az identity show -g $RESOURCE_GROUP -n $IDENTITY_RESOURCE_NAME --query principalId -otsv)

# Delegate AppGw for Containers Configuration Manager role to AKS Managed Cluster RG
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $mcResourceGroupId --role "fbc52c3f-28ad-4303-a892-8a056630b8f1" 

# Delegate Network Contributor permission for join to association subnet
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $ALB_SUBNET_ID --role "4d97b98b-1d4f-4787-a291-c67834d212e7" 

إنشاء مورد ApplicationLoadBalancer Kubernetes

  1. تعريف مساحة اسم Kubernetes لمورد ApplicationLoadBalancer
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
  name: alb-test-infra
EOF
  1. حدد مورد ApplicationLoadBalancer، مع تحديد معرف الشبكة الفرعية الذي يجب نشر مورد اقتران Application Gateway for Containers فيه. ينشئ الاقتران الاتصال من بوابة التطبيق للحاويات إلى الشبكة الفرعية المعرفة (والشبكات المتصلة حيثما ينطبق ذلك) لتكون قادرة على نقل بيانات الوكيل إلى خلفية محددة.

إشعار

عندما تقوم وحدة تحكم ALB بإنشاء بوابة التطبيق لموارد الحاويات في ARM، ستستخدم اصطلاحات التسمية التالية لمواردها:

  • الأحرف> التي تم إنشاؤها عشوائيا من alb-8< لتعريف مورد بوابة التطبيق للحاويات
  • ك-8< أحرف> تم إنشاؤها عشوائيا لتعريف مورد الاقتران

إذا كنت ترغب في تغيير اسم الموارد التي تم إنشاؤها في Azure، ففكر في اتباع استراتيجية إحضار التوزيع الخاصة بك.

قم بتشغيل الأمر التالي لإنشاء مورد بوابة التطبيق للحاويات والاقتران.

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: ApplicationLoadBalancer
metadata:
  name: alb-test
  namespace: alb-test-infra
spec:
  associations:
  - $ALB_SUBNET_ID
EOF

التحقق من صحة إنشاء بوابة التطبيق لموارد الحاويات

بمجرد إنشاء مورد ApplicationLoadBalancer، يمكنك تتبع تقدم النشر لموارد Application Gateway for Containers. ينتقل التوزيع من InProgress إلى الحالة "مبرمج" عند اكتمال التوفير. قد يستغرق إنشاء موارد بوابة التطبيق للحاويات من 5 إلى 6 دقائق.

يمكنك التحقق من حالة مورد ApplicationLoadBalancer عن طريق تشغيل الأمر التالي:

kubectl get applicationloadbalancer alb-test -n alb-test-infra -o yaml -w

مثال على إخراج التوفير الناجح لمورد Application Gateway for Containers من Kubernetes.

status:
  conditions:
  - lastTransitionTime: "2023-06-19T21:03:29Z"
    message: Valid Application Gateway for Containers resource
    observedGeneration: 1
    reason: Accepted
    status: "True"
    type: Accepted
  - lastTransitionTime: "2023-06-19T21:03:29Z"
    message: alb-id=/subscriptions/xxx/resourceGroups/yyy/providers/Microsoft.ServiceNetworking/trafficControllers/alb-zzz
    observedGeneration: 1
    reason: Ready
    status: "True"
    type: Deployment

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

تهانينا، لقد قمت بتثبيت وحدة تحكم ALB على نظام المجموعة الخاص بك ونشرت موارد بوابة التطبيق للحاويات في Azure!

جرب بعض الأدلة الإرشادية لنشر نموذج تطبيق، مما يوضح بعض Application Gateway لمفاهيم موازنة تحميل الحاوية.