إنشاء وحدة تحكم البيانات التي تدعم Azure Arc باستخدام أدوات Kubernetes

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

يحتوي إنشاء وحدة تحكم البيانات على الخطوات عالية المستوى التالية:

  1. إنشاء مساحة الاسم وخدمة bootstrapper
  2. إنشاء وحدة تحكم البيانات

إشعار

للتبسيط، تفترض الخطوات أدناه أنك مسؤول مجموعة Kubernetes. بالنسبة إلى عمليات نشر الإنتاج أو البيئات الأكثر أمانا، يوصى باتباع أفضل ممارسات الأمان "الأقل امتيازا" عند نشر وحدة تحكم البيانات عن طريق منح أذونات محددة فقط للمستخدمين وحسابات الخدمة المشاركة في عملية التوزيع.

راجع الموضوع تشغيل خدمات البيانات الممكنة بواسطة Arc بأقل الامتيازات للحصول على إرشادات مفصلة.

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

راجع الموضوع تخطيط نشر خدمات البيانات التي تدعم Azure Arc للحصول على معلومات نظرة عامة.

لإنشاء وحدة تحكم البيانات باستخدام أدوات Kubernetes، ستحتاج إلى تثبيت أدوات Kubernetes. ستستخدم kubectlالأمثلة في هذه المقالة ، ولكن يمكن استخدام أساليب مماثلة مع أدوات Kubernetes الأخرى مثل لوحة معلومات Kubernetes، ocأو helm إذا كنت على دراية بهذه الأدوات وKubernetes yaml/json.

تثبيت أداة kubectl

إنشاء مساحة الاسم وخدمة bootstrapper

تعالج خدمة bootstrapper الطلبات الواردة لإنشاء الموارد المخصصة وتحريرها وحذفها مثل وحدة تحكم البيانات.

احفظ نسخة من bootstrapper-unified.yaml، واستبدل العنصر {{NAMESPACE}} النائب في جميع الأماكن في الملف باسم مساحة الاسم المطلوبة، على سبيل المثال: arc.

هام

يتم تعيين ملف قالب bootstrapper-unified.yaml افتراضيا إلى سحب صورة حاوية bootstrapper من Microsoft Container Registry (MCR). إذا لم تتمكن بيئتك من الوصول مباشرة إلى Microsoft Container Registry، يمكنك القيام بما يلي:

قم بتشغيل الأمر التالي لإنشاء مساحة الاسم وخدمة bootstrapper مع الملف المحرر.

kubectl apply --namespace arc -f bootstrapper-unified.yaml

تحقق من تشغيل جراب bootstrapper باستخدام الأمر التالي.

kubectl get pod --namespace arc -l app=bootstrapper

إذا لم تكن الحالة قيد التشغيل، فقم بتشغيل الأمر عدة مرات حتى تكون الحالة قيد التشغيل.

إنشاء وحدة تحكم البيانات

الآن أنت مستعد لإنشاء وحدة تحكم البيانات نفسها.

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

إنشاء لوحات معلومات المقاييس والسجلات أسماء المستخدمين وكلمات المرور

في أعلى الملف، يمكنك تحديد اسم مستخدم وكلمة مرور يستخدمان للمصادقة على المقاييس وسجلات لوحات المعلومات كمسؤول. اختر كلمة مرور آمنة وشاركها مع أولئك الذين يحتاجون إلى الحصول على هذه الامتيازات فقط.

يتم تخزين سر Kubernetes كسلسلة مشفرة base64 - واحدة لاسم المستخدم وواحدة لكلمة المرور.

يمكنك استخدام أداة عبر الإنترنت لترميز اسم المستخدم وكلمة المرور المطلوبين base64 أو يمكنك استخدام أدوات CLI المضمنة اعتمادا على النظام الأساسي الخاص بك.

بوويرشيل

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

إنشاء شهادات للوحات معلومات السجلات والمقاييس

اختياريا، يمكنك إنشاء شهادات SSL/TLS للوحات معلومات السجلات والمقاييس. اتبع الإرشادات الموجودة في تحديد شهادات SSL/TLS أثناء نشر أدوات Kubernetes الأصلية.

تحرير تكوين وحدة تحكم البيانات

تحرير تكوين وحدة تحكم البيانات حسب الحاجة:

