Istio

menu icon

Istio

تعرف على المزيد حول Istio - التقنية المفتوحة التي توفر طريقة للمطورين للاتصال بسلاسة وادارة وتأمين شبكات الاتصال للخدمات الدقيقة المختلفة.

ما هو Istio؟

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

يعد Kubernetes أداة تنظيم الحاويات، والوحدة المركزية في Kubernetes هي العقدة. تتكون العقدة من حاوية واحدة أو أكثر، بالاضافة الى أنظمة الملفات أو المكونات الأخرى. بمكن أن يكون لأسلوب تصميم الخدمات الدقيقة عشرات العقد المختلفة، كلا منها يمثل خدمات دقيقة مختلفة. يقوم Kubernetes بادارة الاتاحة واستهلاك المصادر للعقد، واضافة Pods مع زيادة الطلب باستخدام Pod Autoscaler. يقوم Istio بادخال حاويات اضافية في Pod لاضافة الأمان والادارة والمراقبة.

ولأنه مفتوح المصدر، يمكن تشغيل Istio على أي من مقدمي الخدمات السحابية العامة التي تدعمه وأي بيئة سحابية خاصة مع مسؤولين راغبين في ذلك.

يوضح الفيديو التالي المزيد حول أساسيات Istio ‏(5:13)‏:

طبقة الخدمة لشبكة الاتصال

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

أدخل طبقة الخدمة.

مع تزايد عدد الخدمات، يزداد عدد الطرق المحتملة للتواصل بشكل مطرد. خدمتان لهما مساران للاتصال فقط. وثلاث خدمات لديها ستة، بينما 10 خدمات لديها 90. تقدم طبقة الخدمة طريقة واحدة لتوصيف مسارات الاتصال هذه من خلال انشاء سياسة للاتصال.

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

الطريقة الأكثر شيوعا للقيام بذلك في نظام المجموعة هي استخدام النمط الجانبي. النمط الجانبي عبارة عن حاوية جديدة داخل Pod، تقوم بتوجيه ومراقبة حركة الاتصالات بين الخدمات والحاويات.

Istio وKubernetes

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

التوصيف

الطريقة الأساسية لتحديد التوصيف باستخدام Kubernetes هي الأمر kubectl، وعادة ما يكون بالنسق التالي "kubectl -f <filename>"، حيث يكون الملف هو ملف YAML. يمكن لمستخدمي Istio تشغيل أنواع جديدة ومختلفة من ملفات YAML باستخدام kubectl أو استخدام الأمر ioctl الجديد والاختياري.

المراقبة

باستخدام Istio ، يمكنك مراقبة حالة التطبيقات الخاصة بك التي تعمل مع Kubernies بسهولة. يمكن لأجهزة Istio ادارة وتصور حالة التطبيقات، مما يوفر رؤية أكثر من مجرد المراقبة العامة للمجموعة والعقد التي يوفرها Kubernetes.

الادارة

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

المزايا

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

تحسين اكتشاف وتصحيح الأخطاء

لنفترض، على سبيل المثال، أن الخدمة لها ارتباطات متعددة. تقوم الخدمة pay_claim في شركة تأمين باستدعاء خدمة deductible_amt، التي تقوم باستدعاء خدمة is_member_covered، وهكذا. قد تحتوي سلسلة الارتباطات المعقدة على 10 أو 12 استدعاء خدمة. عندما يفشل أحد الاستدعاءات من 12 استدعاء، سيكون هناك مجموعة متتالية من حالات الفشل التي ينتج عنها ما يقرب من 500 خطأ، 400 خطأ، أو عدم الاستجابة على الاطلاق.

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

ما لا يظهره المثال هو ما يحدث داخل مركز البيانات —كيف يقوم callback =parselLotamaAudiences باستدعاء أربعة خدمات انترنت أخرى وأي منها يستجيب بطريقة أكثر بطأ. ولاحقا، سوف نرى كيف يقوم Istio بتوفير الأدوات لتتبع استدعاءات الوظائف في رسم بياني مثل هذا.

الرصد والمراقبة

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

السياسة

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

التوجيه وموازنة التحميل

افتراضيا، يقوم Kubernetes بتوفير طريقة round-robin لموازنة التحميل. اذا كان هناك ستة Pods توفر خدمة دقيقة، سيقوم Kubernetes بتوفير موازنة التحميل، أو "خدمة"، تقوم بارسال طلبات الى كل Pod بترتيب متزايد، ثم تبدأ من جديد. ومع ذلك، في بعض الأحيان تقوم شركة بنشر نسخ مختلفة من نفس الخدمة في الانتاج.

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

باستخدام Istio، يكون هذا الأمر بسيطا مثل استخدام وضع الشارات في ملف توصيف. كما يمكن لمسؤولي النظام استخدام التسميات المميزة للاشارة الى نوع الخدمة التي يجب الاتصال بها وانشاء قواعد تستند الى نصوص الرأس. لذلك، على سبيل المثال، يمكن لمستخدمي الاصدار التجريبي التوجه الى ‎‘Canary’ Pod مع أحدث وأكبر بناء، بينما ينتقل المستخدمون العاديون الى البناء المستقر والثابت للانتاج.

قطع الدائرة

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

الأمان

يوفر Istio الهوية والسياسة والتشفير بشكل افتراضي، الى جانب التوثيق والتصريح والمراجعة (AAA). ستقوم أي Pods تحت الادارة التي تتواصل مع الآخرين باستخدام حركة ارسال واستقبال مشفرة، مما يمنع أي ملاحظة. تضمن خدمة الهوية، مقترنة مع التشفير، عدم قيام أي مستخدم غير مصرح له بتزوير أو تزيف استدعاء خدمة. يوفر التوثيق والتصريح والمراجعة (AAA) لمتخصصي الأمن والعمليات الأدوات التي يحتاجون اليها للمراقبة، مع تكاليف أقل.

