استخدام كيان الخدمة مع خدمة Azure Kubernetes (AKS)

يتطلب نظام مجموعة AKS إما كيان خدمة Microsoft Entra أو هوية مدارة لإنشاء موارد Azure الأخرى وإدارتها ديناميكيا، مثل Azure Load Balancer أو Azure Container Registry (ACR).

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

توضح لك هذه المقالة كيفية إنشاء كيان خدمة واستخدامه مع مجموعات AKS.

قبل البدء

لإنشاء كيان خدمة Microsoft Entra، يجب أن يكون لديك أذونات لتسجيل تطبيق مع مستأجر Microsoft Entra الخاص بك وتعيين التطبيق إلى دور في اشتراكك. إذا لم يكن لديك الأذونات اللازمة، فستحتاج إلى أن تطلب من Microsoft Entra ID أو مسؤول الاشتراك تعيين الأذونات الضرورية أو إنشاء كيان خدمة مسبقا للاستخدام مع نظام مجموعة AKS.

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

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

  • إذا كنت تستخدم Azure CLI، فأنت بحاجة إلى الإصدار 2.0.59 من Azure CLI أو أحدث. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
  • إذا كنت تستخدم Azure PowerShell، فأنت بحاجة إلى Azure PowerShell الإصدار 5.0.0 أو أحدث. قم بتشغيل Get-InstalledModule -Name Az للعثور على الإصدار. للتثبيت أو الترقية، راجع تثبيت وحدة Azure Az PowerShell النمطية.

إنشاء كيان خدمة

