سلسلة من المنشورات على Istio Service Mesh

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

سلسلة من المنشورات على Istio Service Mesh

الجزء الأول اليوم:

  • دعونا نشرح مفهوم حاويات Kubernetes الجانبية وصياغة الفكرة المهيمنة لهذه السلسلة من المشاركات: "لست بحاجة إلى تغيير أي شيء في التعليمات البرمجية الخاصة بك".
  • لنتخيل الشيء الأساسي في Istio - قواعد التوجيه. جميع ميزات Istio الأخرى مبنية عليها ، نظرًا لأن القواعد هي التي تسمح لك بتوجيه حركة المرور إلى الخدمات المصغرة باستخدام ملفات YAML خارج رمز الخدمة. نأخذ في الاعتبار أيضًا مخطط نشر Canary Deployment. مكافأة العام الجديد - 10 دروس Istio تفاعلية


سيخبرك الجزء الثاني ، الذي سيصدر قريبًا:

  • كيف ينفذ Istio إخراج التجمع بالاشتراك مع قاطع الدائرة ويوضح كيف يسمح لك Istio بإزالة الكبسولة الخاملة أو ضعيفة الأداء من مخطط التوازن.
  • سننظر أيضًا في موضوع Circuit Breaker من المنشور الأول حول كيفية استخدام Istio هنا. سنوضح كيفية توجيه حركة المرور ومعالجة أخطاء الشبكة دون أدنى تغيير في رمز الخدمة باستخدام ملفات تكوين YAML والأوامر الطرفية.

الجزء الثالث:

  • قصة حول التتبع والمراقبة التي تم إنشاؤها بالفعل أو تمت إضافتها بسهولة إلى Istio. سنوضح لك كيفية استخدام أدوات مثل Prometheus و Jaeger و Grafana جنبًا إلى جنب مع توسيع OpenShift لإدارة بنية الخدمات المصغرة الخاصة بك بسهولة.
  • نحن ننتقل من مراقبة الأخطاء ومعالجتها إلى إدخالها في النظام عن قصد. بمعنى آخر ، نتعلم القيام بحقن الخطأ دون تغيير الكود المصدري ، وهو أمر مهم جدًا من وجهة نظر الاختبار - لأنه إذا قمت بتغيير الكود نفسه لهذا الغرض ، فهناك خطر حدوث أخطاء إضافية.

أخيرًا ، في المنشور الأخير على Istio Service Mesh:

  • دعنا نذهب إلى الجانب المظلم. بتعبير أدق ، سوف نتعلم استخدام مخطط Dark Launch ، عندما يتم نشر الكود واختباره مباشرة على بيانات الإنتاج ، لكنه لا يؤثر على تشغيل النظام بأي شكل من الأشكال. هذا هو المكان الذي تكون فيه قدرة Istio على تقسيم حركة المرور في متناول اليد. وتعد القدرة على إجراء اختبار على بيانات الإنتاج الحية دون التأثير على تشغيل نظام القتال بأي شكل من الأشكال الطريقة الأكثر إقناعًا للتحقق.
  • بناءً على Dark Launch ، سنوضح لك كيفية استخدام نموذج Canary Deployment لتقليل المخاطر وتسهيل نشر كود جديد. Canary Deployment بحد ذاته ليس جديدًا ، لكن Istio يسمح لك بتنفيذ هذا المخطط باستخدام ملفات YAML البسيطة فقط.
  • في الختام ، سنوضح كيفية استخدام Istio Egress لمنح الوصول إلى الخدمات لمن هم خارج مجموعاتك من أجل استخدام إمكانات Istio عند العمل مع الإنترنت.

لذا ، نذهب ...

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

ما هو Istio Service Mesh

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

كيف يعمل Istio مع الحاويات و Kubernetes

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

