إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: ✔️ AKS Automatic
خدمة Azure Kubernetes (AKS) Automatic يوفر أسهل تجربة إدارة في Kubernetes للمطورين ومهندسي DevOps ومهندسي المنصات. مثالي للتطبيقات الحديثة الذكاء الاصطناعي، يقوم AKS Automatic بأتمتة إعداد نظام مجموعة AKS وعملياته وتضمين تكوينات أفضل الممارسات. يمكن للمستخدمين من أي مستوى مهارة الاستفادة من الأمان والأداء والاعتمادية من AKS التلقائي لتطبيقاتهم. كما يتضمن AKS Automatic نظام جاهزية الكبسولات الذي يضمن 99.9% من عمليات جاهزية الكبسولات المؤهلة خلال 5 دقائق، مما يضمن بنية تحتية موثوقة وذاتية الإصلاح لتطبيقاتك. يضمن هذا التشغيل السريع الفهم الأساسي لمفاهيم Kubernetes. لمزيد من المعلومات، راجع Kubernetes الأساسية للمفاهيم الأساسية ل خدمة Azure Kubernetes (AKS).
في هذا التشغيل السريع، تتعلم ما يلي:
- أنشئ شبكة ظاهرية.
- إنشاء هوية مدارة مع أذونات عبر الشبكة الظاهرية.
- نشر نظام مجموعة AKS تلقائي خاص في الشبكة الظاهرية.
- الاتصال بالمجموعة الخاصة.
- قم بتشغيل نموذج تطبيق متعدد الحاويات مع مجموعة من الخدمات المصغرة والواجهات الأمامية على الويب التي تحاكي سيناريو البيع بالتجزئة.
المتطلبات الأساسية
- إذا لم يكن لديك حساب Azure، أنشئ حسابا مجاني.
- Azure CLI الإصدار 2.86.0 أو أحدث. للعثور على النسخة، شغل
az --versionأمر الأمر. إذا كنت بحاجة إلى تثبيت أو ترقية، راجع تثبيت Azure CLI.
- هوية نظام المجموعة مع
Network Contributorتعيين دور مضمن على الشبكة الفرعية لخادم API. - هوية نظام المجموعة مع
Network Contributorتعيين دور مضمن على الشبكة الظاهرية لدعم التوفير التلقائي للعقدة. - هوية المستخدم التي تصل إلى العنقود باستخدام
Azure Kubernetes Service Cluster User RoleوAzure Kubernetes Service RBAC Writer. - شبكة افتراضية تحتوي على شبكة فرعية مخصصة لخادم API بحجم لا يقل عن
*/28يتم تفويضها إلىMicrosoft.ContainerService/managedClusters.- إذا كان هناك مجموعة أمن الشبكة (NSG) مرتبطة بالشبكات الفرعية، تأكد من أن قواعد تسمح بحركة المرور التالية بين العقد وخادم API، وبين موازن تحميل Azure وخادم API، والتواصل بين الكبسولة.
- إذا كان هناك طريقة أو جهاز تقييد Azure Firewall أو أي جهاز تقييد خارجي، تأكد من السماح بقواعد الشبكة الصادرة المطلوبة وFQDNs المسموح بها.
- AKS Automatic سيقوم بتمكين نهج Azure على عنقود AKS الخاص بك، لكن يجب عليك تسجيل مزود الموارد
Microsoft.PolicyInsightsمسبقا في اشتراكك للحصول على تجربة أكثر سلاسة. لمزيد من المعلومات، راجع Azure مزودي الموارد والأنواع . - قم بإلغاء تثبيت إضافة AKS-preview باستخدام
az extension remove -n aks-preview.
هام
بدءا من AKS 1.36، ستفعل مجموعات AKS التلقائية الجديدة افتراضيا واجهة برمجة تطبيقات بوابة كوبيرنتيز عبر إضافة توجيه التطبيقات بدلا من إدخال NGINX المدار مع إضافة توجيه التطبيقات بسبب تقاعد NGINX في البداية من Ingress.
لا تتأثر المجموعات التلقائية الحالية ولكن يجب أن تبدأ في الانتقال إلى واجهة برمجة تطبيقات Kubernetes Gateway عبر إضافة توجيه التطبيقات.
القيود
تنطبق القيود التالية على عناقيد AKS التلقائية:
- يتوفر AKS Automatic بشكل عام في المناطق التالية:
australiaeast،austriaeast،belgiumcentral،brazilsouth،canadacentralcentralindiacentraluschilecentraldenmarkeasteastasiaeastuseastus2francecentralgermanywestcentralindonesiacentralisraelcentralitalynorthjapaneastjapanwestkoreacentralmalaysiawestmexicocentralnewzealandnorthnortheuropenorwayeastpolandcentralsouthafricanorthsouthcentralussoutheastasiaspaincentralswedencentralswitzerlandnorthuaenorthuksouthwesteuropewestus2westus3.- تدعم مجموعات AKS التلقائية الجديدة افتراضيا تجمع عقد النظام المدارة وLocalDNS. لا يمكنك إنشاء مجموعات AKS التلقائية بدون تجمعات عقد النظام المدارة في أي منطقة.
- مجموعة AKS التلقائية تحتوي على node group resource lockdown معدة مسبقا، مما لا يسمح بتغييرات في مجموعة موارد
MC_، مما يمنع روابط الشبكة الافتراضية في منطقة Private DNS الافتراضية. لسيناريوهات DNS عبر VNet أو مخصصة، استخدم شبكة مخصصة وDNS خاصة باتباع إنشاء مجموعة خاصة خدمة Azure Kubernetes (AKS) تلقائية في شبكة افتراضية مخصصة. - يتطلب إصدار Azure CLI 2.86.0 أو أحدث. للعثور على النسخة، شغل
az --versionأمر الأمر. إذا كنت بحاجة إلى تثبيت أو ترقية، راجع تثبيت Azure CLI. - الامتدادات التالية غير مدعومة:
- عقد ويندوز غير مدعومة.
- إضافة شبكة الخدمة المبنية على Istio ل AKS غير مدعومة.
- لا يتم دعم الترحيل بين وحدة تخزين AKS الأساسية ووحدة التخزين التلقائية.
- لا يتم دعم الترحيلات بين مجموعات AKS التلقائية التي لا تحتوي على تجمعات عقد النظام المدارة ومجموعات AKS التلقائية التي تحتوي على تجمعات عقد النظام المدارة.
- لا يتم دعم تكوين جمع السجلات المخصص لمقاييس Prometheusوجمع السجلات .
- تفعيل ملاحظة ACNS أثناء إنشاء المجموعات التلقائي غير مدعوم. يمكنك تفعيل ملاحظة ACNS بعد إنشاء العنقود.
تحديد المتغيرات
حدد المتغيرات التالية التي تستخدم في الخطوات التالية.
RG_NAME=automatic-rg
VNET_NAME=automatic-vnet
CLUSTER_NAME=automatic
IDENTITY_NAME=automatic-uami
LOCATION=eastus
SUBSCRIPTION_ID=$(az account show --query id -o tsv)
إنشاء مجموعة موارد
مجموعة الموارد Azure هي مجموعة منطقية يتم فيها نشر وإدارة Azure الموارد.
أنشئ مجموعة موارد مستخدماً الأمر az group create.
az group create -n ${RG_NAME} -l ${LOCATION}
يشبه إخراج العينة التالي الإنشاء الناجح لمجموعة الموارد:
{
"id": "/subscriptions/<guid>/resourceGroups/automatic-rg",
"location": "canadacentral",
"managedBy": null,
"name": "automatic-rg",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
إنشاء شبكة ظاهرية
إنشاء شبكة ظاهرية az network vnet create باستخدام الأمر . إنشاء شبكة فرعية لخادم API وشبكة فرعية az network vnet subnet create لنظام المجموعة باستخدام الأمر .
عند استخدام شبكة افتراضية مخصصة مع AKS Automatic، يجب عليك إنشاء شبكة فرعية لخادم واجهة برمجة التطبيقات (API). AKS سيفوض الشبكة الفرعية إلى Microsoft.ContainerService/managedClusters نيابة عنك، مما يمنح خدمة AKS صلاحيات لحقن وحدات خادم API وموزع التحميل الداخلي في تلك الشبكة. لا يمكنك استخدام الشبكة الفرعية لأي أحمال عمل أخرى، ولكن يمكنك استخدامها لمجموعات AKS متعددة موجودة في نفس الشبكة الظاهرية. الحد الأدنى لحجم الشبكة الفرعية لخادم API المدعوم هو /28.
تحذير
يحتفظ عنقود AKS بما لا يقل عن تسعة (9) عناوين IP في مساحة عناوين الشبكة الفرعية. نفاد عناوين IP قد يمنع توسيع خوادم API ويسبب انقطاعا في خادم API.
az network vnet create --name ${VNET_NAME} \
--resource-group ${RG_NAME} \
--location ${LOCATION} \
--address-prefixes 172.19.0.0/16
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name apiServerSubnet \
--delegations Microsoft.ContainerService/managedClusters \
--address-prefixes 172.19.0.0/28
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name userNodeSubnet \
--address-prefixes 172.19.1.0/24
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name managedSystemNodeSubnet \
--address-prefixes 172.19.0.64/26
قواعد مجموعة أمان الشبكة
يسمح بكافة نسبة استخدام الشبكة داخل الشبكة الظاهرية بشكل افتراضي. ولكن إذا أضفت قواعد مجموعة أمان الشبكة (NSG) لتقييد حركة المرور بين الشبكات الفرعية المختلفة، فتأكد من أن قواعد أمان NSG تسمح بأنواع الاتصال التالية:
| الوجهة | المصدر | بروتوكول | ميناء | استخدام |
|---|---|---|---|---|
| شبكة APIServer الفرعية CIDR | شبكة عقدة المستخدم الفرعية وشبكة عقدة النظام | TCP | 443 و4443 | مطلوب لتمكين الاتصال بين العقد وخادم API. |
| شبكة APIServer الفرعية CIDR | موازن تحميل Azure | TCP | 9988 | مطلوب لتمكين التواصل بين موازن تحميل Azure وخادم API. يمكنك أيضا تفعيل جميع الاتصالات بين موازن تحميل Azure وخادم Subnet الخاص ب API CIDR. |
| عقدة CIDR | عقدة CIDR | كافة البروتوكولات | كافة المنافذ | مطلوب لتمكين الاتصال بين العقد. |
| عقدة CIDR | جراب CIDR | كافة البروتوكولات | كافة المنافذ | مطلوب لتوجيه نسبة استخدام الشبكة للخدمة. |
| جراب CIDR | جراب CIDR | كافة البروتوكولات | كافة المنافذ | مطلوب لنسبة استخدام الشبكة من Pod إلى Pod وPod to Service، بما في ذلك DNS. |
إنشاء هوية مدارة ومنحها أذونات على الشبكة الظاهرية
إنشاء هوية مدارة az identity create باستخدام الأمر واسترداد المعرف الأساسي. تعيين دور مساهم الشبكة على الشبكة الظاهرية إلى الهوية المدارة az role assignment create باستخدام الأمر .
az identity create \
--resource-group ${RG_NAME} \
--name ${IDENTITY_NAME} \
--location ${LOCATION}
IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group ${RG_NAME} --name ${IDENTITY_NAME} --query principalId -o tsv)
az role assignment create \
--scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}" \
--role "Network Contributor" \
--assignee-object-id "${IDENTITY_PRINCIPAL_ID}" \
--assignee-principal-type ServicePrincipal
إنشاء نظام مجموعة AKS تلقائي خاص في شبكة ظاهرية مخصصة
لإنشاء نظام مجموعة AKS تلقائي خاص، استخدم الأمر az aks create . لاحظ استخدام العلامة --enable-private-cluster .
إشعار
يمكنك الرجوع إلى وثائق العنقود الخاصة لتكوين خيارات أخرى مثل تعطيل FQDN العام في العنقود وتكوين منطقة DNS الخاصة.
az aks create \
--resource-group ${RG_NAME} \
--name ${CLUSTER_NAME} \
--location ${LOCATION} \
--apiserver-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/apiServerSubnet" \
--node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/userNodeSubnet" \
--system-node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/managedSystemNodeSubnet"
--assign-identity "/subscriptions/${SUBSCRIPTION_ID}/resourcegroups/${RG_NAME}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${IDENTITY_NAME}" \
--sku automatic \
--enable-private-cluster \
--no-ssh-key
بعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة.
الاتصال بنظام المجموعة
عند إنشاء مجموعة AKS تلقائية كمجموعة خاصة، لا تحتوي نقطة نهاية خادم API على عنوان IP عام. لإدارة خادم API، على سبيل المثال عبر kubectl، تحتاج إلى الاتصال عبر جهاز لديه وصول إلى الشبكة الافتراضية Azure للعنقود. هناك العديد من الخيارات لإنشاء اتصال الشبكة إلى نظام المجموعة الخاص:
- إنشاء جهاز ظاهري في نفس الشبكة الظاهرية مثل نظام المجموعة التلقائي AKS باستخدام
az vm createالأمر مع العلامة--vnet-name. - استخدم جهازا ظاهريا في شبكة ظاهرية منفصلة وقم بإعداد نظير الشبكة الظاهرية.
- استخدم اتصال Express مسار أو VPN.
- استخدم اتصال نقطة نهاية خاصة.
يعد إنشاء جهاز ظاهري في نفس الشبكة الظاهرية مثل نظام مجموعة AKS هو الخيار الأسهل. ExpressRoute وVPNs يضيفان تكاليف ويتطلب تعقيد شبكي آخر. يتطلب منك التناظر الشبكي الظاهري التخطيط لنطاقات CIDR للشبكة للتأكد من عدم وجود نطاقات متداخلة. لمزيد من المعلومات، راجع خيارات الاتصال بالمجموعة الخاصة.
لإدارة نظام مجموعة Kubernetes، استخدم سطر أوامر العميلkubectl.
kubectl مثبت بالفعل إذا كنت تستخدم Azure Cloud Shell. لتثبيت kubectl محليا، قم بتشغيل الأمر az aks install-cli. يتم تكوين مجموعات AKS التلقائية باستخدام Microsoft Entra ID لتحكم الوصول القائم على الأدوار (RBAC) في Kubernetes.
عندما تنشئ عنقودا باستخدام Azure CLI، يتم تعيين المستخدم roles المدمجة ل Azure Kubernetes Service RBAC Cluster Admin.
قم بتكوين kubectl للاتصال بكتلة Kubernetes مستخدماً الأمر az aks get-credentials. هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها.
az aks get-credentials --resource-group ${RG_NAME} --name ${CLUSTER_NAME}
تحقق من الاتصال بنظام مجموعتك مستخدماً أمرkubectl get. يعمل هذا الأمر على استرجاع قائمة نظام المجموعة العنقودية.
kubectl get nodes
العينة التالية توضح كيف يطلب منك تسجيل الدخول.
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
بعد تسجيل الدخول، تظهر عينة المخرج التالية تجمعات عقد النظام المدارة. تأكد من أن حالة العقدة جاهزة.
NAME STATUS ROLES AGE VERSION
aks-hostedpool-16652789-vms1 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms2 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms3 Ready <none> 19m v1.34.7
aks-system-surge-zq4d2 Ready <none> 19m v1.34.7
إنشاء شبكة ظاهرية
يعرف ملف Bicep هذا الشبكة الافتراضية.
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'
@description('The address prefix of the virtual network.')
param addressPrefix string = '172.19.0.0/16'
@description('The name of the API server subnet.')
param apiServerSubnetName string = 'apiServerSubnet'
@description('The subnet prefix of the API server subnet.')
param apiServerSubnetPrefix string = '172.19.0.0/28'
@description('The name of the user node subnet.')
param userNodeSubnetName string = 'userNodeSubnet'
@description('The subnet prefix of the user node subnet.')
param userNodeSubnetPrefix string = '172.19.1.0/24'
@description('The name of the system node subnet.')
param systemNodeSubnetName string = 'systemNodeSubnet'
@description('The subnet prefix of the system node subnet.')
param systemNodeSubnetPrefix string = '172.19.0.64/26'
// Virtual network with an API server subnet, a user node subnet, and a system node subnet
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [ addressPrefix ]
}
subnets: [
{
name: apiServerSubnetName
properties: {
addressPrefix: apiServerSubnetPrefix
}
}
{
name: userNodeSubnetName
properties: {
addressPrefix: userNodeSubnetPrefix
}
}
{
name: systemNodeSubnetName
properties: {
addressPrefix: systemNodeSubnetPrefix
}
}
]
}
}
output apiServerSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, apiServerSubnetName)
output userNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, userNodeSubnetName)
output systemNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, systemNodeSubnetName)
حفظ ملف Bicep virtualNetwork.bicep إلى جهاز الكمبيوتر المحلي الخاص بك.
هام
يحدد ملف Bicep البارام vnetName إلى aksAutomaticVnet، والملف addressPrefix إلى 172.19.0.0/16، والبارام apiServerSubnetPrefix إلى 172.19.0.0/28، والبارام apiServerSubnetPrefix إلى 172.19.1.0/24. إذا كنت تريد استخدام قيم مختلفة، فتأكد من تحديث السلاسل إلى القيم المفضلة لديك.
نشر ملف Bicep باستخدام Azure CLI.
az deployment group create --resource-group <resource-group> --template-file virtualNetwork.bicep
يسمح بكافة نسبة استخدام الشبكة داخل الشبكة الظاهرية بشكل افتراضي. ولكن إذا أضفت قواعد مجموعة أمان الشبكة (NSG) لتقييد حركة المرور بين الشبكات الفرعية المختلفة، فتأكد من أن قواعد أمان NSG تسمح بأنواع الاتصال التالية:
| الوجهة | المصدر | بروتوكول | ميناء | استخدام |
|---|---|---|---|---|
| شبكة APIServer الفرعية CIDR | شبكة عقدة المستخدم الفرعية وشبكة عقدة النظام | TCP | 443 و4443 | مطلوب لتمكين الاتصال بين العقد وخادم API. |
| شبكة APIServer الفرعية CIDR | موازن تحميل Azure | TCP | 9988 | مطلوب لتمكين التواصل بين موازن تحميل Azure وخادم API. يمكنك أيضا تفعيل جميع الاتصالات بين موازن تحميل Azure وخادم Subnet الخاص ب API CIDR. |
| عقدة CIDR | عقدة CIDR | كافة البروتوكولات | كافة المنافذ | مطلوب لتمكين الاتصال بين العقد. |
| عقدة CIDR | جراب CIDR | كافة البروتوكولات | كافة المنافذ | مطلوب لتوجيه نسبة استخدام الشبكة للخدمة. |
| جراب CIDR | جراب CIDR | كافة البروتوكولات | كافة المنافذ | مطلوب لنسبة استخدام الشبكة من Pod إلى Pod وPod to Service، بما في ذلك DNS. |
إنشاء هوية مدارة
يحدد ملف Bicep هذا الهوية المدارة التي تم تعيينها للمستخدم.
param location string = resourceGroup().location
param uamiName string = 'aksAutomaticUAMI'
resource userAssignedManagedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: uamiName
location: location
}
output uamiId string = userAssignedManagedIdentity.id
output uamiPrincipalId string = userAssignedManagedIdentity.properties.principalId
output uamiClientId string = userAssignedManagedIdentity.properties.clientId
احفظ ملف Bicep uami.bicep إلى جهاز الكمبيوتر المحلي الخاص بك.
هام
يضبط ملف Bicep البارام uamiName على aksAutomaticUAMI. إذا كنت تريد استخدام اسم هوية مختلف، فتأكد من تحديث السلسلة إلى اسمك المفضل.
نشر ملف Bicep باستخدام Azure CLI.
az deployment group create --resource-group <resource-group> --template-file uami.bicep
تعيين دور مساهم الشبكة عبر الشبكة الظاهرية
يحدد ملف Bicep هذا التعيين للأدوار عبر الشبكة الافتراضية.
@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'
@description('The principal ID of the user assigned managed identity.')
param uamiPrincipalId string
// Get a reference to the virtual network
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' existing ={
name: vnetName
}
// Assign the Network Contributor role to the user assigned managed identity on the virtual network
// '4d97b98b-1d4f-4787-a291-c67834d212e7' is the built-in Network Contributor role definition
// See: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/networking#network-contributor
resource networkContributorRoleAssignmentToVirtualNetwork 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(uamiPrincipalId, '4d97b98b-1d4f-4787-a291-c67834d212e7', resourceGroup().id, virtualNetwork.name)
scope: virtualNetwork
properties: {
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')
principalId: uamiPrincipalId
}
}
احفظ ملف Bicep roleAssignments.bicep إلى جهاز الكمبيوتر المحلي الخاص بك.
هام
يضبط ملف Bicep المباراة vnetName إلى aksAutomaticVnet. إذا استخدمت اسم شبكة ظاهرية مختلفا، فتأكد من تحديث السلسلة إلى اسم الشبكة الظاهرية المفضل لديك.
نشر ملف Bicep باستخدام Azure CLI. تحتاج إلى توفير معرف الهوية الأساسي المعين من قبل المستخدم.
az deployment group create --resource-group <resource-group> --template-file roleAssignments.bicep \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>
إنشاء نظام مجموعة AKS تلقائي خاص في شبكة ظاهرية مخصصة
يحدد ملف Bicep هذا العنقود التلقائي AKS.
إشعار
يمكنك الرجوع إلى وثائق العنقود الخاصة لتكوين خيارات أخرى مثل تعطيل FQDN العام للعناقيد وتكوين منطقة DNS الخاصة.
@description('The name of the managed cluster resource.')
param clusterName string = 'aksPrivateAutomaticCluster'
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
@description('The resource ID of the API server subnet.')
param apiServerSubnetId string
@description('The resource ID of the user node subnet.')
param userNodeSubnetId string
@description('The resource ID of the system node subnet.')
param systemNodeSubnetId string
@description('The resource ID of the user assigned managed identity.')
param uamiId string
/// Create the private AKS Automatic cluster using the custom virtual network and user assigned managed identity
resource aks 'Microsoft.ContainerService/managedClusters@2024-03-02-preview' = {
name: clusterName
location: location
sku: {
name: 'Automatic'
}
properties: {
apiServerAccessProfile: {
subnetId: apiServerSubnetId
enablePrivateCluster: true
}
networkProfile: {
outboundType: 'loadBalancer'
}
hostedSystemProfile: {
systemNodeSubnetID: systemNodeSubnetId
nodeSubnetID: userNodeSubnetId
}
}
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${uamiId}': {}
}
}
}
حفظ ملف Bicep aks.bicep إلى جهاز الكمبيوتر المحلي الخاص بك.
هام
الملف Bicep يضبط المباراة clusterName إلى aksPrivateAutomaticCluster. إذا كنت تريد اسم نظام مجموعة مختلف، فتأكد من تحديث السلسلة إلى اسم نظام المجموعة المفضل لديك.
نشر ملف Bicep باستخدام Azure CLI. تحتاج إلى توفير معرف مورد الشبكة الفرعية لخادم API، معرف مورد شبكة المستخدم الفرعية، معرف مورد شبكة الشبكة الفرعية للنظام، ومعرف مورد الهوية المدارة المعين للمستخدم.
az deployment group create --resource-group <resource-group> --template-file aks.bicep \
--parameters apiServerSubnetId=<API server subnet resource id> \
--parameters nodeSubnetId=<user node subnet resource id> \
--parameters systemNodeSubnetId=<system node subnet resource id> \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>
الاتصال بنظام المجموعة
عند إنشاء مجموعة AKS تلقائية كمجموعة خاصة، لا تحتوي نقطة نهاية خادم API على عنوان IP عام. لإدارة خادم API، على سبيل المثال عبر kubectl، تحتاج إلى الاتصال عبر جهاز لديه وصول إلى الشبكة الافتراضية Azure للعنقود. هناك العديد من الخيارات لإنشاء اتصال الشبكة إلى نظام المجموعة الخاص:
- إنشاء جهاز ظاهري في نفس الشبكة الظاهرية مثل نظام المجموعة التلقائي AKS باستخدام
az vm createالأمر مع العلامة--vnet-name. - استخدم جهازا ظاهريا في شبكة ظاهرية منفصلة وقم بإعداد نظير الشبكة الظاهرية.
- استخدم اتصال Express مسار أو VPN.
- استخدم اتصال نقطة نهاية خاصة.
يعد إنشاء جهاز ظاهري في نفس الشبكة الظاهرية مثل نظام مجموعة AKS هو الخيار الأسهل. Express Route وVPN يضيفان تكاليف ويتطلب تعقيد شبكي أكبر. يتطلب منك التناظر الشبكي الظاهري التخطيط لنطاقات CIDR للشبكة للتأكد من عدم وجود نطاقات متداخلة. لمزيد من المعلومات، راجع خيارات الاتصال بالمجموعة الخاصة.
لإدارة نظام مجموعة Kubernetes، استخدم سطر أوامر العميلkubectl.
kubectl مثبت بالفعل إذا كنت تستخدم Azure Cloud Shell. لتثبيت kubectl محليا، قم بتشغيل الأمر az aks install-cli. يتم تكوين مجموعات AKS التلقائية باستخدام Microsoft Entra ID لتحكم الوصول القائم على الأدوار (RBAC) في Kubernetes.
هام
عندما تنشئ عنقودا باستخدام Bicep، تحتاج إلى تعيين أحد الأدوار المدمجة مثل Azure Kubernetes Service RBAC Reader، Azure Kubernetes Service RBAC Writer، Azure Kubernetes Service RBAC Admin، أو Azure Kubernetes Service RBAC Cluster Admin للمستخدمين لديك، مع تحديد النطاق إلى العنقود أو مساحة أسماء محددة، مثل استخدام az role assignment create --role "Azure Kubernetes Service RBAC Cluster Admin" --scope <AKS cluster resource id> --assignee user@contoso.com. تأكد أيضا من أن المستخدمين لديهم دور Azure Kubernetes Service Cluster User المدمج لتشغيل az aks get-credentials، ثم الحصول على kubeconfig لمجموعة AKS باستخدام أمر az aks get-credentials.
قم بتكوين kubectl للاتصال بكتلة Kubernetes مستخدماً الأمر az aks get-credentials. هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها.
az aks get-credentials --resource-group <resource-group> --name <cluster-name>
تحقق من الاتصال بنظام مجموعتك مستخدماً أمرkubectl get. يعمل هذا الأمر على استرجاع قائمة نظام المجموعة العنقودية.
kubectl get nodes
العينة التالية توضح كيف يطلب منك تسجيل الدخول.
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
بعد تسجيل الدخول، تظهر عينة المخرج التالية تجمعات عقد النظام المدارة. تأكد من أن حالة العقدة جاهزة.
NAME STATUS ROLES AGE VERSION
aks-hostedpool-16652789-vms1 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms2 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms3 Ready <none> 19m v1.34.7
aks-system-surge-zq4d2 Ready <none> 19m v1.34.7
نشر التطبيق
لنشر التطبيق، تستخدم ملف البيان لإنشاء جميع الكائنات المطلوبة لتشغيل تطبيق AKS Store. يحدد ملف بيانات Kubernetesالحالة المطلوبة لنظام المجموعة، مثل صور الحاوية المراد تشغيلها. يتضمن البيان عمليات نشر وخدمات Kubernetes التالية:
- واجهة المتجر: تطبيق ويب للعملاء لعرض المنتجات وتقديم الطلبات.
- خدمة المنتج: تعرض معلومات المنتج.
- خدمة الطلب: يضع الطلبات.
- Rabbit MQ: قائمة انتظار الرسائل لقائمة انتظار الطلبات.
إشعار
لا نوصي بتشغيل حاويات ذات حالة، مثل Rabbit MQ، دون تخزين مستمر للإنتاج. تستخدم هذه الحاويات هنا للبساطة، لكننا نوصي باستخدام خدمات مدارة، مثل Azure Cosmos DB أو ناقل خدمة Azure.
إنشاء مساحة اسم
aks-store-demoلنشر موارد Kubernetes فيها.kubectl create ns aks-store-demoانشر التطبيق باستخدام الأمر kubectl apply في مساحة الاسم
aks-store-demo. ملف YAML الذي يحدد النشر موجود على GitHub.kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yamlيظهر إخراج العينة التالي عمليات التوزيع والخدمات:
statefulset.apps/rabbitmq created configmap/rabbitmq-enabled-plugins created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created ingress/store-front created
اختبر التطبيق
عند تشغيل التطبيق، تعرض خدمة Kubernetes واجهة التطبيق الأمامية للإنترنت. قد تستغرق هذه العملية بضع دقائق حتى تكتمل.
تحقق من حالة pods المنشورة باستخدام الأمر kubectl get pods . تأكد من أن جميع القرون
Runningقبل المتابعة. إذا كان هذا هو أول عبء عمل تقوم بنشره، فقد يستغرق الأمر بضع دقائق حتى يقوم العقد التلقائي بإنشاء مجموعة عقد لتشغيل البودات.kubectl get pods -n aks-store-demoتحقق من وجود عنوان IP عام لتطبيق المتجر الأمامي. راقب سير العملية باستخدام أمر kubectl get serviceمع
--watchوسيطة.kubectl get ingress store-front -n aks-store-demo --watchيظهر إخراج ADDRESS لخدمة
store-frontفارغا في البداية:NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 80 12mبمجرد تغيير عنوان من فارغ إلى عنوان IP عام فعلي، استخدم
CTRL-Cلإيقاف عملية المراقبةkubectl.يظهر إخراج العينة التالي عنوان IP عاما صالحا تم تعيينه للخدمة:
NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 4.255.22.196 80 12mافتح متصفح ويب لعنوان IP الخارجي الخاص بجهازك لرؤية تطبيق Azure Store أثناء العمل.
قم بحذف نظام المجموعة
إذا لم تكن تخطط لمراجعة <درس c0>AKS، قم بتنظيف الموارد غير الضرورية لتجنب Azure التهم. قم بتشغيل الأمر az group delete لإزالة مجموعة الموارد وخدمة الحاوية وجميع الموارد ذات الصلة.
az group delete --name <resource-group> --yes --no-wait
إشعار
تم إنشاء نظام مجموعة AKS بهوية مدارة يعينها المستخدم. إذا لم تعد بحاجة إلى هذه الهوية، يمكنك إزالتها يدويا.
الخطوات التالية
في هذا التشغيل السريع، قمت بنشر مجموعة Kubernetes خاصة باستخدام AKS Automatic داخل شبكة ظاهرية مخصصة ثم نشرت تطبيقا بسيطا متعدد الحاويات إليه. هذا التطبيق النموذجي هو لأغراض العرض التوضيحي فقط ولا يمثل جميع أفضل الممارسات لتطبيقات Kubernetes. للحصول على إرشادات حول إنشاء حلول كاملة باستخدام AKS للإنتاج، راجع إرشادات حل AKS.
لمعرفة المزيد حول AKS Automatic، تابع إلى المقدمة.