ما Kubernetes Ingress؟

تاريخ النشر 30 أبريل 2020
كمبيوتر محمول بشاشة وردية زاهية بجوار شاشة كبيرة باللون الوردي وماوس على سطح داكن، مع خلفية سوداء مضاءة.
By Ravi Saraswathi

تعريف Kubernetes Ingress

Kubernetes Ingress هو كائن واجهة برمجة تطبيقات (API) يوفر قواعد توجيه لإدارة وصول المستخدمين الخارجيين إلى الخدمات في مجموعة Kubernetes.

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

خيارات لعرض التطبيقات المنشورة في Kubernetes

هناك عدة طرق لعرض تطبيقك خارج مجموعة Kubernetes الخاصة بك، وستحتاج إلى تحديد الطريقة المناسبة بناءً على حالة الاستخدام الخاصة بك. 

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

على غرار الحجيرات والنشر، تعد الخدمات موارد في Kubernetes. توفر الخدمة نقطة وصول واحدة من خارج المجموعة وتسمح لك بالوصول ديناميكيًا إلى مجموعة من الحجيرات المتماثلة. 

بالنسبة إلى الوصول إلى التطبيق الداخلي داخل مجموعة Kubernetes، فإن ClusterIP هي الطريقة المفضلة. إنه إعداد افتراضي في Kubernetes ويستخدم عنوان IP داخليًا للوصول إلى الخدمة.

لعرض خدمة لطلبات الشبكة الخارجية، تعد NodePort وLoadBalancer وIngress خيارات ممكنة. سنلقي نظرة على Ingress أولاً ونقارن بين الخدمات لاحقًا في هذه المقالة.

ما Kubernetes Ingress ولماذا هو مفيد؟

Kubernetes Ingress هو كائن واجهة برمجة تطبيقات (API) يوفر قواعد توجيه لإدارة وصول المستخدمين الخارجيين إلى الخدمات في مجموعة Kubernetes، عادةً عبر HTTPS/HTTP. باستخدام Ingress، يمكنك بسهولة إعداد قواعد لتوجيه حركة المرور من دون إنشاء مجموعة من أدوات موازنة الأحمال أو عرض كل خدمة على العقدة. هذا يجعله الخيار الأفضل للاستخدام في بيئات الإنتاج. 

في بيئات الإنتاج، تحتاج عادة إلى التوجيه المستند إلى المحتوى ودعم بروتوكولات متعددة والمصادقة. يتيح لك Ingress تكوين هذه الإمكانات وإدارتها داخل المجموعة.

يتكون Ingress من كائن Ingress API وIngress Controller. كما تناولنا سابقًا، فإن Kubernetes Ingress هو كائن واجهة برمجة التطبيقات (API) الذي يصف الحالة المطلوبة لعرض الخدمات إلى خارج مجموعة Kubernetes. يُعد Ingress Controller ضروريًا لأنه التنفيذ الفعلي لواجهة برمجة تطبيقات Ingress. تقوم Ingress Controller بقراءة معلومات Ingress Resource ومعالجتها وعادةً ما تعمل كحجيرات داخل المجموعة.

يوفر Ingress ما يلي:

  • عناوين URL التي يمكن الوصول إليها خارجيًا للتطبيقات المنشورة في مجموعة Kubernetes
  • مضيف افتراضي قائم على الاسم ودعم التوجيه المستند إلى URI
  • قواعد موازنة الأحمال وحركة المرور، بالإضافة إلى إنهاء SSL

للاطلاع على نظرة عامة سريعة مصورة لـ Kubernetes Ingress، شاهد الفيديو التالي:

ما Ingress Controller؟

إذا كان Kubernetes Ingress هو كائن واجهة برمجة التطبيقات الذي يوفر قواعد التوجيه لإدارة الوصول الخارجي إلى الخدمات، فإن Ingress Controller هي التنفيذ الفعلي لواجهة برمجة تطبيقات Ingress. عادةً ما تكون Ingress Controller عبارة عن موازن أحمال لتوجيه حركة المرور الخارجية إلى مجموعة Kubernetes الخاصة بك وهي مسؤولة عن خدمات الشبكة L4-L7. 

تشير الطبقة 4 (L4) إلى مستوى الاتصال في مجموعة شبكة OSI—وهي اتصالات خارجية متوازنة الأحمال بطريقة دائرية عبر الحجيرات. تشير الطبقة 7 (L7) إلى مستوى التطبيق في مجموعة OSI—وهي اتصالات خارجية متوازنة الأحمال عبر الحجيرات بناءً على الطلبات. غالبا ما تكون الطبقة 7 مفضلة، ولكن يجب عليك تحديد وحدة تحكم Ingress Controller التي تلبي متطلبات موازنة الأحمال والتوجيه.

Ingress Controller مسؤولة عن قراءة معلومات Ingress Controller ومعالجة تلك البيانات وفقًا لذلك. فيما يلي نموذج لمورد Ingress Resource:

apiVersion: networking.k8s.io/v1beta1
النوع: Ingress 
المواصفات:
  الواجهة الخلفية:
 اسم الخدمة: ServiceName
 رقم المنفذ:<Port Number>

على سبيل القياس، إذا كان Kubernetes Ingress جهاز كمبيوتر، فإن Ingress Controller هو مبرمج يستخدم الكمبيوتر ويتخذ إجراءات. علاوة على ذلك، تعمل قواعد Ingress Rules كمدير يوجه المبرمج للقيام بالعمل باستخدام الكمبيوتر. Ingress Rules هي مجموعة من القواعد لمعالجة حركة مرور HTTP الواردة. يوجه Ingress من دون قواعد كل حركة المرور إلى خدمة خلفية افتراضية واحدة. 

