הגדרת מסלולים ודומיינים

בדף הזה מוסבר איך מסלולים ודומיינים פועלים ב-Kf, ואיך מפתחים ואדמינים מגדירים מסלולים ודומיינים לאפליקציה שנפרסה באשכול Kf.

כדי להעניק גישה חיצונית לאפליקציה, צריך ליצור דומיין ומסלולים.

ניתוב פנימי

אפליקציות Kf יכולות לתקשר באופן פנימי עם אפליקציות אחרות באשכול ישירות באמצעות רשת אריג שמסופקת על ידי Cloud Service Mesh בלי לצאת מרשת האשכול. כברירת מחדל, כל התעבורה מוצפנת באמצעות TLS הדדי.

לכל האפליקציות שנפרסות באשכול Kf יש נקודת קצה פנימית שמוגדרת כברירת מחדל. אפשר להשתמש בכתובת app-name.space-name.svc.cluster.local לתקשורת פנימית בין אפליקציות. כדי להשתמש בכתובת הפנימית הזו, לא נדרשים שלבים נוספים. פרוטוקול TLS הדדי מופעל כברירת מחדל עבור מסלולים פנימיים. חשוב לדעת: אפשר לגשת לכתובת הפנימית הזו רק מה-pods שמריצים את האפליקציות, ולא מחוץ לאשכול.

איזון עומסים של אפליקציות

תעבורת הנתונים מנותבת על ידי Istio למופעים תקינים של אפליקציה באמצעות מדיניות round-robin. בשלב הזה, אי אפשר לשנות את המדיניות הזו.

יכולות של מסלולים

המסלולים אומרים לשער הכניסה של האשכול לאן להעביר את התנועה ומה לעשות אם אין אפליקציות זמינות בכתובת הנתונה. כברירת מחדל, אם אין אפליקציה שזמינה במסלול מסוים והמסלול מקבל בקשה, הוא מחזיר קוד סטטוס HTTP 503.

מסלולים מורכבים משלושה חלקים: מארח, דומיין ונתיב. לדוגמה, ב-URI payroll.mydatacenter.example.com/login:

  • המארח/ת הוא/היא payroll
  • הדומיין הוא mydatacenter.example.com
  • הנתיב הוא /login

מסלולים חייבים להכיל דומיין, אבל המארח והנתיב הם אופציונליים. כמה מסלולים יכולים לשתף את אותו מארח ואותו דומיין אם הם מציינים נתיבים שונים. כמה אפליקציות יכולות לחלוק את אותו מסלול, והתנועה תחולק ביניהן. האפשרות הזו שימושית אם אתם צריכים לתמוך בפריסות כחול-ירוק מדור קודם. אם כמה אפליקציות משויכות לנתיבים שונים, העדיפות היא לנתיב הארוך ביותר עד לנתיב הקצר ביותר.

ניהול מסלולים

בקטעים הבאים מוסבר איך להשתמש ב-kf CLI כדי לנהל מסלולים.

הצגת רשימת מסלולים

מפתחים יכולים להציג רשימה של מסלולים במרחב הנוכחי באמצעות הפקודה kf routes.

$ kf routes
Getting Routes in Space: my-space
Found 2 Routes in Space my-space

HOST    DOMAIN       PATH    APPS
echo    example.com  /       echo
*       example.com  /login  uaa

יצירת מסלול

מפתחים יכולים ליצור מסלולים באמצעות הפקודה kf create-route.

# Create a Route in the targeted Space to match traffic for myapp.example.com/*
$ kf create-route example.com --hostname myapp

# Create a Route in the Space myspace to match traffic for myapp.example.com/*
$ kf create-route -n myspace example.com --hostname myapp

# Create a Route in the targeted Space to match traffic for myapp.example.com/mypath*
$ kf create-route example.com --hostname myapp --path /mypath

# You can also supply the Space name as the first parameter if you have
# scripts that rely on the old cf style API.
$ kf create-route myspace example.com --hostname myapp # myapp.example.com

אחרי שיוצרים נתיב, אם לא משייכים אליו אפליקציות, מוחזר קוד סטטוס HTTP 503 לכל הבקשות התואמות.

מיפוי מסלול לאפליקציה

מפתחים יכולים להפוך את האפליקציה שלהם לנגישה במסלול באמצעות הפקודה kf map-route.

$ kf map-route MYAPP mycluster.example.com --host myapp --path mypath

ביטול המיפוי של מסלול

מפתחים יכולים להסיר את האפשרות לגשת לאפליקציה שלהם במסלול באמצעות הפקודה kf unmap-route.

$ kf unmap-route MYAPP mycluster.example.com --host myapp --path mypath

מחיקת מסלול

מפתחים יכולים למחוק נתיב באמצעות הפקודה kf delete-route.

$ kf delete-route mycluster.example.com --host myapp --path mypath

מחיקת מסלול תגרום לכך שהתנועה לא תנותב יותר לכל האפליקציות שמקשיבות למסלול.

ניהול מסלולים באופן הצהרתי בקובץ מניפסט של אפליקציה

אפשר לנהל מסלולים באופן הצהרתי בקובץ המניפסט של האפליקציה. אם הם לא קיימים, הם ייווצרו.

---
applications:
- name: my-app
  # ...
  routes:
  - route: example.com
  - route: www.example.com/path

מידע נוסף על מאפייני המסלול הנתמכים זמין במסמכי התיעוד של קובץ המניפסט.

ניתוב של CRD

יש ארבעה סוגים שרלוונטיים לניתוב:

  • VirtualService
  • נתיב
  • שירות
  • אפליקציה

לכל אפליקציה יש שירות, שהוא שם מופשט שניתן לכל המופעים הפועלים של האפליקציה. השם של השירות זהה לשם של האפליקציה. מסלול מייצג כתובת URL חיצונית אחת. המסלולים עוקבים כל הזמן אחרי שינויים באפליקציות. כשמגיעה בקשה מאפליקציה להוסיף אותה למסלול, המסלול מעדכן את רשימת האפליקציות שלו ואז את VirtualService. ‫VirtualService מייצג דומיין יחיד וממזג רשימה של כל ה-Routes במרחב ששייכים לדומיין הזה.

‫Istio קורא את ההגדרה ב-VirtualServices כדי לקבוע איך לנתב את התנועה.