بدأنا سلسلة من المشاركات التي سنعرض فيها بعض الميزات العديدة لشبكة خدمة شبكة Istio Service Mesh مع Red Hat OpenShift و Kubernetes.

الجزء الأول ، اليوم:
- دعنا نفسر مفهوم حاويات Kubernetes الجانبية وصياغة الفكرة المهيمنة لهذه السلسلة من المشاركات: "لست بحاجة إلى تغيير أي شيء في شفرتك" .
- تخيل الشيء الأساسي Istio - قواعد التوجيه. إنهم يبنون جميع الميزات الأخرى لـ Istio ، نظرًا لأن هذه هي القواعد التي تسمح لك بتوجيه حركة المرور إلى خدمات micros ، باستخدام ملفات YAML الخارجية لرمز الخدمة لهذا. ننظر أيضًا إلى مخطط النشر لـ Canary Deployment. مكافأة العام الجديد - 10 الدروس التفاعلية Istio
الجزء الثاني سيخبرك:
- كيف تنفذ Istio Pool Ejection بالتزامن مع Circuit Breaker وتوضح كيف تقوم Istio بإزالة جراب مكسور أو ضعيف الأداء من مخطط التوازن.
- سنقوم بتغطية موضوع Circuit Breaker من أول منشور حول كيفية استخدام Istio هنا. نوضح لك كيفية توجيه حركة المرور والتعامل مع أخطاء الشبكة باستخدام ملفات تكوين YAML وأوامر المحطة دون أدنى تغيير في رمز الخدمة.
الجزء الثالث :
- قصة عن التتبع والمراقبة المدمجة بالفعل أو التي تمت إضافتها بسهولة إلى Istio. سنبين لك كيفية استخدام أدوات مثل Prometheus و Jaeger و Grafana بالاقتران مع تحجيم OpenShift للتحكم بسهولة في بنية خدمات microservice الخاصة بك.
- نحن ننتقل من المراقبة ومعالجة الأخطاء إلى إدخالها في النظام عن قصد. بمعنى آخر ، نتعلم كيفية القيام بحقن الأخطاء دون تغيير الكود المصدري ، وهو أمر مهم للغاية من وجهة نظر الاختبار - لأنه إذا قمت بتغيير الكود نفسه لهذا ، فهناك خطر من إدخال أخطاء إضافية.
أخيرًا ،
في المنشور
الأخير على شبكة خدمات Istio:
- دعنا ننتقل إلى الجانب المظلم. بتعبير أدق ، سوف نتعلم استخدام مخطط Dark Launch عندما يتم نشر الكود واختباره مباشرة على بيانات الإنتاج ، ولكن لا يؤثر على تشغيل النظام. هنا تأتي قدرة Istio على مشاركة حركة المرور بسهولة. وتعد القدرة على إجراء الاختبار على بيانات الإنتاج المباشر دون التأثير على أداء نظام القتال هي الطريقة الأكثر إقناعًا للتحقق من ذلك.
- بدءًا من Dark Launch ، سوف نوضح كيفية استخدام نموذج Canary Deployment لتقليل المخاطر وتبسيط تشغيل كود جديد. Canary Deployment نفسه بعيد عن الأخبار ، لكن Istio يسمح لك بتطبيق هذا المخطط باستخدام ملفات YAML البسيطة.
- في الختام ، سوف نوضح كيفية استخدام Istio Egress لإتاحة الوصول إلى الخدمات لأولئك خارج المجموعات الخاصة بك من أجل استخدام قدرات Istio عند العمل مع الإنترنت.
لذلك ، بدأت ...
أدوات المراقبة والتحكم Istio - كل ما تحتاجه لتنسيق الخدمات المصغرة في شبكة الخدمة .ما هي شبكة خدمة Istio
تنفذ شبكة الخدمة وظائف لمجموعة من الخدمات مثل مراقبة حركة المرور ، والتحكم في الوصول ، والاكتشاف ، والأمن ، والتسامح مع الأخطاء ، وغيرها من الأشياء المفيدة. يسمح لك Istio بالقيام بكل هذا دون أدنى تغيير في رمز الخدمات نفسها. ما هو سر السحر؟ يتم ربط Istio بكل خدمة وكيلها في شكل حاوية جانبية (sidecar عبارة عن عربة دراجة نارية) ، وبعد ذلك تمر كل حركة المرور إلى هذه الخدمة عبر وكيل ، والذي يسترشد بسياسات محددة مسبقًا ، كيف ومتى وإذا كان يجب أن تصل هذه الحركة إلى الخدمة على الإطلاق. يجعل Istio أيضًا من الممكن تطبيق تقنيات DevOps المتقدمة مثل نشر الكناري وقواطع الدائرة وحقن العيوب وغيرها الكثير.
كيف يعمل Istio مع الحاويات و Kubernetes
شبكة خدمة Istio هي تطبيق جانبي لكل ما تحتاجه لإنشاء وإدارة الخدمات المصغرة: المراقبة ، التتبع ، قواطع الدوائر الكهربائية ، التوجيه ، موازنة التحميل ، حقن الأعطال ، إعادة المحاولة ، المهلات الزمنية ، النسخ المتطابق ، التحكم في الوصول ، حدود السرعة والمزيد أكثر من ذلك. رغم أنه يوجد اليوم الكثير من المكتبات لتنفيذ هذه الوظائف مباشرة في الكود ، مع Istio يمكنك الحصول على نفس الشيء دون تغيير أي شيء في التعليمات البرمجية الخاصة بك.
وفقًا لطراز السيارة الجانبية ، يتم تشغيل Istio في حاوية Linux ، والتي توجد في نفس جراب
Kubernetes مع خدمة محكومة وتقوم بحقن واستخراج الوظائف والمعلومات وفقًا لتكوين معين. نؤكد أن هذا هو التكوين الخاص بك ، وأنه يعيش خارج التعليمات البرمجية الخاصة بك. لذلك ، يصبح الرمز أسهل وأقصر بكثير.
والأهم من ذلك ، أن المكون التشغيلي للخدمات الميكروية في هذه الحالة لا يرتبط بأي حال بالرمز نفسه ، مما يعني أنه يمكن نقل تشغيلها بأمان إلى متخصصي تكنولوجيا المعلومات. في الواقع ، لماذا يجب أن يكون المطور مسؤولاً عن قواطع الدائرة وحقن الخطأ؟ الرد - نعم ، ولكن العملية وخلق لهم؟ إذا قمت بإزالة كل هذا من الكود ، فسيتمكن المبرمجون من التركيز بشكل كامل على وظيفة التطبيق. وسوف يصبح الرمز نفسه أقصر وأسهل.
شبكة الخدمة
Istio ، الذي ينفذ وظائف إدارة خدمات microservice خارج التعليمات البرمجية الخاصة به ، هو مفهوم شبكة خدمة Service Mesh. بمعنى آخر ، إنها مجموعة منسقة تتكون من واحد أو أكثر من الثنائيات التي تشكل شبكة من وظائف الشبكة.
كيف يعمل Istio مع الخدمات الصغيرة
إليك كيفية عمل حاويات
النقل الجانبي جنبًا إلى جنب مع
Kubernetes و
Minishift من وجهة نظر عين الطير: قم بإطلاق مثيل لـ Minishift ، وقم بإنشاء مشروع لـ Istio (دعنا نسميه "istio-system") ، وقم بتثبيت وتشغيل جميع المكونات المتعلقة بـ Istio. بعد ذلك ، عند إنشاء المشروعات والقرون ، أضف معلومات التكوين إلى عمليات النشر الخاصة بك ، وستبدأ قرونك في استخدام Istio. الشكل المبسط يبدو كالتالي:
يمكنك الآن تغيير إعدادات Istio إلى ، على سبيل المثال ، تنظيم حقن الأخطاء أو دعم
Canary Deployment أو ميزات أخرى لـ Istio - كل ذلك دون لمس رمز التطبيقات نفسها. افترض أنك تريد إعادة توجيه كل حركة مرور الويب من مستخدمي أكبر عميل (Foo Corporation) إلى إصدار جديد من الموقع. للقيام بذلك ، ما عليك سوى إنشاء قاعدة توجيه Istio والتي ستبحث عن @ foocorporation.com في معرف المستخدم وتنفيذ إعادة التوجيه المناسبة. لجميع المستخدمين الآخرين ، لن يتغير شيء. في غضون ذلك ، سوف تختبر بهدوء الإصدار الجديد من الموقع. ولاحظ ، لا تحتاج إلى جذب المطورين لهذا الغرض.
وعليك أن تدفع غاليا لهذا؟
لا على الإطلاق. يعمل Istio بسرعة كبيرة ، وهو مكتوب في
Go ويخلق حمولة صغيرة جدًا. بالإضافة إلى ذلك ، يتم تعويض الخسارة المحتملة في الإنتاجية عبر الإنترنت عن طريق زيادة إنتاجية المطورين. من الناحية النظرية على الأقل: لا تنس أن وقت التطوير مكلف. بالنسبة لتكلفة البرنامج ، Istio هو برنامج مفتوح المصدر ، بحيث يمكنك الحصول عليه واستخدامه مجانًا.
تعلم لنفسك
قام فريق تجربة Red Hat Developer بتطوير
دليل عملي متعمق لـ Istio (باللغة الإنجليزية). يتم تشغيله على Linux و MacOS و Windows ، ويتم تقديم الرمز في Java و Node.js.
10 دروس تفاعلية على Istio
بلوك 1 - للمبتدئين
مقدمة إلى Istio30 دقيقة
نتعرف على Service Mesh ، وتعرف على كيفية تثبيت Istio في نظام Kubernetes OpenShift.
ابدأنشر Microservices في Istio30 دقيقة
نستخدم Istio لنشر ثلاث خدمات ميكروية باستخدام Spring Boot و Vert.x.
ابدأقطعة 2 - متوسطة
الرصد والتتبع في Istio60 دقيقة
إننا نستكشف أدوات المراقبة المدمجة في Istio والمقاييس المخصصة و OpenTracing من خلال Prometheus و Grafana.
ابدأمن السهل التوجيه في Istio60 دقيقة
تعرف على كيفية إدارة التوجيه في Istio باستخدام قواعد بسيطة.
ابدأقواعد التوجيه المتقدمة60 دقيقة
تقديم توجيه Istio ذكي ، والتحكم في الوصول ، وموازنة التحميل ، والحد من السرعة.
ابدأبلوك 3 - مستخدم متقدم
خطأ حقن في Istio60 دقيقة
ندرس سيناريوهات تجاوز الفشل في التطبيقات الموزعة ، وننشئ أخطاء HTTP وتأخير الشبكة ، ونتعلم كيفية استخدام هندسة الفوضى لاستعادة البيئة.
ابدأقواطع دوائر في استيو30 دقيقة
قم بتثبيت Siege لمواقع اختبار الإجهاد وتعلم كيفية توفير مرونة الواجهة الخلفية مع التكرار وقاطع الدائرة وإخراج البركة.
ابدأالخروج و Istio10 دقائق
نستخدم طرق الخروج لإنشاء قواعد لتفاعل الخدمات الداخلية مع واجهات برمجة التطبيقات والخدمات الخارجية.
ابدأاستيو وكيالي15 دقيقة
نتعلم استخدام Kiali للحصول على صورة عامة لشبكة الخدمة ودراسة تدفق الطلبات والبيانات.
ابدأTLS المتبادل في Istio
15 دقيقة
نقوم بإنشاء بوابة Istio و VirtualService ، ثم ندرس بالتفصيل TLS (mTLS) المتبادل وإعداداته.
ابدأبلوك 3.1 - الانغماس العميق: شبكة خدمة Istio لخدمات Microservices

