Istio هو طبقة خدمة شبكية مفتوحة المصدر وقابلة للتكوين، تعمل على ربط ومراقبة وتأمين الحاويات في مجموعة Kubernetes.
حتى كتابة هذه السطور، يعمل Istio بشكل طبيعي مع Kubernetes فقط، لكن طبيعته مفتوحة المصدر تتيح لأي شخص كتابة إضافات تمكّن Istio من العمل على أي برنامج من برامج المجموعة. اليوم، سنركز على استخدام Istio مع Kubernetes، وهو حالة الاستخدام الأكثر شيوعًا.
Kubernetes هي أداة لتنسيق الحاويات، ووحدة أساسية واحدة من Kubernetes هي العقدة. تتكون العقدة من حاوية واحدة أو أكثر، جنبًا إلى جنب مع أنظمة الملفات أو عناصر أخرى. قد تحتوي بنية الخدمات المصغرة على عشرات العقد المختلفة، كل منها تمثل خدمات مصغرة مختلفة. Kubernetes يدير توافر العُقد واستهلاكها للموارد، ويضيف حجيرات كلما زاد الطلب عليها باستخدام أداة التوسيع التلقائي للحجيرات. يقوم Istio بحقن المزيد من الحاويات في الحجيرات لإضافة الأمان والإدارة والمراقبة.
نظرًا لكونه مفتوح المصدر، يمكن لـ Istio العمل على أي مزود خدمة سحابية عامة يدعمه وعلى أي سحابة خاصة مع مسؤولين راغبين في ذلك.
يوضح الفيديو التالي المزيد حول أساسيات Istio:
عندما تنتقل المؤسسات إلى الخدمات المصغرة، فإنها تحتاج إلى دعم عشرات أو مئات التطبيقات المحددة. تعني إدارة نقاط النهاية هذه بشكل منفصل دعم العديد من الأجهزة الافتراضية أو VMs، بما في ذلك الطلب. يمكن لبرمجيات المجموعة مثل Kubernetes إنشاء حجيرات وتوسيع نطاقها، لكن Kubernetes لا يوفر التوجيه أو قواعد حركة المرور أو أدوات مراقبة قوية أو أدوات تصحيح الأخطاء.
أدخل شبكة الخدمة.
مع زيادة عدد الخدمات، يزداد عدد الطرق المحتملة للاتصال بشكل كبير. تحتوي خدمتان على مسارين للاتصال فقط. ثلاث خدمات لديها ستة، في حين أن 10 خدمات لديها 90. توفر شبكة الخدمة طريقة واحدة لتكوين مسارات الاتصالات هذه عن طريق إنشاء نهج للاتصال.
تقوم شبكة الخدمة بتجهيز الخدمات وتوجيه حركة الاتصالات وفقاً لتكوين محدد مسبقاً. هذا يعني أنه بدلًا من تكوين حاوية قيد التشغيل (أو كتابة التعليمات البرمجية للقيام بذلك)، يمكن للمسؤول توفير التكوين لشبكة الخدمة وجعلها تكمل هذا العمل. كان هذا يحدث دائماً في السابق مع خوادم الويب والاتصال من خدمة إلى خدمة.
الطريقة الأكثر شيوعًا للقيام بذلك في المجموعة هي استخدام النمط الجانبي. الحاوية الجانبية هي حاوية جديدة داخل الحجيرات تقوم بتوجيه ومراقبة حركة الاتصالات بين الخدمات والحاويات.
كما ذكرنا سابقًا، يعمل Istio كطبقة فوق Kubernetes، مضيفاً حاويات غير مرئية للمبرمج والمسؤول. يُطلق عليها الحاويات الجانبية، وهي تعمل كشخص في الوسط، حيث تقوم بتوجيه حركة المرور ومراقبة التفاعلات بين العناصر. يعمل الاثنان معا بثلاث طرق: التكوين والمراقبة والإدارة.
الطريقة الأساسية لتعيين التكوين باستخدام Kubernetes هي أمر kubectl، وعادةً "kubectl -f <filename>"، حيث يكون الملف هو ملف YAML. يمكن لمستخدمي Istio تشغيل أنواع جديدة ومختلفة من ملفات YAML باستخدام kubectl أو استخدام أمر ioctl الجديد والاختياري.
باستخدام Istio ، يمكنك بسهولة مراقبة سلامة تطبيقاتك التي تعمل باستخدام Kubernetes. تستطيع أدوات Istio قياس وإدارة سلامة التطبيقات وتصورها، مما يوفر رؤى أعمق من مجرد المراقبة العامة للمجموعات والعُقد التي توفرها Kubernetes.
نظرا لأن واجهة Istio هي في الأساس نفس واجهة Kubernetes، فإن إدارتها لا تتطلب أي عمل إضافي تقريبًا. في الواقع، يسمح Istio للمستخدم بإنشاء سياسات تؤثر على مجموعة Kubernetes بأكملها وتديرها، مما يقلل الوقت اللازم لإدارة كل مجموعة مع التخلص من الحاجة إلى كود إدارة مخصص.
الفوائد الرئيسية لشبكة الخدمات تشمل إمكانيات لتحسين تصحيح الأخطاء والمراقبة والتوجيه والأمان والاستخدام. يعني أنه مع Istio، يتطلب الأمر جهدًا أقل لإدارة مجموعة أوسع من الخدمات.
على سبيل المثال، لنفترض أن إحدى الخدمات لها تبعيات متعددة. تستدعي خدمة pay_claim في شركة التأمين خدمة deductible_amt، والتي تستدعي خدمة is_member_covered، وما إلى ذلك. قد تحتوي سلسلة التبعيات المعقدة على 10 أو 12 استدعاء خدمة. عندما يفشل أحد هؤلاء الـ 12 ، ستكون هناك مجموعة متتالية من حالات الفشل التي تؤدي إلى نوع من الخطأ 500 أو خطأ 400 أو ربما عدم الاستجابة على الإطلاق.
لتصحيح مجموعة الاستدعاءات هذه، يمكنك استخدام شيء مثل تتبع المجموعة. في الواجهة الأمامية، يمكن للمطورين من جانب العميل رؤية العناصر التي يتم سحبها من خوادم الويب، وبأي ترتيب، وفحصها. يمكن لمبرمجي الواجهة الأمامية الحصول على مخطط شلال للمساعدة في تصحيح الأخطاء.
ما لا يوضحه المثال هو ما يحدث داخل مركز البيانات—كيف تستدعي الدالة callback=parselLotamaAudiences أربع خدمات ويب أخرى، وأيها يستجيب بشكل أبطأ. لاحقًا، سنرى كيف يوفر Istio أدوات لتتبع استدعاءات الدالة في رسم تخطيطي يشبه هذا الرسم.
قد ترغب فرق عمليات التطوير وإدارة تكنولوجيا المعلومات في مراقبة حركة المرور لمعرفة زمن الانتقال، والوقت المستغرق في الخدمة، والأخطاء كنسبة مئوية من حركة المرور، وما إلى ذلك. في كثير من الأحيان، يريدون رؤية لوحة المعلومات. توفر لوحة المعلومات تصورًا للمجموع، أو المتوسط، أو هذه المقاييس بمرور الوقت، وربما مع إمكانية التعمق في عقدة معينة، أو خدمة، أو حجيرة. لا توفر Kubernetes هذه الوظائف في الأصل.
بشكل افتراضي، يسمح Kubernetes لكل حجيرة بإرسال البيانات إلى حجيرة آخرى. يسمح Istio للمسؤولين بإنشاء سياسة لتقييد الخدمات التي يمكن أن تعمل مع بعضها البعض. لذا، على سبيل المثال، يمكن للخدمات استدعاء الخدمات الأخرى التي تعتبر تبعية حقيقية فقط. هناك سياسة أخرى للحفاظ على الخدمات وهي وضع حد للمعدّل، والذي سيمنع حركة المرور الزائدة من عرقلة الخدمة ومنع هجوم حجب الخدمة.
افتراضيًا، يوفر Kubernetes موازنة تحميل من نوع "Round-Robin".إذا كان هناك ستة حجيرات توفر خدمة مصغرة، فإن Kubernetes سيوفر موازن تحميل، أو خدمة ترسل الطلبات إلى كل حجيرة بترتيب تصاعدي ثم تبدأ من جديد. ومع ذلك، في بعض الأحيان تنشر الشركة إصدارات مختلفة من نفس الخدمة في الإنتاج.
قد يكون أبسط مثال على ذلك هو النشر باللون الأزرق أو الأخضر. في هذه الحالة، قد يقوم البرنامج ببناء إصدار جديد تماماً من التطبيق في الإنتاج دون إرسال مستخدمي الإنتاج إليه. بعد ترقية الإصدار الجديد، يمكن للشركة الاحتفاظ بالخوادم القديمة لجعل عملية التبديل سريعة في حالة حدوث عطل.
باستخدام Istio، يكون هذا الأمر بسيطًا مثل استخدام التصنيف في ملف التكوين. يمكن للمسؤولين أيضًا استخدام التسميات للإشارة إلى نوع الخدمة المراد الاتصال بها وإنشاء قواعد استنادًا إلى الرؤوس. لذلك ، على سبيل المثال ، يمكن لمستخدمي الإصدار التجريبي التوجيه إلى الحجيرات مع أحدث وأفضل بناء ، بينما يذهب المستخدمون العاديون إلى بناء الإنتاج المستقر.
إذا كانت الخدمة مثقلة أو معطلة، تفشل المزيد من الطلبات مع الاستمرار في إثقال كاهل النظام. نظرًا لأن Istio يتتبع الأخطاء والتأخيرات، يمكنه فرض إيقاف مؤقت، مما يسمح للخدمة بالتعافي، بعد عدد محدد من الطلبات التي تحددها السياسة. يمكنك فرض هذا النهج عبر المجموعة بأكملها من خلال إنشاء ملف نصي صغير وتوجيه Istio لاستخدامه كسياسة جديدة.
يوفر Istio الهوية والسياسة والتشفير بشكل افتراضي، إلى جانب المصادقة والترخيص والتدقيق (AAA). أي حجيرات قيد الإدارة تتواصل مع غيرها تستخدم حركة مرور مشفرة، مما يمنع أي مراقبة. تساعد خدمة الهوية، إلى جانب التشفير، على ضمان عدم تمكن أي مستخدم غير مصرح له من تزييف أو "انتحال" مكالمة خدمة. توفر AAA لمتخصصي الأمن والعمليات الأدوات التي يحتاجونها للمراقبة، بعبء إداري أقل.
لا تزال التطبيقات التقليدية بحاجة إلى ميزات الهوية والسياسة والأمان التي يوفرها Istio. هذا يجعل المبرمجين والمسؤولين يعملون في مستوى تجريد خاطئ، ويعيدون تطبيق نفس قواعد الأمان مرارًا وتكرارًا لكل خدمة. يسمح لهم Istio بالعمل على المستوى الصحيح، ووضع سياسات للمجموعة من خلال لوحة تحكم واحدة.
Red Hat OpenShift on IBM Cloud هي منصة حاويات OpenShift (OCP) المُدارة بالكامل.
تنفذ حلول الحاويات أعباء عمل الحاويات وتوسع نطاقها مع ميزات الأمان والابتكار مفتوحة المصدر والنشر السريع.
أطلق العنان للقدرات الجديدة وحفِّز مرونة الأعمال من خلال خدمات الاستشارات السحابية من IBM. اكتشف كيفية المشاركة في إنشاء الحلول وتسريع التحول الرقمي وتحسين الأداء من خلال إستراتيجيات السحابة الهجينة والشراكات مع الخبراء.