الادارة المبسطة

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

أمثلة

تصور الخدمات

يتضمن Istio 1.1 وظيفة اضافية جديدة تسمى Kiali التي توفر تصورا يعتمد على شبكة الانترنت. يمكنك استخدامه لتتبع طلبات الخدمة، أو التصفح في التفاصيل، أو حتى تصدير السجل التاريخي لطلبات الخدمة على انه JSON للاستعلام والتنسيق بطريقتك الخاصة. يوفر الرسم البياني لأحجام العمل أدناه رسما بيانيا للارتباط يتم انشاؤه في الوقت الفعلي بناءا على الخدمات التي تعتمد على بعضها البعض فعليا. ويتم تكوينه من عمليات المراقبة الفعلية لحركة الارسال والاستقبال.

صورة البرنامج الإضافي الجديد المسمى Kiali الذي يقدم التصور القائم على الإنترنت

تتبع استدعاءات الخدمة

تقدم خدمة Jaeger، أحد مكونات Istio، امكانية التتبع لأي خدمة معينة. في هذا المثال، قمنا بتتبع صفحة المنتج. تمثل كل نقطة في الصورة الأولى استدعاء للخدمة. بالضغط على نقطة، يمكننا "الانتقال التفصيلي" الى المخطط الانحداري لتتبع طلبات الخدمات والاستجابات المطلوبة.

صورة خدمة Jaeger، وهي مكون من مكونات Istio، تتيح التتبع لأي خدمة محددة.  في هذا المثال، قمنا بتتبع صفحة المنتج.  كل نقطة في الصورة الأولى تمثل استدعاء خدمة.

يمكننا أيضا النظر عن قرب أكثر في صفحة المنتج. يمكننا أن نرى الأخطاء في صفحة المنتج نفسها - التي تم ارجاع التفاصيل بها بنجاح.

صورة صفحة المنتج.  يمكننا أن نرى الأخطاء في صفحة المنتج نفسها - التي تم ارجاع التفاصيل بها بنجاح.

الاستعراضات البيانية

يتم اتاحة Istio مع العديد من الاستعراضات البيانية (خارج الصندوق) لمراقبة حالة وأداء النظام. يمكن أن تقيس هذه العمليات استخدام وحدة المعالجة المركزية والذاكرة، والطلب على حركة الارسال والاستقبال وعدد الأخطاء ما بين 400 و500 خطأ ووقت تقديم الطلبات، والمزيد. والأفضل على الاطلاق، أنها تكون متاحة بمجرد تركيب وتشغيل Istio واضافة Grafana، وهي احدى أدوات الاستعراض البياني للمصادر المفتوحة المتضمنة في Istio. كما يوفر أيضا Istio اثنين من الاستعراضات البيانية الأخرى: Kiali وJaeger.

صورة للاستعراضات البيانية المتعددة في Istio (خارج الأطر النمطية) لمراقبة صحة النظام وأدائه.

Istio مقابل Envoy

يقوم Istio باستخدام نسخة من Envoy، بالرغم من أنها موسعة بشكل كبير، لاجراء المراقبة والادارة والتسجيل. تحتاج كل Pod أن يتم تتبعها، ويحتاج Istio تجميع وتوفير المعلومات عن كل Pods. ومن بين البدائل المحتملة لاستخدام Istio، القيام بنشر Envoy في نظام مجموعة Kubernetes مباشرة وكتابة الكود الخاص بالادارة. على الرغم من أنه عندما تفكر في ذلك، فان هذا يعيد كتابة ما يتضمنه Istio، مع كل التكاليف والأخطاء المرتبطة بمشروع تطوير برنامج مهيأ.

البرامج التعليمية

يتضمن موقع Istio (الرابط موجود خارج IBM) الكثير من المطبوعات الفنية والتعليمات المفيدة للبدء باستخدام Istio. 

Istio وIBM

يكون Managed Istio متاحا كجزء من IBM Cloud Kubernetes Service. تقدم الخدمة امكانية تركيب Istio والتحديثات الآلية وادارة دورة الحياة لمكونات لوحة التحكم، والتكامل مع أدوات تسجيل ومراقبة بيئة التشغيل. أضف تكامل Istio الذي يتم ادارته الى أنظمة المجموعات الحالية والجديدة وقم باستعادة التحكم في الخدمات الدقيقة اليوم. اذا كنت مهتما باكتشاف Knative، ارجع الى "Knative: An Essential Guide".

معرفة المزيد عن Managed Istio في IBM Cloud Kubernetes Service

للحصول على نظرة عامة حول كيفية مساعدة Kubernetes الذي يتم ادارته في رحلتك السحابية، يمكنك مشاهدة الفيديو الخاص بنا، "Advantages of Managed Kubernetes"‏:

لمعرفة المزيد عن أفضل الممارسات لاتاحة وتسريع نشر الحاويات في بيئات الانتاج، ارجع الى التقرير "Best Practices for Running Containers and Kubernetes in Production".

تعرف على كيف يمكن أن تساعدك طبقات الخدمة في التحكم في التفاعلات بين الخدمات التي توجد في التطبيق الخاص بك باستخدام الدليل العملي "شرح Istito: البدء باستخدام طبقة الخدمة" (ملف PDF،‏ 4.1 ميجابايت).

اذا كنت جاهزا لبدء استخدام IBM Cloud اليوم، قم بالتسجيل هنا.