وفقًا للنموذج الجانبي ، يعمل Istio في حاوية Linux ، الموجودة في حاوية واحدة Kubernetes-pod مع خدمة مضبوطة وتنفذ (حقن) وتستخرج (تستخرج) الوظائف والمعلومات وفقًا للتكوين المحدد. نؤكد أن هذا هو التكوين الخاص بك ، وأنه موجود خارج التعليمات البرمجية الخاصة بك. لذلك ، يصبح الرمز أبسط وأقصر بكثير.

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

شبكة الخدمة

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

كيف يعمل Istio مع الخدمات المصغرة

هذه هي الطريقة التي تعمل بها الحاويات الجانبية جنبًا إلى جنب مع Kubernetes и مينيشيفت عرض عين الطائر: قم بتشغيل مثيل Minishift ، وإنشاء مشروع Istio (دعنا نسميه "نظام istio") ، وقم بتثبيت وتشغيل جميع المكونات المتعلقة بـ Istio. بعد ذلك ، أثناء إنشاء المشاريع والبودات ، أضف معلومات التكوين إلى عمليات النشر الخاصة بك وستبدأ البودات في استخدام Istio. يبدو الرسم التخطيطي المبسط كما يلي:

سلسلة من المنشورات على Istio Service Mesh

يمكنك الآن تغيير إعدادات Istio إلى ، على سبيل المثال ، تنظيم حقن الخطأ والدعم انتشار الكناري أو ميزات Istio الأخرى - وكل هذا دون لمس رمز التطبيقات نفسها. لنفترض أنك تريد إعادة توجيه كل حركة مرور الويب من مستخدمي أكبر عميل لديك (Foo Corporation) إلى إصدار جديد من موقعك. كل ما عليك فعله هو إنشاء قاعدة توجيه Istio تبحث عن @ foocorporation.com في معرف المستخدم وتعيد التوجيه وفقًا لذلك. بالنسبة لجميع المستخدمين الآخرين ، لن يتغير شيء. في غضون ذلك ، ستختبر الإصدار الجديد من الموقع بهدوء. ولاحظ أنه ليس من الضروري على الإطلاق إشراك المطورين لهذا الغرض.

وكم عليك أن تدفع مقابل ذلك؟

مُطْلَقاً. Istio سريع جدًا ، إنه مكتوب فيه Go ويخلق عبءًا صغيرًا جدًا. بالإضافة إلى ذلك ، يتم تعويض الخسارة المحتملة في الإنتاجية عبر الإنترنت من خلال زيادة إنتاجية المطورين. على الأقل من الناحية النظرية: لا تنس أن وقت المطورين ثمين. من حيث تكاليف البرامج ، Istio هو برنامج مفتوح المصدر ، لذا فهو مجاني للحصول عليه واستخدامه.

إتقانها بنفسك

طور فريق تجربة مطوري ريد هات تدريبًا عمليًا معمقًا توجيه بواسطة Istio (باللغة الإنجليزية). يعمل على Linux و MacOS و Windows ، ويأتي الكود بنكهات Java و Node.js.

10 دروس Istio تفاعلية

الكتلة 1 - للمبتدئين

مقدمة في Istio
دقائق 30
نتعرف على Service Mesh ، وتعلم كيفية تثبيت Istio في مجموعة Kubernetes OpenShift.
بعد

نشر الخدمات المصغرة في Istio
دقائق 30
نستخدم Istio لنشر ثلاث خدمات مصغرة مع Spring Boot و Vert.x.
بعد

بلوك 2 - المستوى المتوسط

المراقبة والتعقب في Istio
دقائق 60
استكشف أدوات المراقبة المضمنة والمقاييس المخصصة و OpenTracing من Istio عبر Prometheus و Grafana.
بعد

توجيه بسيط في Istio
دقائق 60
تعرف على كيفية التحكم في التوجيه في Istio باستخدام قواعد بسيطة.
بعد

