التشغيل السريع: نشر بوابة التطبيق لوحدة تحكم ALB للحاويات
وحدة تحكم ALB مسؤولة عن ترجمة واجهة برمجة تطبيقات البوابة وتكوين واجهة برمجة تطبيقات الدخول داخل Kubernetes لتحميل قواعد موازنة داخل بوابة التطبيق للحاويات. يستعرض الدليل التالي الخطوات اللازمة لتوفير وحدة تحكم ALB في مجموعة AKS جديدة أو موجودة.
المتطلبات الأساسية
تحتاج إلى إكمال المهام التالية قبل نشر بوابة التطبيق للحاويات على Azure وتثبيت وحدة تحكم ALB على نظام المجموعة:
قم بإعداد اشتراك Azure والعميل الخاص بك
az-cli
.# Sign in to your Azure subscription. SUBSCRIPTION_ID='<your subscription id>' az login az account set --subscription $SUBSCRIPTION_ID # Register required resource providers on Azure. az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.Network az provider register --namespace Microsoft.NetworkFunction az provider register --namespace Microsoft.ServiceNetworking # Install Azure CLI extensions. az extension add --name alb
تعيين نظام مجموعة AKS لحمل العمل الخاص بك.
إشعار
يجب أن تكون مجموعة AKS في منطقة حيث يجب أن تستخدم بوابة التطبيق للحاويات نظام مجموعة AKS Azure CNI. يجب تمكين ميزة هوية حمل العمل في نظام مجموعة AKS. تعرف على كيفية تمكين هوية حمل العمل على مجموعة AKS موجودة.
إذا كنت تستخدم مجموعة موجودة، فتأكد من تمكين دعم هوية حمل العمل على نظام مجموعة AKS. يمكن تمكين هويات حمل العمل عبر ما يلي:
AKS_NAME='<your cluster name>' RESOURCE_GROUP='<your resource group name>' az aks update -g $RESOURCE_GROUP -n $AKS_NAME --enable-oidc-issuer --enable-workload-identity --no-wait
إذا لم يكن لديك نظام مجموعة موجود، فاستخدم الأوامر التالية لإنشاء مجموعة AKS جديدة مع تمكين هوية حمل العمل وAzure CNI.
AKS_NAME='<your cluster name>' RESOURCE_GROUP='<your resource group name>' LOCATION='northeurope' VM_SIZE='<the size of the vm in AKS>' # The size needs to be available in your location az group create --name $RESOURCE_GROUP --location $LOCATION az aks create \ --resource-group $RESOURCE_GROUP \ --name $AKS_NAME \ --location $LOCATION \ --node-vm-size $VM_SIZE \ --network-plugin azure \ --enable-oidc-issuer \ --enable-workload-identity \ --generate-ssh-key
تثبيت Helm
Helm هي أداة تغليف مفتوحة المصدر تستخدم لتثبيت وحدة تحكم ALB.
إشعار
Helm متاح بالفعل في Azure Cloud Shell. إذا كنت تستخدم Azure Cloud Shell، فلا يلزم تثبيت Helm إضافي.
يمكنك أيضا استخدام الخطوات التالية لتثبيت Helm على جهاز محلي يعمل بنظام التشغيل Windows أو Linux. تأكد من تثبيت أحدث إصدار من helm.
راجع إرشادات التثبيت للحصول على خيارات مختلفة للتثبيت. وبالمثل، إذا كان إصدار Windows الخاص بك يحتوي على مدير حزم Windows winget مثبتا، يمكنك تنفيذ الأمر التالي:
winget install helm.helm
تثبيت وحدة تحكم ALB
إنشاء هوية مدارة من قبل المستخدم لوحدة تحكم ALB وات توحيد الهوية كهوية حمل العمل لاستخدامها في نظام مجموعة AKS.
RESOURCE_GROUP='<your resource group name>' AKS_NAME='<your aks cluster name>' IDENTITY_RESOURCE_NAME='azure-alb-identity' mcResourceGroup=$(az aks show --resource-group $RESOURCE_GROUP --name $AKS_NAME --query "nodeResourceGroup" -o tsv) mcResourceGroupId=$(az group show --name $mcResourceGroup --query id -otsv) echo "Creating identity $IDENTITY_RESOURCE_NAME in resource group $RESOURCE_GROUP" az identity create --resource-group $RESOURCE_GROUP --name $IDENTITY_RESOURCE_NAME principalId="$(az identity show -g $RESOURCE_GROUP -n $IDENTITY_RESOURCE_NAME --query principalId -otsv)" echo "Waiting 60 seconds to allow for replication of the identity..." sleep 60 echo "Apply Reader role to the AKS managed cluster resource group for the newly provisioned identity" az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $mcResourceGroupId --role "acdd72a7-3385-48ef-bd42-f606fba81ae7" # Reader role echo "Set up federation with AKS OIDC issuer" AKS_OIDC_ISSUER="$(az aks show -n "$AKS_NAME" -g "$RESOURCE_GROUP" --query "oidcIssuerProfile.issuerUrl" -o tsv)" az identity federated-credential create --name "azure-alb-identity" \ --identity-name "$IDENTITY_RESOURCE_NAME" \ --resource-group $RESOURCE_GROUP \ --issuer "$AKS_OIDC_ISSUER" \ --subject "system:serviceaccount:azure-alb-system:alb-controller-sa"
تتطلب وحدة تحكم ALB بيانات اعتماد موحدة باسم azure-alb-identity. أي اسم بيانات اعتماد متحد آخر غير مدعوم.
إشعار
قد يؤدي تعيين الهوية المدارة مباشرة بعد الإنشاء إلى حدوث خطأ في أن principalId غير موجود. السماح بحوالي دقيقة من الوقت لنسخ الهوية نسخا متماثلا في معرف Microsoft Entra قبل تفويض الهوية.
تثبيت وحدة تحكم ALB باستخدام Helm
بالنسبة إلى عمليات النشر الجديدة
لتثبيت وحدة تحكم ALB، استخدم
helm install
الأمر .helm install
عند تشغيل الأمر، فإنه ينشر مخطط helm إلى مساحة الاسم الافتراضية. عند نشر وحدة تحكم alb، يتم توزيعها إلى مساحة اسم azure-alb-system . قد يتم تجاوز كل من مساحات الأسماء هذه بشكل مستقل حسب الرغبة. لتجاوز مساحة الاسم التي يتم نشر مخطط helm إليها، يمكنك تحديد المعلمة --namespace (أو -n). لتجاوز مساحة اسم azure-alb-system المستخدمة بواسطة وحدة تحكم alb، يمكنك تعيين خاصية albController.namespace أثناء التثبيت (--set albController.namespace
). إذا لم--namespace
يتم تعريف المعلمات أو--set albController.namespace
، يتم استخدام مساحة الاسم الافتراضية لمخطط helm ويتم استخدام مساحة اسم نظام azure-alb لمكونات وحدة تحكم ALB. وأخيرا، إذا لم يتم تعريف مساحة الاسم لمورد مخطط helm بعد، فتأكد من تحديد المعلمة--create-namespace
أيضا مع--namespace
المعلمات أو-n
.يمكن تثبيت وحدة تحكم ALB عن طريق تشغيل الأوامر التالية:
HELM_NAMESPACE='<namespace for deployment>' CONTROLLER_NAMESPACE='azure-alb-system' az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME helm install alb-controller oci://mcr.microsoft.com/application-lb/charts/alb-controller \ --namespace $HELM_NAMESPACE \ --version 1.3.7 \ --set albController.namespace=$CONTROLLER_NAMESPACE \ --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)
بالنسبة إلى عمليات النشر الحالية
يمكن ترقية ALB عن طريق تشغيل الأوامر التالية:
إشعار
أثناء الترقية
--namespace
، يرجى التأكد من تحديد المعلمات أو--set albController.namespace
إذا تم تجاوز مساحات الأسماء في التثبيت المثبت مسبقا. لتحديد مساحات الأسماء السابقة المستخدمة، يمكنك تشغيلhelm list
الأمر لمساحة اسم helm ووحدةkubectl get pod -A -l app=alb-controller
تحكم ALB.HELM_NAMESPACE='<your cluster name>' CONTROLLER_NAMESPACE='azure-alb-system' az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME helm upgrade alb-controller oci://mcr.microsoft.com/application-lb/charts/alb-controller \ --namespace $HELM_NAMESPACE \ --version 1.3.7 \ --set albController.namespace=$CONTROLLER_NAMESPACE \ --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)
تحقق من تثبيت وحدة تحكم ALB
تحقق من أن وحدات تحكم ALB جاهزة:
kubectl get pods -n azure-alb-system
يجب أن ترى ما يلي:
الاسم جاهز الحالة اعاده تشغيل العمر alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 قيد التشغيل 0 4d6h alb-controller-6648c5d5c-sdd9t 1/1 قيد التشغيل 0 4d6h alb-controller-6648c5d5c-au234 1/1 قيد التشغيل 0 4d6h تحقق من تثبيت GatewayClass
azure-application-lb
على نظام المجموعة:kubectl get gatewayclass azure-alb-external -o yaml
يجب أن ترى أن GatewayClass لديه شرط يقرأ Valid GatewayClass. يشير هذا إلى أنه تم إعداد GatewayClass افتراضي وأن أي موارد بوابة تشير إلى GatewayClass هذه تتم إدارتها بواسطة وحدة تحكم ALB تلقائيا.
apiVersion: gateway.networking.k8s.io/v1beta1 kind: GatewayClass metadata: creationTimestamp: "2023-07-31T13:07:00Z" generation: 1 name: azure-alb-external resourceVersion: "64270" uid: 6c1443af-63e6-4b79-952f-6c3af1f1c41e spec: controllerName: alb.networking.azure.io/alb-controller status: conditions: - lastTransitionTime: "2023-07-31T13:07:23Z" message: Valid GatewayClass observedGeneration: 1 reason: Accepted status: "True" type: Accepted
الخطوات التالية
الآن بعد أن قمت بتثبيت وحدة تحكم ALB بنجاح على نظام المجموعة الخاص بك، يمكنك توفير موارد بوابة التطبيق للحاويات في Azure.
الخطوة التالية هي ربط وحدة تحكم ALB الخاصة بك ببوابة التطبيق للحاويات. تعتمد كيفية إنشاء هذا الارتباط على استراتيجية التوزيع الخاصة بك.
هناك إستراتيجيتان للتوزيع لإدارة بوابة التطبيق للحاويات:
- نشر (BYO) الخاص بك: في استراتيجية النشر هذه، يتم افتراض التوزيع ودورة حياة مورد Application Gateway for Containers ومورد Association ومورد Frontend عبر مدخل Microsoft Azure وCLI وPowerShell وTerraform وما إلى ذلك، والمشار إليها في التكوين داخل Kubernetes.
- لاستخدام توزيع BYO، راجع إنشاء بوابة التطبيق للحاويات - إحضار التوزيع الخاص بك
- تتم إدارتها بواسطة وحدة تحكم ALB: في استراتيجية التوزيع هذه، تكون وحدة تحكم ALB المنشورة في Kubernetes مسؤولة عن دورة حياة مورد Application Gateway for Containers وموارده الفرعية. تنشئ وحدة تحكم ALB مورد بوابة تطبيق للحاويات عند تعريف مورد مخصص ApplicationLoadBalancer على نظام المجموعة. تستند دورة حياة الخدمة إلى دورة حياة المورد المخصص.
- لاستخدام نشر مدار من ALB، راجع إنشاء بوابة التطبيق للحاويات التي تديرها وحدة تحكم ALB
إلغاء تثبيت بوابة التطبيق للحاويات ووحدة تحكم ALB
إذا كنت ترغب في إلغاء تثبيت وحدة تحكم ALB، فأكمل الخطوات التالية.
- حذف بوابة التطبيق للحاويات، يمكنك حذف مجموعة الموارد التي تحتوي على بوابة التطبيق لموارد الحاويات:
az group delete --resource-group $RESOURCE_GROUP
- قم بإلغاء تثبيت وحدة تحكم ALB ومواردها من نظام المجموعة الخاص بك بتشغيل الأوامر التالية:
helm uninstall alb-controller
kubectl delete ns azure-alb-system
kubectl delete gatewayclass azure-alb-external
إشعار
إذا تم استخدام مساحة اسم مختلفة لتثبيت alb-controller، فتأكد من تحديد المعلمة -n على الأمر helm uninstall لتعريف مساحة الاسم المناسبة التي سيتم استخدامها. على سبيل المثال: helm uninstall alb-controller -n unique-namespace