حول ما الكتاب:
- ما هي شبكة خدمة شبكة الخدمة.
- نظام Istio ودوره في بنية microservice.
- استخدام Istio لحل المشكلات التالية:
- خطأ التسامح.
- التوجيه.
- اختبار الفوضى
- الأمن؛
- جمع القياس عن بعد باستخدام البحث عن المفقودين ، والمقاييس وغرافانا.
تحميل الكتابسلسلة من المقالات حول شبكات الخدمة و Istio
جربه بنفسك
لا تهدف هذه السلسلة من المشاركات إلى توفير انغماس عميق في عالم Istio. نريد فقط أن نقدم لكم المفهوم نفسه وربما نلهمك لتجربة Istio بمفردك. يمكن القيام بذلك مجانًا تمامًا ، وتوفر Red Hat جميع الأدوات اللازمة لبدء استكشاف حاويات OpenShift و Kubernetes و Linux و Istio ، وهي:
Red Hat Developer OpenShift Container Platform ،
ودليل Istio لدينا ، وغيرها من الموارد على موقعنا
الصغير على شبكة الخدمة . لا تؤجل ، ابدأ اليوم!
قواعد توجيه Istio: نوجه طلبات الخدمة إلى حيث نحتاج
تقوم أداة OpenShift و
Kubernetes بعمل ممتاز في توجيه مكالمات خدمة
microservice إلى أجهزة
الكمبيوتر المحمولة الصحيحة. هذا هو أحد أهداف Kubernetes - التوجيه وموازنة التحميل. ولكن ماذا لو كنت بحاجة إلى توجيه أكثر دقة وأكثر تطوراً؟ على سبيل المثال ، لاستخدام إصدارين من microservice في نفس الوقت. كيف تساعد قواعد Istio Route هنا؟
قواعد التوجيه هي قواعد تحدد في الواقع اختيار الطريق. في أي مستوى من تعقيدات النظام ، يظل المبدأ العام لتشغيل هذه القواعد بسيطًا: يتم توجيه الطلبات بناءً على معلمات معينة وقيم رأس HTTP.
لنلقِ نظرة على الأمثلة:
افتراضي Kubernetes: trivial "50 to 50"
في المثال الخاص بنا ، سوف نوضح كيفية استخدام نسختين من microservice في وقت واحد في OpenShift ، دعنا نسميها v1 و v2. يتم تشغيل كل إصدار في جراب Kubernetes الخاص به ، ويعمل افتراضيًا بشكل متوازن بالتوجيه المستدير لروبن. يتلقى كل جراب نصيبه من الطلبات حسب عدد مثيلات الخدمة المصغرة الخاصة به ، بمعنى آخر النسخ المتماثلة. يتيح لك Istio أيضًا تغيير هذا الرصيد يدويًا.
لنفترض أننا نشرنا نسختين من خدمة التوصية الخاصة بنا على OpenShift ، والتوصية-v1 و-التوصية v2.
في التين. يوضح الشكل 1 أنه عند تقديم كل خدمة في حالة واحدة ، يتم التناوب بين الطلبات بالتساوي: 1-2-1-2- ... هذه هي الطريقة التي يعمل بها توجيه Kubernetes افتراضيًا:
توزيع مرجح بين الإصدارات
في التين. يوضح الشكل 2 ما يحدث إذا قمت بزيادة عدد النسخ المتماثلة لخدمة v2 من واحد إلى اثنين (يتم ذلك باستخدام مقياس oc - النسخ = 2 نشر / توصية - v2). كما ترون ، يتم تقسيم الطلبات بين v1 و v2 الآن في علاقة واحد إلى ثلاثة: 1-2-2-1-2-2-2- ...:
تجاهل الإصدار باستخدام Istio
Istio يجعل من السهل تغيير توزيع الاستعلامات بالطريقة التي نحتاجها. على سبيل المثال ، أرسل كل حركة المرور فقط إلى التوصية-v1 باستخدام ملف Istio yaml التالي:
من الضروري هنا الانتباه إلى ذلك: يتم اختيار القرون وفقًا للعلامات. في مثالنا ، يتم استخدام التسمية v1. تعني المعلمة "weight: 100" أن 100٪ من حركة المرور سيتم توجيهها إلى جميع حاضرات الخدمة التي تحمل ملصق v1.
توزيع الدليل بين الإصدارات (Canary Deployment)
علاوة على ذلك ، باستخدام المعلمة الوزن ، يمكنك توجيه حركة المرور إلى كل من القرون ، وتجاهل عدد الحالات التي تعمل في كل منها. على سبيل المثال ، نوجه هنا توجيه 90٪ من عدد الزيارات إلى v1 و 10٪ إلى v2:
توجيه منفصل لمستخدمي الأجهزة المحمولة
في الختام ، سوف نوضح كيفية فرض حركة مرور مستخدمي الهواتف المحمولة على خدمة v2 ، والباقي على v1. للقيام بذلك ، باستخدام التعبيرات العادية ، نقوم بتحليل قيمة وكيل المستخدم في رأس الطلب:
الآن حان دورك
مثال على التعبيرات العادية لتحليل الرؤوس يجب أن يحفزك على البحث عن خياراتك الخاصة لتطبيق قواعد توجيه Istio. علاوة على ذلك ، فإن الاحتمالات هنا واسعة للغاية ، حيث يمكن تشكيل قيم الرؤوس في الكود المصدري للتطبيقات.
وتذكر أن العمليات ، وليس ديف
كل ما أظهرناه في الأمثلة أعلاه يتم دون أدنى تغيير في الكود المصدري ، حسناً ، باستثناء الحالات التي يكون فيها من الضروري تكوين رؤوس طلبات خاصة. سيكون Istio مفيدًا لكل من المطورين الذين ، على سبيل المثال ، سيكونون قادرين على استخدامه في مرحلة الاختبار ، وللمتخصصين في تشغيل أنظمة تكنولوجيا المعلومات ، الذين سيساعدهم كثيرًا في الإنتاج.
لذلك ،
دعونا نكرر الفكرة الساطعة في هذه السلسلة من المنشورات:
لست بحاجة إلى تغيير أي شيء في الكود . لا حاجة لجمع صور جديدة أو إطلاق حاويات جديدة. كل هذا يتم تنفيذه خارج الكود.
بدوره على الخيال
فقط تخيل وجهات نظر تحليل العنوان مع تعبيرات منتظمة. هل تريد إعادة توجيه أكبر عميل لديك إلى إصدار خاص من خدمات
microservices الخاصة بك؟ من السهل! هل تحتاج إلى إصدار منفصل لمتصفح Chrome؟ لا مشكلة! يمكنك توجيه حركة المرور من قبل أي تقريبا من خصائصه.
جربه بنفسك
القراءة عن Istio و Kubernetes و OpenShift شيء واحد ، لكن لماذا لا تلمسه بيديك؟ قام فريق
Red Hat Developer Program بإعداد دليل مفصل (باللغة الإنجليزية) يساعدك على إتقان هذه التقنيات بسرعة. الدليل أيضًا مفتوح المصدر بنسبة 100٪ ، لذا فهو متاح للجمهور. يعمل الملف على نظام التشغيل macOS و Linux و Windows ، ويكون الكود المصدري في إصدارات في Java و node.js (الإصدارات باللغات الأخرى ستكون قريبًا). ما عليك سوى فتح مستودع
Red Hat Developer Demo git المناسب في متصفحك.
في المنشور التالي: نحل المشاكل بشكل جميل
لقد شاهدت اليوم ما هي قواعد التوجيه الخاصة بـ Istio. تخيل الآن نفس الشيء ، ولكن فقط فيما يتعلق بمعالجة الأخطاء. هذا هو ما سنتحدث عنه في المنشور التالي.