قواعد التوجيه المتقدمة
دقائق 60
نتعرف على التوجيه الذكي في Istio والتحكم في الوصول وموازنة التحميل وتحديد المعدل.
بعد

الكتلة 3 - مستخدم متقدم

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

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

الخروج و Istio
دقائق 10
نستخدم مسارات الخروج لإنشاء قواعد لتفاعل الخدمات الداخلية مع واجهات برمجة التطبيقات والخدمات الخارجية.
بعد

إستيو وكيالي
دقائق 15
تعلم كيفية استخدام Kiali للحصول على صورة كبيرة لشبكة الخدمة ودراسة تدفق الطلبات والبيانات.
بعد

بروتوكول TLS المتبادل في Istio
دقائق 15
نقوم بإنشاء بوابة Istio و VirtualService ، ثم نقوم بدراسة TLS المتبادلة (mTLS) وإعداداتها بالتفصيل.
بعد

المربع 3.1 - الغوص العميق: Istio Service Mesh for Microservices

سلسلة من المنشورات على Istio Service Mesh
ماهو موضوع الكتاب:

  • ما هي شبكة الخدمة.
  • نظام Istio ودوره في هندسة الخدمات المصغرة.
  • استخدام Istio للمهام التالية:
    • التسامح مع الخطأ؛
    • التوجيه.
    • اختبار الفوضى
    • الأمن؛
    • مجموعة من القياس عن بعد باستخدام التتبع والمقاييس و Grafana.

لتحميل كتاب

سلسلة من المقالات حول شبكات الخدمة و Istio

جربه بنفسك

لا تهدف سلسلة المنشورات هذه إلى تقديم نظرة عميقة في عالم Istio. نريد فقط أن نقدم لك المفهوم نفسه وربما نلهمك لتجربة Istio بنفسك. إنه مجاني تمامًا ، وتوفر Red Hat جميع الأدوات التي تحتاجها لبدء استخدام OpenShift و Kubernetes وحاويات Linux و Istio ، بما في ذلك: منصة حاوية OpenShift لمطور Red Hat, دليلنا إلى Istio وغيرها من الموارد على موقعنا خدمة الموقع الصغير شبكة. لا تتأخر ، ابدأ اليوم!

قواعد توجيه Istio: توجيه طلبات الخدمة إلى المكان الصحيح

فتح и Kubernetes ممتازة في التعامل مع الخدمات المصغرة موجهة إلى القرون المطلوبة. هذا هو أحد أغراض وجود Kubernetes - التوجيه وموازنة التحميل. ولكن ماذا لو كنت بحاجة إلى توجيه أكثر دقة وتعقيدًا؟ على سبيل المثال ، لاستخدام نسختين من خدمة مصغرة في نفس الوقت. كيف يمكن لقواعد Istio Route المساعدة هنا؟

قواعد التوجيه هي القواعد التي تحدد ، في الواقع ، اختيار المسار. بغض النظر عن مدى تعقيد النظام ، يظل المبدأ العام وراء هذه القواعد بسيطًا: يتم توجيه الطلبات بناءً على معلمات معينة وقيم رأس HTTP.
لنلقِ نظرة على الأمثلة:

افتراضي Kubernetes: تافه "50/50"

في مثالنا ، سوف نوضح كيفية استخدام نسختين من الخدمات المصغرة في OpenShift في نفس الوقت ، دعنا نسميها v1 و v2. يعمل كل إصدار في جراب Kubernetes الخاص به ، ويعمل التوجيه الدائري الدائري المتوازن هنا افتراضيًا. يتلقى كل جراب نصيبه من الطلبات وفقًا لعدد مثيلات الخدمات المصغرة الخاصة به ، وبعبارة أخرى ، النسخ المتماثلة. يسمح لك Istio بتغيير هذا الرصيد يدويًا.

