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

المختبر 8.2 - التوجيه بناءً على المسار

أهداف المختبر​

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

  • تكوين التوجيه بناءً على المسارات.
  • توجيه الحركة إلى تطبيقات مختلفة حسب المسار.
  • فهم أنواع المسارات المختلفة.
  • اختبار التوجيه باستخدام مسارات متعددة.

المدة المقدرة​

45-60 دقيقة

المتطلبات الأساسية​

  • تثبيت وتكوين kubectl.
  • وجود عنقود Kubernetes محلي يعمل مع Ingress Controller.
  • معرفة بـ Ingress (المختبر 8.1).

الجزء 1: نشر تطبيقات متعددة​

سنقوم بنشر تطبيقين مختلفين لاختبار التوجيه بناءً على المسارات.

الخطوة 1.1: نشر تطبيق الواجهة الأمامية​

أنشئ frontend-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
replicas: 2
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
selector:
app: frontend
ports:
- port: 80
targetPort: 80

الخطوة 1.2: نشر تطبيق الخلفية​

أنشئ backend-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
spec:
replicas: 2
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: httpd
image: httpd:2.4
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend
ports:
- port: 80
targetPort: 80

طبق عمليات النشر:

kubectl apply -f frontend-deployment.yaml
kubectl apply -f backend-deployment.yaml

الجزء 2: تكوين Ingress مع التوجيه بناءً على المسار​

الخطوة 2.1: إنشاء Ingress مع مسارات متعددة​

أنشئ ingress-path-based.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-based-ingress
spec:
ingressClassName: nginx
rules:
- host: app.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 80
- path: /backend
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 80

توضيح:

  • /: يوجه إلى الواجهة الأمامية (الصفحة الرئيسية).
  • /api: يوجه إلى الخلفية.
  • /backend: مسار بديل إلى الخلفية.

طبق Ingress:

kubectl apply -f ingress-path-based.yaml

الجزء 3: تخصيص التطبيقات للاختبار​

لتصور التوجيه بشكل أفضل، دعونا نخصص استجابات التطبيقات.

الخطوة 3.1: تخصيص الواجهة الأمامية​

أنشئ ConfigMap للواجهة الأمامية:

apiVersion: v1
kind: ConfigMap
metadata:
name: frontend-config
data:
index.html: |
<!DOCTYPE html>
<html>
<head><title>Frontend Application</title></head>
<body>
<h1>Frontend Application</h1>
<p>أنت في الصفحة الرئيسية (/)</p>
<p><a href="/api">الوصول إلى API</a></p>
</body>
</html>

طبق واربط ConfigMap في الواجهة الأمامية (عدل النشر إذا لزم الأمر).

الخطوة 3.2: تخصيص الخلفية​

أنشئ ConfigMap للخلفية:

apiVersion: v1
kind: ConfigMap
metadata:
name: backend-config
data:
index.html: |
<!DOCTYPE html>
<html>
<head><title>Backend API</title></head>
<body>
<h1>Backend API</h1>
<p>أنت في API (/api أو /backend)</p>
<p>هذا هو خدمة الخلفية</p>
</body>
</html>

الجزء 4: اختبار التوجيه​

الخطوة 4.1: تكوين اسم المضيف​

أضف app.local إلى ملف /etc/hosts الخاص بك (أو ما يعادله في Windows) مشيرًا إلى IP الخاص بـ Ingress Controller.

الخطوة 4.2: اختبار المسارات المختلفة​

اختبر التوجيه:

# الصفحة الرئيسية (يجب أن تذهب إلى الواجهة الأمامية)
curl http://app.local/

# API (يجب أن تذهب إلى الخلفية)
curl http://app.local/api

# الخلفية البديلة (يجب أن تذهب إلى الخلفية)
curl http://app.local/backend

يجب أن ترى استجابات مختلفة حسب المسار.


الجزء 5: فهم pathTypes​

تحدد pathType كيفية مقارنة المسارات:

  • Exact: تطابق المسار بالضبط.
  • Prefix: تطابق البادئة (الأكثر شيوعًا).
  • ImplementationSpecific: يعتمد على تنفيذ Ingress Controller.

مثال مع Exact​

- path: /api/v1
pathType: Exact
backend:
service:
name: api-v1-service
port:
number: 80

الجزء 6: التنظيف​

احذف الموارد:

kubectl delete ingress path-based-ingress
kubectl delete -f frontend-deployment.yaml
kubectl delete -f backend-deployment.yaml
kubectl delete configmap frontend-config backend-config

ملخص المختبر​

في هذا المختبر، قمت بتكوين التوجيه بناءً على المسارات مع Ingress. تعلمت كيفية توجيه الحركة إلى تطبيقات مختلفة حسب مسار URL، واستخدام أنواع pathTypes المختلفة، واختبار التوجيه.


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

المختبر التالي سيعرض لك كيفية تكوين TLS/SSL مع cert-manager لتأمين الاتصالات HTTPS.

المختبر 8.3: TLS/SSL مع Cert-Manager


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