استخدام هوية مدارة في خدمة Azure Kubernetes (AKS)

تتطلب مجموعات Azure Kubernetes Service (AKS) هوية Microsoft Entra للوصول إلى موارد Azure مثل موازنات التحميل والأقراص المدارة. الهويات المدارة لموارد Azure هي الطريقة الموصى بها لتخويل الوصول من مجموعة AKS إلى خدمات Azure الأخرى.

يمكنك استخدام هوية مدارة لتخويل الوصول من مجموعة AKS إلى أي خدمة تدعم تخويل Microsoft Entra، دون الحاجة إلى إدارة بيانات الاعتماد أو تضمينها في التعليمات البرمجية الخاصة بك. تقوم بتعيين دور التحكم في الوصول المستند إلى دور Azure (Azure RBAC) إلى الهوية المدارة لمنحه أذونات لمورد معين في Azure. على سبيل المثال، يمكنك منح أذونات لهوية مدارة للوصول إلى الأسرار في مخزن مفاتيح Azure للاستخدام من قبل نظام المجموعة. لمزيد من المعلومات عن RBAC، راجع ما هو التحكم في الوصول استنادًا إلى الدور في Azure (Azure RBAC)؟.

توضح هذه المقالة كيفية تمكين الأنواع التالية من الهوية المدارة على نظام مجموعة AKS جديد أو موجود:

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

لمعرفة المزيد حول الهويات المدارة، راجع الهويات المدارة لموارد Azure.

نظرة عامة

يستخدم نظام مجموعة AKS هوية مدارة لطلب الرموز المميزة من Microsoft Entra. يتم استخدام هذه الرموز المميزة لتخويل الوصول إلى الموارد الأخرى التي تعمل في Azure. يمكنك تعيين دور Azure RBAC إلى هوية مدارة لمنح أذونات نظام المجموعة للوصول إلى موارد معينة. على سبيل المثال، إذا كان نظام المجموعة الخاص بك يحتاج إلى الوصول إلى الأسرار في مخزن مفاتيح Azure، يمكنك تعيين دور Azure RBAC الذي يمنح هذه الأذونات إلى الهوية المدارة للمجموعة.

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

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

عند نشر نظام مجموعة AKS، يتم إنشاء هوية مدارة معينة من قبل النظام لك بشكل افتراضي. يمكنك أيضا إنشاء نظام المجموعة بهوية مدارة معينة من قبل المستخدم.

من الممكن أيضا إنشاء نظام مجموعة مع كيان خدمة تطبيق بدلا من ذلك هوية مدارة. يوصى بالهويات المدارة عبر كيانات الخدمة للأمان وسهولة الاستخدام. لمزيد من المعلومات حول إنشاء نظام مجموعة مع كيان خدمة، راجع استخدام كيان خدمة مع خدمة Azure Kubernetes (AKS).

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

تختلف أنواع الهوية المعينة من قبل النظام والمخصصة للمستخدم عن هوية حمل عمل Microsoft Entra، والمخصصة للاستخدام من قبل تطبيق يعمل على جراب.

قبل البدء

  • تأكد من تثبيت الإصدار 2.23.0 من Azure CLI أو إصدار أحدث. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

  • لاستخدام هوية مدارة من kubelet تم إنشاؤها مسبقا، تحتاج إلى تثبيت الإصدار 2.26.0 من Azure CLI أو أحدث.

  • لتحديث نظام مجموعة موجود لاستخدام هوية مدارة معينة من قبل النظام أو هوية مدارة معينة من قبل المستخدم، تحتاج إلى تثبيت الإصدار 2.49.0 من Azure CLI أو أحدث.

قبل تشغيل الأمثلة في هذه المقالة، قم بتعيين اشتراكك كاشتراك نشط حالي عن طريق استدعاء الأمر az account set وتمرير معرف الاشتراك الخاص بك.

az account set --subscription <subscription-id>

قم أيضا بإنشاء مجموعة موارد Azure إذا لم يكن لديك واحدة بالفعل عن طريق استدعاء az group create الأمر .

az group create \
    --name myResourceGroup \
    --location westus2

تمكين هوية مُدارة مخصصة من قبل النظام

الهوية المدارة المعينة من قبل النظام هي هوية مقترنة بمجموعة AKS أو مورد Azure آخر. ترتبط الهوية المدارة المعينة من قبل النظام لدورة حياة نظام المجموعة. عند حذف نظام المجموعة، يتم أيضا حذف الهوية المدارة المعينة من قبل النظام.

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