إنشاء كيان خدمة قبل إنشاء نظام المجموعة الخاص بك.

  1. إنشاء كيان خدمة باستخدام az ad sp create-for-rbac الأمر .

    az ad sp create-for-rbac --name myAKSClusterServicePrincipal
    

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

    {
      "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "displayName": "myAKSClusterServicePrincipal",
      "name": "http://myAKSClusterServicePrincipal",
      "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    
  2. انسخ القيم من appId وإلى password الإخراج. يمكنك استخدام هذه عند إنشاء نظام مجموعة AKS في القسم التالي.

تحديد كيان خدمة لنظام مجموعة AKS

  • استخدم كيان خدمة موجود لمجموعة AKS جديدة باستخدام az aks create الأمر واستخدم --service-principal المعلمتين و --client-secret لتحديد appId و password من الإخراج الذي تلقيته في القسم السابق.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --service-principal <appId> \
        --client-secret <password> \
        --generate-ssh-keys
    

    إشعار

    إذا كنت تستخدم كيان خدمة موجودا مع بيانات سرية مخصصة، فتأكد من أن السر لا يزيد عن 190 بايت.

تفويض الوصول إلى موارد Azure الأخرى

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

هام

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

  • إنشاء تعيين دور باستخدام az role assignment create الأمر . توفير قيمة appID الخاص بكيان الخدمة للمعلمة appId . حدد نطاق تعيين الدور، مثل مجموعة موارد أو مورد شبكة ظاهرية. يحدد تعيين الدور الأذونات التي يمتلكها كيان الخدمة على المورد وفي أي نطاق.

    على سبيل المثال، لتعيين أذونات كيان الخدمة للوصول إلى الأسرار في key vault، يمكنك استخدام الأمر التالي:

    az role assignment create \
        --assignee <appId> \
        --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>" \
        --role "Key Vault Secrets User"
    

    إشعار

    --scope يجب أن يكون لمورد معرف مورد كامل، مثل /subscriptions/<guid>/resourceGroups/myResourceGroup أو /subscriptions/<guid>/resourceGroups/myResourceGroupVnet/providers/Microsoft.Network/virtualNetworks/myVnet.

توضح الأقسام التالية تفاصيل التفويضات الشائعة التي قد تحتاج إلى تعيينها إلى كيان خدمة.

Azure Container Registry

إذا كنت تستخدم Azure Container Registry (ACR) كمخزن صور الحاوية، فستحتاج إلى منح أذونات إلى كيان الخدمة لنظام المجموعة AKS الخاصة بك لقراءة الصور وسحبها. نوصي باستخدام az aks create الأمر أو az aks update للتكامل مع سجل وتعيين الدور المناسب لكيان الخدمة. للحصول على خطوات تفصيلية، راجع المصادقة مع حاوية التسجيل Azure من خدمة Azure Kubernetes.

الشبكات

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

التخزين

إذا كنت بحاجة إلى الوصول إلى موارد القرص الموجودة في مجموعة موارد أخرى، فعين إحدى المجموعات التالية من أذونات الدور:

  • إنشاء دور مخصص وتحديد أذونات دور Microsoft.Compute/disks/read وMicrosoft.Compute/disks/write role، أو
  • تعيين دور مساهم الجهاز الظاهري المضمن في مجموعة الموارد.

مثيلات حاوية Azure

إذا كنت تستخدم Virtual Kubelet للتكامل مع AKS واخترت تشغيل مثيلات حاويات Azure (ACI) في مجموعة موارد منفصلة عن نظام المجموعة AKS، يجب أن يتم منح كيان خدمة نظام مجموعة AKS أذونات المساهم على مجموعة موارد ACI.

اعتبارات أخرى

عند استخدام AKS وأساس خدمة Microsoft Entra، ضع في اعتبارك ما يلي:

  • يعد كيان الخدمة ل Kubernetes جزءا من تكوين نظام المجموعة، ولكن لا تستخدم هذه الهوية لنشر نظام المجموعة.
  • بشكل افتراضي، تكون بيانات اعتماد كيان الخدمة صالحة لمدة سنة واحدة. يمكنك تحديث أو تدوير بيانات اعتماد كيان الخدمة في أي وقت.
  • يرتبط كل كيان خدمة بتطبيق Microsoft Entra. يمكنك إقران كيان الخدمة لمجموعة Kubernetes بأي اسم تطبيق Microsoft Entra صالح (على سبيل المثال: https://www.contoso.org/example). لا يجب أن يكون عنوان URL للتطبيق هو نقطة نهاية حقيقية.
  • عند تحديد مُعرف عميل كيان الخدمة، استخدم القيمة appId.
  • على الأجهزة الظاهرية لعقدة العامل في مجموعة Kubernetes، يتم تخزين بيانات اعتماد كيان الخدمة في /etc/kubernetes/azure.json الملف.
  • عند حذف مجموعة AKS التي تم إنشاؤها باستخدام az aks create الأمر، لا يتم حذف كيان الخدمة الذي تم إنشاؤه تلقائيا.
    • لحذف كيان الخدمة، استعلم عن servicePrincipalProfile.clientId لنظام المجموعة الخاص بك واحذفه باستخدام az ad sp delete الأمر . استبدل قيم المعلمة -g لاسم مجموعة الموارد والمعلمة -n لاسم نظام المجموعة:

      az ad sp delete --id $(az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query servicePrincipalProfile.clientId \
        --output tsv)
      

استكشاف الأخطاء وإصلاحها

يقوم Azure CLI بالتخزين المؤقت لبيانات اعتماد كيان الخدمة لمجموعات AKS. إذا انتهت صلاحية بيانات الاعتماد هذه، يمكنك مواجهة أخطاء أثناء نشر نظام مجموعة AKS. إذا قمت بتشغيل az aks create الأمر وتلقيت رسالة خطأ مشابهة للرسالة التالية، فقد يشير ذلك إلى وجود مشكلة في بيانات اعتماد كيان الخدمة المخزنة مؤقتا:

Operation failed with status: 'Bad Request'.
Details: The credentials in ServicePrincipalProfile were invalid. Please see https://aka.ms/aks-sp-help for more details.
(Details: adal: Refresh request failed. Status Code = '401'.

يمكنك التحقق من تاريخ انتهاء صلاحية بيانات اعتماد كيان الخدمة باستخدام az ad app credential list الأمر مع "[].endDateTime" الاستعلام.

az ad app credential list \
    --id <app-id> \
    --query "[].endDateTime" \
    --output tsv

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

استكشاف أخطاء Azure CLI العامة وإصلاحها

يمكن تشغيل Azure CLI في عِدة بيئات shell، ولكن مع تباينات بسيطة في التنسيق. إذا كانت لديك نتائج غير متوقعة مع أوامر Azure CLI، فراجع كيفية استخدام Azure CLI بنجاح.

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

لمزيد من المعلومات حول أساسيات خدمة Microsoft Entra، راجع كائنات كيان التطبيق والخدمة.

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