استخدام الاتصال Cluster للاتصال بمجموعات Kubernetes التي تدعم Azure Arc

باستخدام Cluster الاتصال، يمكنك الاتصال بأمان بمجموعات Kubernetes التي تدعم Azure Arc دون الحاجة إلى تمكين أي منفذ وارد على جدار الحماية. يتيح الوصول إلى apiserver مجموعة Kubernetes التي تدعم Azure Arc السيناريوهات التالية:

  • تمكين تصحيح الأخطاء التفاعلية واستكشاف الأخطاء وإصلاحها.
  • توفير وصول الكتلة إلى خدمات Azure للمواقع المخصصة والموارد الأخرى التي تم إنشاؤها فوقها.

تتوفر نظرة عامة مفاهيمية لهذه الميزة في مقالة Kubernetes التي تدعم Azure Arc - Cluster connect .

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

  • قم بتثبيت Azure CLI أو تحديثه إلى الإصدار >= 2.16.0.

  • قم بتثبيت connectedk8s ملحق Azure CLI للإصدار >= 1.2.5:

    az extension add --name connectedk8s
    

    إذا سبق لك تثبيت الإضافة، فقم بتحديث الإضافة connectedk8s إلى أحدث إصدار:

    az extension update --name connectedk8s
    
  • مجموعة Kubernetes المتصلة الحالية والممكّنة من Azure Arc.

  • قم بتمكين نقاط النهاية أدناه للوصول الصادر بالإضافة إلى النقاط المذكورة ضمن توصيل مجموعة Kubernetes ب Azure Arc:

    نقطة النهاية المنفذ
    *.servicebus.windows.net 443
    guestnotificationservice.azure.com, *.guestnotificationservice.azure.com 443
  • استبدل العناصر النائبة وقم بتشغيل الأمر أدناه لتعيين متغيرات البيئة المستخدمة في هذا المستند:

    CLUSTER_NAME=<cluster-name>
    RESOURCE_GROUP=<resource-group-name>
    ARM_ID_CLUSTER=$(az connectedk8s show -n $CLUSTER_NAME -g $RESOURCE_GROUP --query id -o tsv)
    

تمكين ميزة الاتصال الكتلة

يمكنك تمكين الاتصال نظام المجموعة على أي نظام مجموعة Kubernetes ممكنة من Azure Arc عن طريق تشغيل الأمر التالي على جهاز حيث kubeconfig يتم توجيه الملف إلى مجموعة القلق:

az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP

خيار مصادقة Azure Active Directory

  1. احصل على المقترن objectId بكيان Azure AD الخاص بك:

    • لحساب مستخدم Azure AD:

      AAD_ENTITY_OBJECT_ID=$(az ad signed-in-user show --query objectId -o tsv)
      
    • لتطبيق Azure AD:

      AAD_ENTITY_OBJECT_ID=$(az ad sp show --id <id> --query objectId -o tsv)
      
  2. تفويض الكيان بالأذونات المناسبة:

    • إذا كنت تستخدم Kubernetes ClusterRoleBinding الأصلي أو RoleBinding للتحقق من التخويل على المجموعة، مع kubeconfig توجيه الملف إلى الكتلة الخاصة بك للوصول المباشر، فيمكنك إنشاء ملف تم تعيينه إلى كيان Azure AD (أصل الخدمة أو المستخدم) الذي يحتاج إلى الوصول إلى apiserver هذه المجموعة. مثال:

      kubectl create clusterrolebinding admin-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_OBJECT_ID
      
    • إذا كنت تستخدم Azure RBAC لعمليات التحقق من التخويل على المجموعة، فيمكنك إنشاء تعيين دور Azure تم تعيينه إلى كيان Azure AD. مثال:

      az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_OBJECT_ID --scope $ARM_ID_CLUSTER
      

خيار مصادقة الرمز المميز لحساب الخدمة

  1. باستخدام الملف الذي kubeconfigapiserver يشير إلى مجموعة Kubernetes الخاصة بك، قم بإنشاء حساب خدمة في أي مساحة اسم (يقوم الأمر التالي بإنشائه في مساحة الاسم الافتراضية):

    kubectl create serviceaccount admin-user
    
  2. إنشاء ClusterRoleBinding أو RoleBinding لمنح حساب الخدمة هذا الأذونات المناسبة على نظام المجموعة. مثال:

    kubectl create clusterrolebinding admin-user-binding --clusterrole cluster-admin --serviceaccount default:admin-user
    
  3. الحصول على الرمز المميز لحساب الخدمة باستخدام الأوامر التالية

    SECRET_NAME=$(kubectl get serviceaccount admin-user -o jsonpath='{$.secrets[0].name}')
    
    TOKEN=$(kubectl get secret ${SECRET_NAME} -o jsonpath='{$.data.token}' | base64 -d | sed $'s/$/\\\n/g')
    

الوصول إلى مجموعتك

  1. قم بإعداد kubeconfig المستند إلى الاتصال المجموعة اللازمة للوصول إلى مجموعتك استنادا إلى خيار المصادقة المستخدم:

    • في حالة استخدام خيار مصادقة Azure Active Directory، بعد تسجيل الدخول إلى Azure CLI باستخدام كيان Azure AD محل الاهتمام، احصل على الاتصال kubeconfig Cluster اللازمة للاتصال بالمجموعة من أي مكان (حتى من خارج جدار الحماية المحيط بالكتلة):

      az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
      
    • في حالة استخدام خيار مصادقة حساب الخدمة، احصل على الاتصال kubeconfig المجموعة اللازمة للاتصال بالمجموعة من أي مكان:

      az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
      
  2. استخدم kubectl لإرسال الطلبات إلى المجموعة:

    kubectl get pods
    

    يجب أن تشاهد الآن استجابة من الكتلة التي تحتوي على قائمة بجميع القرون تحت default مساحة الاسم.

القيود المعروفة

عند تقديم طلبات إلى مجموعة Kubernetes، إذا كان كيان Azure AD المستخدم جزءا من أكثر من 200 مجموعة، ملاحظة الخطأ التالي لأن هذا قيد معروف:

You must be logged in to the server (Error:Error while retrieving group info. Error:Overage claim (users with more than 200 group membership) is currently not supported. 

لتجاوز هذا الخطأ:

  1. قم بإنشاء مدير خدمة، والذي من غير المرجح أن يكون عضوا في أكثر من 200 مجموعة.
  2. سجل الدخول إلى Azure CLI باستخدام مبدأ الخدمة قبل تشغيل az connectedk8s proxy الأمر.

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

إعداد Azure AD RBAC على مجموعاتك