تمكين هوية مدارة معينة من قبل النظام على نظام مجموعة AKS جديد

لتمكين هوية مدارة معينة من قبل النظام على مجموعة جديدة، قم باستدعاء az aks create. يتم تمكين الهوية المدارة المعينة من قبل النظام على نظام المجموعة الجديد بشكل افتراضي.

إنشاء نظام مجموعة AKS باستخدام az aks create الأمر .

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --generate-ssh-keys

للتحقق من تمكين هوية مدارة معينة من قبل النظام لنظام المجموعة بعد إنشائها، راجع تحديد نوع الهوية المدارة التي تستخدمها المجموعة.

تحديث نظام مجموعة AKS موجود لاستخدام هوية مدارة معينة من قبل النظام

لتحديث نظام مجموعة AKS موجود يستخدم كيان خدمة لاستخدام هوية مدارة معينة من قبل النظام بدلا من ذلك، قم بتشغيل az aks update الأمر باستخدام المعلمة --enable-managed-identity .

az aks update \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --enable-managed-identity

بعد تحديث نظام المجموعة لاستخدام هوية مدارة معينة من قبل النظام بدلا من كيان الخدمة، تستخدم وحدة التحكم والقرون الهوية المدارة المعينة من قبل النظام للتخويل عند الوصول إلى خدمات أخرى في Azure. يستمر Kubelet في استخدام كيان الخدمة حتى تقوم أيضا بترقية عاملك. يمكنك استخدام الأمر على az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only العقد للتحديث إلى هوية مدارة. تؤدي ترقية تجمع العقدة إلى توقف نظام مجموعة AKS حيث يتم تطويق العقد في تجمعات العقد واستنزافها وإعادة تصويرها.

إشعار

ضع المعلومات التالية في الاعتبار عند تحديث نظام المجموعة:

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

  • يضمن Azure CLI تعيين إذن الملحق بشكل صحيح بعد الترحيل. إذا كنت لا تستخدم Azure CLI لتنفيذ عملية الترحيل، فأنت بحاجة إلى معالجة إذن هوية الملحق بنفسك. للحصول على مثال باستخدام قالب Azure Resource Manager (ARM)، راجع تعيين أدوار Azure باستخدام قوالب ARM.

  • إذا كان نظام المجموعة الخاص بك يستخدم --attach-acr للسحب من الصور من Azure Container Registry (ACR)، فستحتاج إلى تشغيل az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR resource ID> الأمر بعد تحديث نظام المجموعة الخاص بك للسماح ل kubelet الذي تم إنشاؤه حديثا والمستخدم للهوية المدارة بالحصول على إذن السحب من ACR. وإلا، فلن تتمكن من السحب من ACR بعد التحديث.

إضافة تعيين دور لهوية مدارة يعينها النظام

يمكنك تعيين دور Azure RBAC إلى الهوية المدارة المعينة من قبل النظام لمنح أذونات نظام المجموعة على مورد Azure آخر. يدعم Azure RBAC تعريفات الأدوار المضمنة والمخصصة التي تحدد مستويات الأذونات. لمزيد من المعلومات حول تعيين أدوار Azure RBAC، راجع خطوات تعيين دور Azure.

عند تعيين دور Azure RBAC إلى هوية مدارة، يجب تحديد نطاق الدور. بشكل عام، من أفضل الممارسات قصر نطاق الدور على الحد الأدنى من الامتيازات التي تتطلبها الهوية المدارة. لمزيد من المعلومات حول تحديد نطاق أدوار Azure RBAC، راجع فهم نطاق Azure RBAC.

عند إنشاء واستخدام VNet الخاص بك، أو أقراص Azure المرفقة، أو عنوان IP الثابت، أو جدول التوجيه، أو هوية kubelet المعينة من قبل المستخدم حيث تكون الموارد خارج مجموعة موارد العقدة العاملة، يضيف Azure CLI تعيين الدور تلقائيا. إذا كنت تستخدم قالب ARM أو أسلوبا آخر، فاستخدم المعرف الأساسي للهوية المدارة لتنفيذ تعيين دور.

إذا كنت لا تستخدم Azure CLI، ولكنك تستخدم VNet الخاص بك، أو أقراص Azure المرفقة، أو عنوان IP الثابت، أو جدول التوجيه، أو هوية kubelet المعينة من قبل المستخدم خارج مجموعة موارد العقدة العاملة، نوصي باستخدام هوية مدارة يعينها المستخدم لمستوى التحكم. عندما تستخدم وحدة التحكم هوية مدارة معينة من قبل النظام، يتم إنشاء الهوية في نفس وقت نظام المجموعة، لذلك لا يمكن تنفيذ تعيين الدور حتى يتم إنشاء نظام المجموعة.