لنفترض أننا نشرنا نسختين من خدمة التوصيات الخاصة بنا ، التوصية v1 والتوصية v2 ، على OpenShift.
على التين. يوضح الشكل 1 أنه عندما يتم تمثيل كل خدمة في مثيل واحد ، فإن الطلبات يتم تداخلها بالتساوي فيما بينها: 1-2-1-2- ... هذه هي الطريقة التي يعمل بها توجيه Kubernetes افتراضيًا:

سلسلة من المنشورات على Istio Service Mesh

التوزيع المرجح بين الإصدارات

على التين. يوضح الشكل 2 ما يحدث إذا قمت بزيادة عدد النسخ المتماثلة للخدمة v2 من واحد إلى اثنين (يتم ذلك باستخدام مقياس oc - النسخ المتماثلة = 2 أمر النشر / التوصية v2). كما ترى ، الطلبات بين v1 و v2 مقسمة الآن في علاقة واحد إلى ثلاثة: 1-2-2-1-2-2- ...:

سلسلة من المنشورات على Istio Service Mesh

تجاهل الإصدار مع Istio

يجعل Istio من السهل تغيير توزيع الطلبات بالطريقة التي نحتاجها. على سبيل المثال ، أرسل كل حركة المرور فقط إلى توصية v1 مع ملف Istio yaml التالي:

سلسلة من المنشورات على Istio Service Mesh

هنا تحتاج إلى الانتباه إلى هذا: يتم اختيار القرون وفقًا للتسميات. في مثالنا ، تم استخدام التسمية v1. تعني المعلمة "weight: 100" أنه سيتم توجيه 100٪ من حركة المرور إلى جميع أجزاء الخدمة التي تحمل التصنيف v1.

التوزيع التوجيهي بين الإصدارات (Canary Deployment)

علاوة على ذلك ، باستخدام معلمة الوزن ، يمكنك توجيه حركة المرور إلى كلا الجهازين ، مع تجاهل عدد مثيلات الخدمات المصغرة التي تعمل في كل منهما. على سبيل المثال ، نوجه 90٪ من حركة المرور بشكل مباشر إلى v1 و 10٪ إلى v2:

سلسلة من المنشورات على Istio Service Mesh

توجيه مستخدم متنقل منفصل

في الختام ، سنوضح كيفية إجبار مستخدمي الهواتف المحمولة على توجيهها إلى خدمة الإصدار 2 ، وجميع المستخدمين الآخرين إلى الإصدار 1. للقيام بذلك ، نستخدم التعبيرات العادية لتحليل قيمة وكيل المستخدم في رأس الطلب:

سلسلة من المنشورات على Istio Service Mesh

الان حان دورك

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

وتذكر أن Ops ، وليس Dev

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

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

شغل خيالك

فقط تخيل احتمالات تحليل العناوين بالتعبيرات العادية. تريد إعادة توجيه أكبر عميل لديك إلى إصدار خاص من الخدمات المصغرة؟ بسهولة! هل تحتاج إلى إصدار منفصل لمتصفح Chrome؟ لا مشكلة! يمكنك توجيه حركة المرور وفقًا لأي من خصائصها تقريبًا.

جربه بنفسك

القراءة عن Istio و Kubernetes و OpenShift شيء واحد ، ولكن لماذا لا تلمسها بنفسك؟ فريق برنامج مطوري ريد هات أعدت دليلاً مفصلاً (باللغة الإنجليزية) سيساعدك على إتقان هذه التقنيات في أسرع وقت ممكن. الدليل أيضًا مفتوح المصدر بنسبة 100٪ ، لذا فهو في المجال العام. يعمل الملف على macOS و Linux و Windows ، ويتوفر كود المصدر في إصدارات Java و node.js (المزيد من اللغات قريبًا). ما عليك سوى فتح مستودع git المناسب في متصفحك عرض توضيحي لمطور ريد هات.

في المنشور التالي: حل المشاكل بشكل جميل

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

المصدر: www.habr.com

إضافة تعليق