وإذا أمعنا النظر في التفاصيل، فإن وحدة التحكم Ingress Controller هي تطبيق يعمل في مجموعة Kubernetes ويقوم بتكوين أداة موازنة أحمال HTTP وفقًا لموارد Ingress Resources. يمكن أن تكون أداة موازنة الأحمال برنامجًا يعمل في المجموعة أو أداة موازنة أحمال تعتمد على الأجهزة أو السحابة وتعمل خارجيًا. تتطلب أدوات موازنة الأحمال المختلفة تطبيقات مختلفة لوحدة تحكم Ingress Controller.

تتوفر العديد من وحدات تحكم Ingress Controllers في السوق، ومن المهم اختيار وحدة التحكم المناسبة لإدارة حركة المرور والحمل القادم إلى مجموعة Kubernetes الخاصة بك.

IBM DevOps

ما المقصود بعمليات التطوير؟

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

Ingress في مقابل ClusterIP في مقابل NodePort في مقابل LoadBalancer

إن Ingress، وClusterIP، وNodePort، وLoadBalancer كلها طرق لإدخال حركة المرور الخارجية إلى مجموعتك، وكل منها يفعل ذلك بطريقة مختلفة. دعنا نلقي نظرة على كيفية عمل كل منها وأين ستستخدمها.

ClusterIP

ClusterIP هو الخيار المفضل للوصول إلى الخدمة الداخلية ويستخدم عنوان IP داخليًا للوصول إلى الخدمة. تتضمن بعض الأمثلة على الحالات التي قد يكون فيها ClusterIP الخيار الأفضل: تصحيح أخطاء الخدمة في أثناء التطوير والاختبار، وحركة المرور الداخلية، ولوحات المعلومات.

ClusterIP هو الخيار المفضل للوصول إلى الخدمة الداخلية ويستخدم عنوان IP داخليًا للوصول إلى الخدمة. تتضمن بعض الأمثلة على الحالات التي قد يكون فيها ClusterIP الخيار الأفضل: تصحيح أخطاء الخدمة في أثناء التطوير والاختبار، وحركة المرور الداخلية، ولوحات المعلومات.

NodePort

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

NodePort هو جهاز افتراضي (VM) يُستخدم لعرض خدمة على رقم منفذ ثابت. ويُستخدم في المقام الأول لعرض الخدمات في بيئة غير إنتاجية

أداة موازنة الأحمال

تستخدم هذه الطريقة موازن أحمال خارجيًا لعرض الخدمات للإنترنت. يمكنك استخدام LoadBalancer في بيئة إنتاج، ولكن غالبًا ما يفضل استخدام Ingress.

تستخدم هذه الطريقة موازن أحمال خارجيًا لعرض الخدمات للإنترنت. يمكنك استخدام LoadBalancer في بيئة إنتاج، ولكن غالبًا ما يفضل استخدام Ingress.

Ingress

يمكّنك Ingress من دمج قواعد توجيه حركة المرور في مورد واحد ويعمل كجزء من مجموعة Kubernetes. من أسباب تفضيل Kubernetes Ingress لعرض خدمة في بيئة إنتاج ما يلي:

  • يتحكم في توجيه حركة مرور القواعد المحددة في Ingress Resource.
  • يعد Ingress جزءًا من مجموعة Kubernetes ويعمل كحجيرات.
  • تُعد أداة موازنة الأحمال الخارجية مكلفة، وتحتاج إلى إدارة هذا خارج مجموعة Kubernetes. يُدار Kubernetes Ingress من داخل المجموعة.
يمكّنك Ingress من دمج قواعد توجيه حركة المرور في مورد واحد ويعمل كجزء من مجموعة Kubernetes.

في بيئات الإنتاج، يمكنك عادة استخدام Ingress لعرض التطبيقات على الإنترنت. يمكن الوصول إلى التطبيق من الإنترنت عبر المنفذين Port 80 (HTTP) أو Port 443 (HTTPS)، وIngress هو كائن يسمح بالوصول إلى خدمات Kubernetes الخاصة بك من خارج المجموعة. 

تنفيذي

تتيح لك واجهة برمجة تطبيقات Kubernetes Ingress API عرض التطبيقات المنشورة في مجموعة Kubernetes على الإنترنت باستخدام قواعد التوجيه في مصدر واحد. لتطبيق Ingress، تحتاج إلى تكوين وحدة تحكم Ingress Controller في مجموعتك—فهي مسؤولة عن معالجة معلومات Ingress Resource والسماح بحركة المرور بناءً على قواعد Ingress Rules. من المهم اختيار الخدمة المناسبة مع التكوين المناسب لعرض تطبيقك على الإنترنت بناءً على الإرشادات المذكورة أعلاه. 

مؤلف

Ravi Saraswathi

IBM Chief Architect

IBM Blog

حلول ذات صلة
IBM® Instana® Observability

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

استكشف IBM Instana Observability
حلول عمليات التطوير

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

استكشف حلول عمليات التطوير
الخدمات الاستشارية ذات الصلة بالتقنيات السحابية

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

استكشِف الخدمات الاستشارية ذات الصلة بتقنيات السحابة
اتخِذ الخطوة التالية

من اكتشاف المشكلات بشكل استباقي مع IBM Instana إلى الحصول على رؤى في الوقت الفعلي عبر مجموعتك بأكملها، يمكنك الحفاظ على تشغيل التطبيقات السحابية الأصلية بشكل موثوق به.

  1. اكتشِف IBM Instana
  2. استكشف حلول عمليات التطوير