الحصول على المعرف الأساسي للهوية المدارة المعينة من قبل النظام

لتعيين دور Azure RBAC إلى الهوية المدارة المعينة من قبل نظام المجموعة، تحتاج أولا إلى المعرف الأساسي للهوية المدارة. احصل على المعرف الأساسي للهوية المدارة المعينة من قبل نظام المجموعة عن طريق استدعاء az aks show الأمر .

# Get the principal ID for a system-assigned managed identity.
CLIENT_ID=$(az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query identity.principalId \
    --output tsv)

تعيين دور Azure RBAC إلى الهوية المدارة المعينة من قبل النظام

لمنح أذونات هوية مدارة معينة من قبل النظام إلى مورد في Azure، استدع az role assignment create الأمر لتعيين دور Azure RBAC للهوية المدارة.

بالنسبة إلى VNet أو قرص Azure المرفق أو عنوان IP ثابت أو جدول التوجيه خارج مجموعة موارد عقدة العامل الافتراضية، تحتاج إلى تعيين Contributor الدور على مجموعة الموارد المخصصة.

على سبيل المثال، قم بتعيين الدور على Contributor مجموعة الموارد المخصصة باستخدام az role assignment create الأمر . بالنسبة للمعلمة --scope ، قم بتوفير معرف المورد لمجموعة الموارد لنظام المجموعة.

az role assignment create \
    --assignee $CLIENT_ID \
    --role "Contributor" \
    --scope "<resource-group-id>"

إشعار

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

تمكين هوية مدارة يعينها المستخدم

الهوية المدارة المعينة من قبل المستخدم هي مورد Azure مستقل. عند إنشاء نظام مجموعة بهوية مدارة يعينها المستخدم لمستوى التحكم، يجب أن يكون مورد الهوية المدارة المعين من قبل المستخدم موجودا قبل إنشاء نظام المجموعة. تمكن هذه الميزة سيناريوهات مثل إنشاء نظام المجموعة باستخدام VNet مخصص أو بنوع صادر من التوجيه المعرف من قبل المستخدم (UDR).

إنشاء هوية مُدارة يعينها المستخدم

إذا لم يكن لديك مورد هوية مدار معين من قبل المستخدم، فبادر بإنشاء مورد باستخدام az identity create الأمر .

az identity create \
    --name myIdentity \
    --resource-group myResourceGroup

يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:

{                                  
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity", 
  "location": "westus2",
  "name": "myIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

الحصول على المعرف الأساسي للهوية المدارة المعينة من قبل المستخدم

للحصول على المعرف الأساسي للهوية المدارة المعينة من قبل المستخدم، قم باستدعاء az identity show والاستعلام عن الخاصية principalId :

CLIENT_ID=$(az identity show \
    --name myIdentity \
    --resource-group myResourceGroup \
    --query principalId \
    --output tsv)

الحصول على معرف المورد للهوية المدارة المعينة من قبل المستخدم

لإنشاء نظام مجموعة بهوية مدارة معينة من قبل المستخدم، ستحتاج إلى معرف المورد للهوية المدارة الجديدة. للحصول على معرف المورد للهوية المدارة المعينة من قبل المستخدم، قم باستدعاء az aks show والاستعلام عن الخاصية id :

RESOURCE_ID=$(az identity show \
    --name myIdentity \
    --resource-group myResourceGroup \
    --query id \
    --output tsv)

تعيين دور Azure RBAC إلى الهوية المدارة المعينة من قبل المستخدم

قبل إنشاء نظام المجموعة، أضف تعيين دور للهوية المدارة عن طريق استدعاء az role assignment create الأمر .

يعين المثال التالي دور مستخدم Key Vault Secrets إلى الهوية المدارة المعينة من قبل المستخدم لمنحه أذونات للوصول إلى الأسرار في key vault. يتم تحديد نطاق تعيين الدور لمورد key vault:

az role assignment create \
    --assignee $CLIENT_ID \
    --role "Key Vault Secrets User" \
    --scope "<keyvault-resource-id>"

إشعار

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

إنشاء نظام مجموعة باستخدام الهوية المدارة المعينة من قبل المستخدم

لإنشاء نظام مجموعة AKS مع الهوية المدارة المعينة من قبل المستخدم، قم باستدعاء az aks create الأمر . قم بتضمين المعلمة --assign-identity وتمرير معرف المورد للهوية المدارة المعينة من قبل المستخدم:

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --assign-identity $RESOURCE_ID \
    --generate-ssh-keys

إشعار

لا تدعم مناطق USDOD Central وUSDOD East وUSGov Iowa في سحابة Azure US Government إنشاء نظام مجموعة بهوية مدارة يعينها المستخدم.

تحديث نظام مجموعة موجود لاستخدام هوية مدارة يعينها المستخدم

لتحديث نظام مجموعة موجود لاستخدام هوية مدارة معينة من قبل المستخدم، قم باستدعاء az aks update الأمر . قم بتضمين المعلمة --assign-identity وتمرير معرف المورد للهوية المدارة المعينة من قبل المستخدم:

az aks update \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --enable-managed-identity \
    --assign-identity $RESOURCE_ID

يجب أن يشبه إخراج تحديث نظام المجموعة الناجح لاستخدام هوية مدارة معينة من قبل المستخدم إخراج المثال التالي:

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },

