انتقل إلى المحتوى الرئيسي

الفصل 8.1 - مقدمة إلى Ingress

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • فهم ما هو Ingress ولماذا يتم استخدامه
  • التمييز بين Ingress وطرق التعرض الأخرى
  • فهم بنية Ingress
  • تحديد حالات الاستخدام المناسبة
  • فهم الفوائد والقيود

مقدمة​

يمكن تعريض التطبيقات في Kubernetes بطرق متعددة. Ingress هو الطريقة الموصى بها لتعريض خدمات HTTP/HTTPS من خارج العنقود.


ما هو Ingress؟​

Ingress يعرض خدمات HTTP و HTTPS من خارج العنقود إلى الخدمات داخل العنقود. يوفر:

  • توجيه مبني على اسم المضيف أو المسار
  • إنهاء TLS/SSL
  • توزيع الحمل
  • نقطة دخول واحدة لعدة خدمات

بنية Ingress​

المكونات​

  1. Ingress Resource: يحدد قواعد التوجيه
  2. Ingress Controller: Pod ينفذ القواعد (NGINX، Traefik، إلخ)

مقارنة الطرق​

NodePort​

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080

الفوائد:

  • بسيط
  • لا يعتمد على جهات خارجية

العيوب:

  • منافذ مرتفعة (30000-32767)
  • لا يوجد توجيه حسب اسم المضيف
  • لا يوجد TLS مدمج
  • منفذ لكل خدمة

LoadBalancer​

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: LoadBalancer
ports:
- port: 80

الفوائد:

  • IP خارجي مخصص
  • تكامل سحابي أصلي

العيوب:

  • تكلفة (LB لكل خدمة)
  • لا يوجد توجيه حسب اسم المضيف
  • لا يوجد TLS مدمج

Ingress​

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
backend:
service:
name: web-service
port:
number: 80

الفوائد:

  • توجيه حسب اسم المضيف/المسار
  • TLS مدمج
  • نقطة دخول واحدة
  • اقتصادي (LB واحد لعدة خدمات)

العيوب:

  • يتطلب Ingress Controller
  • HTTP/HTTPS فقط

حالات الاستخدام​

1. متعدد المجالات​

تعريض عدة مجالات باستخدام LoadBalancer واحد:

2. التوجيه المبني على المسار​

توجيه مبني على المسار:

example.com/api     → خدمة API
example.com/web → خدمة الويب
example.com/admin → خدمة الإدارة

3. إنهاء TLS/SSL​

إدارة مركزية لشهادات SSL/TLS.

4. توزيع الحمل​

توزيع الحمل بين عدة مثيلات.


مثال أساسي​

الخطوة 1: الخدمة​

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080

الخطوة 2: Ingress​

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80

النتيجة: example.com يوجه إلى web-service.


Ingress Controllers​

Ingress Controller هو Pod يراقب موارد Ingress ويقوم بتكوين موزع الحمل.

المتحكمات الشائعة​

  1. NGINX Ingress Controller

    • الأكثر شيوعًا
    • أداء عالي
    • العديد من الميزات
  2. Traefik

    • بسيط وحديث
    • تكوين تلقائي
    • لوحة تحكم مدمجة
  3. HAProxy Ingress

    • أداء عالي جدًا
    • تكوين متقدم
  4. Istio Gateway

    • لشبكة الخدمات
    • ميزات متقدمة

فوائد Ingress​

1. اقتصادي​

LoadBalancer واحد لعدة خدمات:

2. توجيه متقدم​

  • حسب اسم المضيف
  • حسب المسار
  • حسب الرؤوس
  • إعادة الكتابة وإعادة التوجيه

3. TLS مركزي​

إدارة الشهادات على مستوى Ingress.

4. مرونة​

تكوين إعلاني باستخدام YAML.


القيود​

1. HTTP/HTTPS فقط​

Ingress يدعم فقط HTTP و HTTPS. لاستخدام TCP/UDP، استخدم NodePort أو LoadBalancer.

2. يتطلب Controller​

يجب تثبيت Ingress Controller في العنقود.

3. اعتماد خارجي​

للوصول الخارجي، لا يزال LoadBalancer أو NodePort ضروريًا.


ملخص​

في هذا الفصل، تعلمت:

Ingress: التعرض لـ HTTP/HTTPS مع توجيه متقدم
البنية: Ingress Resource + Ingress Controller
الفوائد: توجيه حسب اسم المضيف/المسار، TLS، اقتصادي
المقارنة: أفضل من NodePort/LoadBalancer لـ HTTP
حالات الاستخدام: متعدد المجالات، التوجيه المبني على المسار، TLS
القيود: HTTP/HTTPS فقط، يتطلب Controller
Ingress Controllers: NGINX، Traefik، HAProxy، Istio


الخطوات التالية​

الفصل 8.2: Ingress Controller (التثبيت والتكوين)
الفصل 8.3: التوجيه و TLS


تم إنشاء الفصل في: ديسمبر 2024