الفصل 8.1 - مقدمة إلى Ingress
أهداف التعلم
في نهاية هذا الفصل، ستكون قادرًا على:
- فهم ما هو Ingress ولماذا يتم استخدامه
- التمييز بين Ingress وطرق التعرض الأخرى
- فهم بنية Ingress
- تحديد حالات الاستخدام المناسبة
- فهم الفوائد والقيود
مقدمة
يمكن تعريض التطبيقات في Kubernetes بطرق متعددة. Ingress هو الطريقة الموصى بها لتعريض خدمات HTTP/HTTPS من خارج العنقود.
ما هو Ingress؟
Ingress يعرض خدمات HTTP و HTTPS من خارج العنقود إلى الخدمات داخل العنقود. يوفر:
- توجيه مبني على اسم المضيف أو المسار
- إنهاء TLS/SSL
- توزيع الحمل
- نقطة دخول واحدة لعدة خدمات
بنية Ingress
المكونات
- Ingress Resource: يحدد قواعد التوجيه
- 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 ويقوم بتكوين موزع الحمل.
المتحكمات الشائعة
-
NGINX Ingress Controller
- الأكثر شيوعًا
- أداء عالي
- العديد من الميزات
-
Traefik
- بسيط وحديث
- تكوين تلقائي
- لوحة تحكم مدمجة
-
HAProxy Ingress
- أداء عالي جدًا
- تكوين متقدم
-
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