إشعار

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

تحديد نوع الهوية المدارة التي يستخدمها نظام المجموعة

لتحديد نوع الهوية المدارة التي تستخدمها مجموعة AKS الحالية، قم باستدعاء الأمر az aks show والاستعلام عن خاصية نوع الهوية.

az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query identity.type \
    --output tsv       

إذا كان نظام المجموعة يستخدم هوية مدارة، ستكون قيمة خاصية النوع إما SystemAssigned أو UserAssigned.

إذا كان نظام المجموعة يستخدم كيان خدمة، ستكون قيمة خاصية النوع فارغة. ضع في اعتبارك ترقية نظام المجموعة لاستخدام هوية مدارة.

استخدام هوية مدارة kubelet تم إنشاؤها مسبقًا

هوية kubelet التي تم إنشاؤها مسبقا هي هوية مدارة يعينها المستخدم موجودة قبل إنشاء نظام المجموعة. تمكن هذه الميزة سيناريوهات مثل الاتصال ب Azure Container Registry (ACR) أثناء إنشاء نظام المجموعة.

إشعار

تنشئ AKS هوية kubelet المعينة من قبل المستخدم في مجموعة موارد العقدة إذا لم تحدد هوية kubelet المدارة الخاصة بك.

بالنسبة لهوية kubelet المعينة من قبل المستخدم خارج مجموعة موارد عقدة العامل الافتراضية، تحتاج إلى تعيين دور عامل تشغيل الهوية المدارة على هوية kubelet للهوية المدارة لمستوى التحكم.

الهوية المدارة kubelet

إذا لم يكن لديك هوية مدارة kubelet، قم بإنشاء واحدة باستخدام az identity create الأمر .

az identity create \
    --name myKubeletIdentity \
    --resource-group myResourceGroup

يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:

{
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity", 
  "location": "westus2",
  "name": "myKubeletIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

تعيين دور RBAC إلى الهوية المدارة kubelet

تعيين الدور على Managed Identity Operator هوية kubelet باستخدام az role assignment create الأمر . قم بتوفير المعرف الأساسي لهوية kubelet لمتغير $KUBELET_CLIENT_ID.

az role assignment create \
    --assignee $KUBELET_CLIENT_ID \
    --role "Managed Identity Operator" \
    --scope "<kubelet-identity-resource-id>"

إنشاء نظام مجموعة لاستخدام هوية kubelet

الآن يمكنك إنشاء نظام مجموعة AKS الخاص بك مع الهويات الموجودة لديك. تأكد من توفير معرف المورد للهوية المدارة لمستوى التحكم عن طريق تضمين الوسيطة assign-identity والهوية المدارة kubelet باستخدام الوسيطة assign-kubelet-identity .

إنشاء نظام مجموعة AKS مع الهويات الموجودة باستخدام az aks create الأمر .

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --assign-identity <identity-resource-id> \
    --assign-kubelet-identity <kubelet-identity-resource-id> \
    --generate-ssh-keys

يجب أن يؤدي إنشاء مجموعة AKS الناجحة باستخدام هوية مدارة kubelet إلى إخراج مشابهة للآتي:

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },
  "identityProfile": {
    "kubeletidentity": {
      "clientId": "<client-id>",
      "objectId": "<object-id>",
      "resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
    }
  },

تحديث نظام مجموعة موجود لاستخدام هوية kubelet

