Ingress و Gateway API
المشكلة
Section titled “المشكلة”Service من نوع ClusterIP داخلي. لكن المستخدم خارج Cluster يحتاج الوصول إلى التطبيق من المتصفح.
هناك أكثر من طريقة:
NodePortللتجارب البسيطة.LoadBalancerفي Cloud.Ingressلتوجيه HTTP/HTTPS.Gateway APIكاتجاه أحدث وأكثر مرونة.
Ingress
Section titled “Ingress”Ingress يحدد قواعد HTTP:
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: webspec: rules: - host: web.local http: paths: - path: / pathType: Prefix backend: service: name: web port: number: 80لكن Ingress يحتاج Ingress Controller مثل NGINX Ingress أو Traefik.
في Production، يجب استخدام HTTPS. عادة يتم ذلك بإضافة Secret يحتوي certificate، أو باستخدام cert-manager لإصدار الشهادات تلقائيا.
Gateway API
Section titled “Gateway API”Gateway API هدفه أن يكون أوضح وأكثر قابلية للتوسع من Ingress، خصوصا في البيئات الكبيرة. ستراه كثيرا مع Service Mesh و platform teams.
أهم الموارد:
GatewayClassGatewayHTTPRoute
متى أستخدم ماذا؟
Section titled “متى أستخدم ماذا؟”| الحالة | الاختيار |
|---|---|
| تجربة محلية سريعة | port-forward |
| فتح خدمة داخل Cloud ببساطة | LoadBalancer |
| تطبيقات HTTP متعددة على نفس المدخل | Ingress |
| منصة متقدمة أو routing معقد | Gateway API |
Lab: تشغيل Ingress محلي
الهدف: فتح Service باستخدام hostname محلي.
- ثبت Ingress Controller حسب أداة Cluster التي تستخدمها.
- طبق Ingress.
- أضف
web.localإلى ملف hosts لو لزم. - افتح
http://web.local.