المختبر 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