لتحديث نظام مجموعة موجود لاستخدام الهوية المدارة kubelet، احصل أولا على الهوية المدارة لمستوى التحكم الحالي لمجموعة AKS الخاصة بك.

تحذير

يؤدي تحديث الهوية المدارة kubelet إلى ترقية تجمعات عقد نظام مجموعة AKS، ما يؤدي إلى توقف المجموعة حيث يتم تطويق/استنزاف العقد في تجمعات العقدة وإعادة تصورها.

  1. تأكد من أن نظام مجموعة AKS الخاص بك يستخدم الهوية المدارة المعينة من قبل المستخدم باستخدام az aks show الأمر .

    az aks show \
        --resource-group <RGName> \
        --name <ClusterName> \
        --query "servicePrincipalProfile"
    

    إذا كان نظام المجموعة الخاص بك يستخدم هوية مدارة، يظهر clientId الإخراج بقيمة msi. يظهر نظام المجموعة الذي يستخدم كيان الخدمة معرف كائن. على سبيل المثال:

    # The cluster is using a managed identity.
    {
      "clientId": "msi"
    }
    
  2. بعد تأكيد أن نظام المجموعة الخاص بك يستخدم هوية مدارة، ابحث عن معرف مورد الهوية المدارة az aks show باستخدام الأمر .

    az aks show --resource-group <RGName> \
        --name <ClusterName> \
        --query "identity"
    

    بالنسبة للهوية المدارة المعينة من قبل المستخدم، يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

    {
      "principalId": null,
      "tenantId": null,
      "type": "UserAssigned",
      "userAssignedIdentities": <identity-resource-id>
          "clientId": "<client-id>",
          "principalId": "<principal-id>"
    },
    
  3. تحديث نظام المجموعة الخاص بك مع الهويات الموجودة باستخدام az aks update الأمر . قم بتوفير معرف المورد للهوية المدارة المعينة من قبل المستخدم لمستوى التحكم للوسيطة assign-identity . توفير معرف المورد للهوية المدارة kubelet للوسيطة assign-kubelet-identity .

    az aks update \
        --resource-group myResourceGroup \
        --name myManagedCluster \
        --enable-managed-identity \
        --assign-identity <identity-resource-id> \
        --assign-kubelet-identity <kubelet-identity-resource-id>
    

يجب أن يشبه الإخراج الخاص بك لتحديث نظام المجموعة الناجح باستخدام الهوية المدارة kubelet الخاصة بك إخراج المثال التالي:

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },
  "identityProfile": {
    "kubeletidentity": {
      "clientId": "<client-id>",
      "objectId": "<object-id>",
      "resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
    }
  },

إشعار

إذا كان نظام المجموعة الخاص بك يستخدم --attach-acr للسحب من الصور من Azure Container Registry، فقم بتشغيل az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR Resource ID> الأمر بعد تحديث نظام المجموعة الخاص بك للسماح ل kubelet الذي تم إنشاؤه حديثا والمستخدم للهوية المدارة بالحصول على إذن السحب من ACR. وإلا لن تتمكن من سحب ACR بعد الترقية.

الحصول على خصائص هوية kubelet

للحصول على خصائص هوية kubelet، قم باستدعاء az aks show والاستعلام عن الخاصية identityProfile.kubeletidentity .

az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query "identityProfile.kubeletidentity"

قيود هوية kubelet التي تم إنشاؤها مسبقا

لاحظ القيود التالية لهوية kubelet التي تم إنشاؤها مسبقا:

  • يجب أن تكون هوية kubelet التي تم إنشاؤها مسبقا هوية مدارة يعينها المستخدم.
  • لا يتم دعم منطقتي شرق الصين وشمال الصين في Microsoft Azure التي تديرها 21Vianet.

ملخص الهويات المدارة التي تستخدمها AKS

تستخدم AKS العديد من الهويات المدارة للخدمات المدمجة والإضافات.

