إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تشرح هذه المقالة كيفية تمكين هوية مدارة معينة من النظام على مجموعة AKS جديدة أو موجودة، والحصول على المعرف الرئيسي للهوية المدارة المعينة من قبل النظام، وإضافة تعيين دور للهوية المدارة المعينة من قبل النظام.
المتطلبات المسبقه
اقرأ نظرة عامة على الهويات المدارة في خدمة كوبيرنيتس (AKS)Azure لفهم أنواع الهويات المدارة المختلفة المتاحة في AKS وكيفية استخدامها للوصول الآمن إلى الموارد Azure.
اضبط اشتراكك كاشتراك نشط حاليا باستخدام
az account setالأمر.az account set --subscription <subscription-id>
مجموعة موارد Azure موجودة. إذا لم يكن لديك واحد، يمكنك إنشاء واحد باستخدام
az group createالأمر.az group create \ --name <resource-group-name> \ --location <location>
- تم تثبيت Azure CLI الإصدار 2.23.0 أو أحدث. قم بتشغيل
az --versionللعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. - لتحديث عنقود موجود لاستخدام هوية مدارة معينة من النظام، تحتاج إلى Azure CLI الإصدار 2.49.0 أو أحدث مثبتا.
- تم تثبيت Terraform محليا. للحصول على تعليمات التثبيت، راجع تثبيت Terraform.
القيود
- بمجرد إنشاء عنقود بهوية مدارة، لا يمكنك العودة لاستخدام مدير الخدمة.
- لا يتم دعم نقل نظام مجموعة مدارة ممكنة للهوية أو ترحيلها إلى مستأجر مختلف.
- إذا كان لدى العنقود هوية مدارة بواسطة الوحدات (
aad-pod-identity) مفعلة Microsoft Entra، تقوم وحدات الهوية (NMI) Node-Managed بتعديل جداول الهوية (NMI) للعقد لاعتراض المكالمات إلى نقطة نهاية بيانات النسخة الوصفية (IMDS) Azure. يعني هذا التكوين أن أي طلب يتم إجراؤه على نقطة نهاية IMDS يتم اعتراضه بواسطة NMI، حتى إذا لم يستخدمaad-pod-identityجراب معين .- يمكنك تكوين تعريف المورد المخصص ل AzurePodIdentityException (CRD) لتحديد أن الطلبات إلى نقطة نهاية IMDS التي تنشأ من تسميات مطابقة البودات المحددة في CRD يجب أن تكون بروكسي دون أي معالجة في NMI. استبعاد pods النظام مع التسمية
kubernetes.azure.com/managedby: aksفي مساحة اسم نظام kube عنaad-pod-identityطريق تكوين CRD AzurePodIdentityException. لمزيد من المعلومات، انظر Use Microsoft Entra pod-managed identities in Azure Kubernetes Service (AKS). - لتكوين استثناء، قم بتثبيت YAML استثناء ميكروفون.
- يمكنك تكوين تعريف المورد المخصص ل AzurePodIdentityException (CRD) لتحديد أن الطلبات إلى نقطة نهاية IMDS التي تنشأ من تسميات مطابقة البودات المحددة في CRD يجب أن تكون بروكسي دون أي معالجة في NMI. استبعاد pods النظام مع التسمية
- لا تدعم AKS استخدام هوية مدارة معينة من قبل النظام عند استخدام منطقة DNS خاصة مخصصة.
اعتبارات تحديث العنقود
عند تحديث تجمع، ضع في اعتبارك المعلومات التالية:
- يعمل التحديث فقط إذا كان هناك تحديث VHD للاستهلاك. إذا كنت تقوم بتشغيل أحدث VHD، فستحتاج إلى الانتظار حتى يتوفر VHD التالي من أجل إجراء التحديث.
- يضمن واجهة Azure CLI ضبط صلاحيات الإضافة بشكل صحيح بعد الترحيل. إذا لم تكن تستخدم واجهة زر Azure لتنفيذ عملية الترحيل، عليك التعامل مع إذن هوية الإضافة بنفسك. على سبيل المثال باستخدام قالب Azure Resource Manager (ARM)، انظر تعيين أدوار Azure باستخدام قوالب ARM.
- إذا كان عنقودك يستخدم
--attach-acrلسحب الصور من Azure Container Registry (ACR)، تحتاج إلى تشغيل أمرaz aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>بعد تحديث العنقود للسماح للكوبليت الجديد المستخدم للهوية المدارة بالحصول على إذن السحب من ACR. وإلا، فلن تتمكن من السحب من ACR بعد التحديث.
تمكين هوية مدارة معينة من قبل النظام على نظام مجموعة AKS جديد
يتم تمكين هوية مدارة معينة من قبل النظام بشكل افتراضي عند إنشاء نظام مجموعة AKS جديد.
إنشاء نظام مجموعة AKS باستخدام الأمر az aks create.
az aks create \
--resource-group <resource-group-name> \
--name <aks-cluster-name> \
--generate-ssh-keys
تحديث مجموعة موجودة لاستخدام هوية مدارة معينة من النظام
قم بتحديث نظام مجموعة AKS موجود من كيان خدمة إلى هوية مدارة معينة من قبل النظام باستخدام az aks update الأمر الذي يحتوي على المعلمة --enable-managed-identity .
az aks update \
--resource-group <resource-group-name> \
--name <aks-cluster-name> \
--enable-managed-identity
بعد تحديث العنقود ليستخدم هوية مدارة معينة من النظام بدلا من مبدأ الخدمة، تستخدم طائرة التحكم والوحدات الهوية المدارة المعينة من النظام للتفويض عند الوصول إلى خدمات أخرى في Azure. يستمر Kubelet في استخدام كيان الخدمة حتى تقوم أيضا بترقية تجمع الوكلاء الخاص بك. يمكنك استخدام الأمر على az aks nodepool upgrade --resource-group <resource-group-name> --cluster-name <aks-cluster-name> --name <node-pool-name> --node-image-only العقد للتحديث إلى هوية مدارة. تتسبب ترقية تجمع العقدة في تعطل نظام مجموعة AKS الخاص بك حيث يتم تطويق العقد في تجمعات العقد واستنزافها وإعادة تصويرها.
الحصول على المعرف الأساسي لهوية مدارة معينة من قبل النظام
احصل على المعرف الأساسي للهوية المدارة المعينة من قبل النظام باستخدام az aks show الأمر.
CLIENT_ID=$(az aks show \
--name <aks-cluster-name> \
--resource-group <resource-group-name> \
--query identity.principalId \
--output tsv)
إضافة تعيين دور لهوية مدارة يعينها النظام
ملحوظة
بالنسبة لشبكة افتراضية (VNet)، أو قرص Azure مرفق، أو عنوان IP ثابت، أو جدول توجيه خارج مجموعة موارد عقدة العمال الافتراضية، تحتاج إلى تعيين الدور Network Contributor في مجموعة الموارد المخصصة.
تعيين دور Azure RBAC للهوية المدارة المعينة من قبل النظام باستخدام أمر az role assignment create. يعين المثال التالي دور مساهم الشبكة للهوية المدارة المعينة من قبل النظام. يتم تحديد نطاق تعيين الدور إلى مجموعة الموارد التي تحتوي على الشبكة الظاهرية.
az role assignment create \
--assignee <client-id> \
--role "Network Contributor" \
--scope <custom-resource-group-id>
ملحوظة
قد يستغرق نشر الأذونات الممنوحة للهوية المدارة لنظام المجموعة الخاصة بك ما يصل إلى 60 دقيقة.
إنشاء ملف تكوين Terraform
ملفات تكوين تيرافورم تحدد البنية التحتية التي ينشئها ويديرها تيرافورم.
أنشئ ملفا مسمى
main.tfوأضف الكود التالي لتعريف نسخة Terraform وتحديد مزود Azure:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }أضف الكود التالي إلى
main.tfلإنشاء مجموعة موارد Azure. لا تتردد في تغيير اسم وموقع مجموعة الموارد حسب الحاجة.resource "azurerm_resource_group" "example" { name = "aks-rg" location = "East US" }
إنشاء عنقود AKS بهوية مدارة مخصصة للنظام باستخدام Terraform
أضف الكود التالي لإنشاء main.tf عنقود AKS بهوية مدارة معينة من النظام:
resource "azurerm_kubernetes_cluster" "system_assigned" {
name = "aks-system"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "akssystem"
identity {
type = "SystemAssigned"
}
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
}
}
إضافة تعيين دور لهوية مدارة معينة من النظام باستخدام Terraform
أضف الكود التالي إلى main.tf لإنشاء تعيين دور للهوية المدارة المعينة من قبل النظام. هذا المثال يخصص دور المساهم في الشبكة إلى الهوية المدارة المعينة من قبل النظام. يتم تحديد نطاق تعيين الدور إلى مجموعة الموارد التي تحتوي على الشبكة الظاهرية.
resource "azurerm_role_assignment" "system_assigned_network_contributor" {
scope = azurerm_resource_group.example.id
role_definition_name = "Network Contributor"
principal_id = azurerm_kubernetes_cluster.system_assigned.identity[0].principal_id
}
تهيئة Terraform
قم بتهيئة Terraform في الدليل الذي يحتوي على ملفك main.tf باستخدام الأمر.terraform init يقوم هذا الأمر بتنزيل مزود Azure المطلوب لإدارة موارد Azure باستخدام Terraform.
terraform init
إنشاء خطة تنفيذ Terraform
إنشاء خطة تنفيذ Terraform باستخدام terraform plan الأمر . هذا الأمر يوضح لك الموارد التي سيقوم Terraform بإنشائها أو تعديلها في اشتراكك في Azure.
terraform plan
تطبيق تكوين Terraform
بعد مراجعة وتأكيد خطة التنفيذ، طبق تكوين Terraform باستخدام terraform apply الأمر. يقوم هذا الأمر بإنشاء أو تعديل الموارد المعرفة في ملفك main.tf ضمن اشتراك Azure الخاص بك.
terraform apply
تحقق من نشر Terraform
بعد تطبيق تكوين Terraform، يمكنك التحقق من النشر باستخدام az aks show الأمر مع --query المعامل لتصفية المخرجات وعرض معلومات الهوية. على سبيل المثال:
az aks show \
--name <cluster-name> \
--resource-group <resource-group> \
--query identity.type \
--output tsv
المحتوى ذو الصلة
لمعرفة المزيد عن الهويات المدارة في AKS، راجع المقالات التالية: