Ingress للوصول الخارجي
اضبط Ingress لإدارة الوصول الخارجي إلى الخدمات، مع توفير توجيه HTTP/S وموازنة الحمل
Ingress للوصول الخارجي درس مجاني في Kubernetes Basics على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kubernetes Basics، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.
ما بعد NodePort وLoadBalancer
استكشفنا أنواعًا مختلفة من Kubernetes Service، مثل NodePort وLoadBalancer، لإتاحة التطبيقات خارجيًا.
وعلى الرغم من فائدتهما، فقد يصبح استخدامهما معقدًا عند إدارة متطلبات وصول خارجية معقدة، خصوصًا عندما تحتاجون إلى استضافة العديد من التطبيقات أو واجهات API على عنوان IP واحد مع قواعد توجيه محددة.
هنا يأتي دور Ingress، الذي يقدّم حلًا أكثر قوة ومرونة.
مقدمة إلى Kubernetes Ingress
Ingress هو كائن API في Kubernetes يدير الوصول الخارجي إلى الخدمات في cluster، وبشكل أساسي لحركة مرور HTTP وHTTPS.
- يعمل كنقطة دخول واحدة للطلبات الخارجية.
- يتيح توجيه HTTP/S استنادًا إلى أسماء المضيفين أو مسارات URL.
- يمكنه أيضًا توفير ميزات مثل إنهاء SSL/TLS وموازنة التحميل.
يمكنكم اعتبار Ingress وحدة تحكم ذكية بحركة المرور، توجّه حركة مرور الويب إلى Services الداخلية الصحيحة.
Ingress Controller
إن Ingress resource نفسه ليس سوى مجموعة من القواعد؛ فهو لا يتولى معالجة حركة المرور مباشرةً. ولكي يعمل Ingress، تحتاجون إلى تشغيل Ingress Controller في cluster.
يراقب Ingress Controller موارد Ingress ويضبط موازن تحميل خارجيًا (أو reverse proxy) وفقًا للقواعد المحددة.
تشمل Ingress Controllers الشائعة Nginx وTraefik، بالإضافة إلى وحدات خاصة بموفّري الخدمات السحابية، مثل GCE Ingress لخدمة Google Cloud أو AWS Load Balancer Controller.
كيفية عمل قواعد Ingress
يعرّف Ingress قواعد تربط الطلبات الخارجية الواردة بخدمات backend محددة داخل cluster. وتحدّد هذه القواعد عادةً ما يلي:
- Host: اسم النطاق (مثل
www.my-app.com). - Path: مسار URL (مثل
/apiو/blog). - Backend Service: Kubernetes Service والمنفذ اللذان ينبغي توجيه حركة المرور إليهما.
يقيّم Ingress Controller هذه القواعد مع كل طلب وارد لتحديد الوجهة الصحيحة.
إنشاء ملف YAML لـ Ingress
مثل موارد Kubernetes الأخرى، يُعرَّف Ingress باستخدام بيان YAML. إليكم بنية أساسية توضّح الحقول الرئيسية:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-web-service
port:
number: 80Ingress بسيط قائم على المسار
لننشئ Ingress resource يوجّه جميع حركة المرور للمسار الجذر (/) للنطاق myapp.example.com إلى Service باسم my-web-service على المنفذ 80.
تأكدوا من تشغيل Deployment وService باسم my-web-service في cluster لديكم قبل تطبيق Ingress هذا.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: basic-app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-web-service
port:
number: 80نشر Ingress
لنشر Ingress resource، احفظوا YAML في ملف (مثل basic-ingress.yaml) واستخدموا kubectl apply:
kubectl apply -f basic-ingress.yaml
يمكنكم التحقق من حالة Ingress باستخدام kubectl get ingress. بعد ذلك، سيضبط Ingress Controller موازن التحميل الخارجي استنادًا إلى هذه القواعد.
للاختبار، ستحتاجون عادةً إلى تحديث ملف /etc/hosts المحلي لديكم (أو DNS) لتوجيه myapp.example.com إلى عنوان IP الخارجي لـ Ingress Controller.
مثال على التوجيه القائم على المضيف
يُعد Ingress مناسبًا تمامًا لاستضافة تطبيقات متعددة على عنوان IP خارجي واحد، باستخدام أسماء مضيفين مختلفة. في هذا المثال، يُوجّه app1.example.com إلى service-app1، بينما يُوجّه app2.example.com إلى service-app2.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: host-routing-ingress
spec:
rules:
- host: app1.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-app1
port:
number: 80
- host: app2.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-app2
port:
number: 80مسارات متعددة، ومضيف واحد
يمكنكم أيضًا توجيه مسارات URL مختلفة على اسم المضيف نفسه إلى خدمات backend مختلفة. وهذا مثالي لبنى microservices أو لأقسام مختلفة من تطبيق واحد.
على سبيل المثال، تنتقل الطلبات إلى api.example.com/users إلى users-service، بينما تنتقل الطلبات إلى api.example.com/products إلى products-service.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-routing-ingress
spec:
rules:
- host: api.example.com
http:
paths:
- path: /users
pathType: Prefix
backend:
service:
name: users-service
port:
number: 80
- path: /products
pathType: Prefix
backend:
service:
name: products-service
port:
number: 80تحقق من الغرض من Ingress
ما الفوائد الأساسية لاستخدام Kubernetes Ingress؟
مراجعة: Ingress للتوجيه الذكي
أحسنتم! لقد تعلّمتم كيفية استخدام Kubernetes Ingress، وهو مكوّن أساسي لإدارة تفاعل المستخدمين الخارجيين مع تطبيقاتكم.
- يوفّر Ingress توجيهًا مرنًا لـ HTTP/S استنادًا إلى أسماء المضيفين ومسارات URL.
- يتطلب Ingress Controller (مثل Nginx) لمراقبة قواعد Ingress وضبط التوجيه.
- يبسّط إتاحة خدمات متعددة عبر عنوان IP خارجي واحد، مما يجعل cluster أكثر كفاءة وأسهل في الإدارة.
يُعد إتقان Ingress أمرًا أساسيًا لبناء تطبيقات cloud-native قوية وسهلة الوصول!
الأسئلة الشائعة
هل درس «Ingress للوصول الخارجي» مجاني؟
نعم — نص درس «Ingress للوصول الخارجي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kubernetes Basics، انتقل إلى CoddyKit PRO. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.
ماذا ستتعلم في «Ingress للوصول الخارجي»؟
اضبط Ingress لإدارة الوصول الخارجي إلى الخدمات، مع توفير توجيه HTTP/S وموازنة الحمل تتمرن على Kubernetes Basics مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kubernetes Basics؟
لا تُشترط خبرة سابقة. Kubernetes Basics على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «Ingress للوصول الخارجي»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kubernetes Basics هذا؟
نعم. كل درس في Kubernetes Basics يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إتاحة التطبيقات باستخدام Services
- أنواع Service: ClusterIP وNodePort وLoadBalancer
- Ingress للوصول الخارجي
- DNS واكتشاف الخدمات