الهوية الاسم حالة الاستخدام الأذونات الافتراضية أحضر هويتك الخاصة
وحدة التحكم اسم نظام المجموعة AKS تستخدم بواسطة مكونات وحدة التحكم AKS لإدارة موارد نظام المجموعة بما في ذلك موازنات تحميل الدخول و IPs العامة المدارة بواسطة AKS، وأداة التحجيم التلقائي لنظام المجموعة، وقرص Azure، والملف، وبرامج تشغيل Blob CSI. دور المساهم لمجموعة موارد العقدة مدعوم
Kubelet مجموعة AKS اسم عامل التخزين المؤقت المصادقة باستخدام Azure Container Registry (ACR). N/A (ل kubernetes v1.15+) مدعوم
الوظيفة الإضافية AzureNPM لا توجد هوية مطلوبة. ‏‫غير متوفر‬ لا
الوظيفة الإضافية رصد شبكة AzureCNI لا توجد هوية مطلوبة. ‏‫غير متوفر‬ لا
الوظيفة الإضافية نهج azure- (حارس البوابة) لا توجد هوية مطلوبة. ‏‫غير متوفر‬ لا
الوظيفة الإضافية نهج azure- لا توجد هوية مطلوبة. ‏‫غير متوفر‬ لا
الوظيفة الإضافية Calico لا توجد هوية مطلوبة. ‏‫غير متوفر‬ لا
الوظيفة الإضافية توجيه التطبيق إدارة شهادات Azure DNS وAzure Key Vault دور مستخدم Key Vault Secrets ل Key Vault، ودور المساهم في منطقة DNZ لمناطق DNS، ودور المساهم في منطقة DNS الخاصة لمناطق DNS الخاصة لا
الوظيفة الإضافية HTTPApplicationRouting إدارة موارد الشبكة المطلوبة. دور القارئ لمجموعة موارد العقدة، دور المساهم لمنطقة DNS لا
الوظيفة الإضافية بوابة تطبيق Ingress إدارة موارد الشبكة المطلوبة. دور المساهم لمجموعة موارد العقدة لا
الوظيفة الإضافية omsagent يستخدم لإرسال مقاييس AKS إلى Azure Monitor. دور مراقبة القياسات Publisher لا
الوظيفة الإضافية Virtual-Node (ACIConnector) إدارة موارد الشبكة المطلوبة لمثيلات حاوية Azure (ACI). دور المساهم لمجموعة موارد العقدة لا
الوظيفة الإضافية تحليل التكلفة يستخدم لجمع بيانات تخصيص التكلفة
هوية حمل العمل معرف حمل عمل Microsoft Entra تمكين التطبيقات من الوصول إلى موارد السحابة بأمان باستخدام معرف حمل عمل Microsoft Entra. ‏‫غير متوفر‬ لا

هام

تم إهمال الهوية مصدر مفتوح التي تديرها Microsoft Entra pod (معاينة) في خدمة Azure Kubernetes في 10/24/2022، وأرشفة المشروع في سبتمبر 2023. لمزيد من المعلومات، راجع إشعار الإهمال. تبدأ الوظيفة الإضافية المدارة AKS في الإهمال في سبتمبر 2024.

نوصي بمراجعة هوية حمل عمل Microsoft Entra. تستبدل مصادقة هوية حمل العمل Entra ميزة الهوية المدارة (معاينة) المهملة. إن Entra هوية حمل العمل هو الأسلوب الموصى به لتمكين تطبيق يعمل على جراب لمصادقة نفسه مقابل خدمات Azure الأخرى التي تدعمه.

القيود

  • لا يتم دعم نقل نظام مجموعة مدارة ممكنة للهوية أو ترحيلها إلى مستأجر مختلف.

  • إذا كان نظام المجموعة يحتوي على هوية مدارة بواسطة Microsoft Entra () ممكنةaad-pod-identity، تقوم قرون الهوية المدارة بالعقدة (NMI) بتعديل iptables للعقد لاعتراض المكالمات إلى نقطة نهاية بيانات تعريف مثيل Azure (IMDS). يعني هذا التكوين أن أي طلب يتم إجراؤه على نقطة نهاية IMDS يتم اعتراضه بواسطة NMI، حتى إذا لم يستخدم aad-pod-identityجراب معين .

    يمكن تكوين تعريف المورد المخصص AzurePodIdentityException (CRD) لتحديد أن الطلبات إلى نقطة نهاية IMDS التي تنشأ من تسميات مطابقة pod المعرفة في CRD يجب أن تكون مدعومة دون أي معالجة في NMI. استبعاد pods النظام مع التسمية kubernetes.azure.com/managedby: aks في مساحة اسم نظام kube عن aad-pod-identity طريق تكوين CRD AzurePodIdentityException. لمزيد من المعلومات، راجع استخدام الهويات المدارة بواسطة Microsoft Entra pod في خدمة Azure Kubernetes.

    لتكوين استثناء، قم بتثبيت YAML استثناء هيئة التصنيع العسكري.

  • لا تدعم AKS استخدام هوية مدارة معينة من قبل النظام عند استخدام منطقة DNS خاصة مخصصة.

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