الوظيفة الإضافية لشبكة الخدمة المستندة إلى Istio لخدمة Azure Kubernetes

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

ما المقصود ب Service Mesh؟

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

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

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

ما هو Istio؟

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

  • تأمين الاتصال من خدمة إلى خدمة في نظام مجموعة مع تشفير TLS (أمان طبقة النقل)، والمصادقة القوية المستندة إلى الهوية، والتخويل.
  • موازنة التحميل التلقائية لحركة مرور HTTP وgRPC وWebSocket وTCP.
  • تحكم دقيق في سلوك حركة المرور باستخدام قواعد توجيه غنية، وإعادة المحاولة، وتجاوز الفشل، وحقن الخطأ.
  • طبقة نهج قابلة للتوصيل وواجهة برمجة تطبيقات التكوين التي تدعم عناصر التحكم في الوصول وحدود المعدل والحصص النسبية.
  • المقاييس التلقائية والسجلات والتتبعات لجميع نسبة استخدام الشبكة داخل نظام المجموعة، بما في ذلك دخول المجموعة والخروج منها.

كيف تختلف الوظيفة الإضافية عن Istio مفتوحة المصدر؟

تستخدم هذه الوظيفة الإضافية الشبكات الخدمة وتبني على رأس Istio مفتوحة المصدر. توفر نكهة الوظيفة الإضافية المزايا الإضافية التالية:

  • يتم اختبار إصدارات Istio والتحقق من أنها متوافقة مع الإصدارات المدعومة من Azure Kubernetes Service.
  • تعالج Microsoft تحجيم مستوى التحكم Istio وتكوينه
  • تقوم Microsoft بضبط تحجيم مكونات AKS كما هو الحال coredns عند تمكين Istio.
  • توفر Microsoft دورة حياة مدارة (ترقيات) لمكونات Istio عند تشغيلها من قبل المستخدم.
  • تم التحقق من إعداد الدخول الخارجي والداخلي.
  • تم التحقق من العمل مع خدمة Azure Monitor المدارة ل Prometheus وAzure Managed Grafana.
  • دعم Azure الرسمي المقدم للوظيفة الإضافية.

القيود

يحتوي المكون الإضافي لمجموعة الخدمة المستندة إلى Istio ل AKS على القيود التالية:

  • لا تعمل الوظيفة الإضافية على مجموعات AKS التي تستخدم ملحق Open Service Mesh ل AKS.

  • لا تعمل الوظيفة الإضافية على مجموعات AKS مع عمليات التثبيت المدارة ذاتيا من Istio.

  • لا تدعم الوظيفة الإضافية إضافة pods المقترنة بالعقد الظاهرية المراد إضافتها ضمن الشبكة.

  • لا تدعم الوظيفة الإضافية بعد بوابات الخروج للتحكم في نسبة استخدام الشبكة الصادرة.

  • لا تدعم الوظيفة الإضافية حتى الآن الوضع المحيط غير الجانبي. تساهم Microsoft حاليا في Ambient workstream ضمن Istio مصدر مفتوح. تكامل المنتج لوضع Ambient موجود على المخطط ويتم تقييمه باستمرار مع تطور مجرى العمل المحيط.

  • لا تدعم الوظيفة الإضافية بعد عمليات النشر متعددة المجموعات.

  • لا تدعم الوظيفة الإضافية حاويات Windows Server بعد. حاويات Windows Server غير مدعومة بعد في مصدر مفتوح Istio الآن. يمكن العثور على مشكلة في تعقب طلب الميزة هذا هنا.

  • يتم حاليا حظر تخصيص الشبكة من خلال الموارد المخصصة التالية - ProxyConfig, WorkloadEntry, WorkloadGroup, IstioOperator, WasmPlugin.

  • تسمح الوظيفة الإضافية باستخدام أنواع عوامل التصفية التالية EnvoyFilter ، مع حظر أنواع عوامل التصفية الأخرى:

    • Lua (type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua).
    • ضاغط (type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor)
    • حد السعر المحلي (type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit)

    إشعار

    في حين أن هذه EnvoyFilterالملفات مسموح بها، فإن أي مشكلة تنشأ منها (على سبيل المثال من Lua scipt أو من مكتبة الضغط) تقع خارج نطاق دعم الوظيفة الإضافية Istio. راجع مستند نهج الدعم للحصول على مزيد من المعلومات حول فئات الدعم لميزات الوظيفة الإضافية Istio وخيارات التكوين.

  • واجهة برمجة تطبيقات البوابة لبوابة دخول Istio أو إدارة نسبة استخدام الشبكة (GAMMA) غير مدعومة حاليا مع الوظيفة الإضافية Istio. ومع ذلك، فإن واجهة برمجة تطبيقات البوابة لإدارة حركة مرور دخول Istio قيد التطوير النشط حاليا للوظيفة الإضافية. بينما تدعم الوظيفة الإضافية تخصيص التعليق التوضيحي لبوابات دخول Istio لعناوين IP وعلامات الخدمة، فإن تكوين المنفذ أو البروتوكول غير مدعوم حاليا.

الملاحظات وطلب الميزات

يمكن توفير الملاحظات والميزة التي تطلب الوظيفة الإضافية Istio عن طريق إنشاء مشكلات مع التسمية "service-mesh" على مستودع AKS GitHub.

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