مطلوب

  • الموقع: قم بتغيير هذا ليكون موقع Azure حيث سيتم تخزين بيانات التعريف حول وحدة تحكم البيانات. راجع قائمة المناطق المتوفرة.
  • resourceGroup: مجموعة موارد Azure حيث تريد إنشاء مورد Azure لوحدة تحكم البيانات في Azure Resource Manager. عادة ما يجب أن تكون مجموعة الموارد هذه موجودة بالفعل، ولكنها غير مطلوبة حتى الوقت الذي تقوم فيه بتحميل البيانات إلى Azure.
  • subscription: المعرف الفريد العمومي لاشتراك Azure للاشتراك الذي تريد إنشاء موارد Azure فيه.

يوصى بمراجعة الإعدادات الافتراضية وربما تغييرها

  • تخزين.. className: فئة التخزين لاستخدامها لبيانات وحدة تحكم البيانات وملفات السجل. إذا لم تكن متأكدا من فئات التخزين المتوفرة في مجموعة Kubernetes الخاصة بك، يمكنك تشغيل الأمر التالي: kubectl get storageclass. الافتراضي هو default الذي يفترض أن هناك فئة تخزين موجودة ويتم تسميتها default ليس أن هناك فئة تخزين هي الافتراضية. ملاحظة: هناك إعدادان className ليتم تعيينهما إلى فئة التخزين المطلوبة - أحدهما للبيانات والآخر للسجلات.
  • serviceType: قم بتغيير نوع الخدمة إلى NodePort إذا كنت لا تستخدم LoadBalancer.
  • الأمان ل Azure Red Hat OpenShift أو Red Hat OpenShift Container Platform، استبدل security: الإعدادات بالقيم التالية في ملف yaml لوحدة تحكم البيانات.
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

الاختياري

  • الاسم: الاسم الافتراضي لوحدة تحكم البيانات هو arc، ولكن يمكنك تغييره إذا أردت ذلك.
  • displayName: قم بتعيين هذا إلى نفس قيمة سمة الاسم في أعلى الملف.
  • logsui-certificate-secret: اسم السر الذي تم إنشاؤه على مجموعة Kubernetes لشهادة واجهة مستخدم السجلات.
  • metricsui-certificate-secret: اسم السر الذي تم إنشاؤه على مجموعة Kubernetes لشهادة واجهة مستخدم المقاييس.

يوضح المثال التالي yaml وحدة تحكم البيانات المكتملة.

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: metricsui-admin-secret
type: Opaque

---

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: logsui-admin-secret
type: Opaque

---

apiVersion: arcdata.microsoft.com/v5
kind: DataController
metadata:
  name: arc-dc
spec:
  credentials:
    dockerRegistry: arc-private-registry # Create a registry secret named 'arc-private-registry' if you are going to pull from a private registry instead of MCR.
    serviceAccount: sa-arc-controller
  docker:
    imagePullPolicy: Always
    imageTag: v1.31.0_2024-07-09
    registry: mcr.microsoft.com
    repository: arcdata
  infrastructure: other # Must be a value in the array [alibaba, aws, azure, gcp, onpremises, other]
  security:
    allowDumps: true # Set this to false if deploying on OpenShift
    allowNodeMetricsCollection: true # Set this to false if deploying on OpenShift
    allowPodMetricsCollection: true # Set this to false if deploying on OpenShift
  services:
  - name: controller
    port: 30080
    serviceType: LoadBalancer # Modify serviceType based on your Kubernetes environment
  settings:
    ElasticSearch:
      vm.max_map_count: "-1"
    azure:
      connectionMode: indirect # Only indirect is supported for Kubernetes-native deployment for now.
      location: eastus # Choose a different Azure location if you want
      resourceGroup: <your resource group>
      subscription: <your subscription GUID>
    controller:
      displayName: arc-dc
      enableBilling: true
      logs.rotation.days: "7"
      logs.rotation.size: "5000"
  storage:
    data:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 15Gi
    logs:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 10Gi

احفظ الملف الذي تم تحريره على الكمبيوتر المحلي وقم بتشغيل الأمر التالي لإنشاء وحدة تحكم البيانات:

kubectl create --namespace arc -f <path to your data controller file>

#Example
kubectl create --namespace arc -f data-controller.yaml

مراقبة حالة الإنشاء

سيستغرق إنشاء وحدة التحكم بضع دقائق حتى يكتمل. يمكنك مراقبة التقدم المحرز في نافذة طرفية أخرى باستخدام الأوامر التالية:

kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc

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

kubectl describe pod/<pod name> --namespace arc
kubectl logs <pod name> --namespace arc

#Example:
#kubectl describe pod/control-2g7bl --namespace arc
#kubectl logs control-2g7b1 --namespace arc

استكشاف مشكلات الإنشاء وإصلاحها

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