כל אפליקציות Kf שמציגות תנועת HTTP למשתמשים או לאפליקציות מחוץ לאשכול חייבות להיות משויכות לשם דומיין.
ב-Kf יש שלושה מיקומים שבהם אפשר להגדיר דומיינים. הם מסודרים לפי סדר העדיפות הבא:
- אפליקציות
- Spaces
-
config-defaultsConfigMap במרחב השמותkf
config-defaults ConfigMap
ConfigMap config-defaults מכיל הגדרות ברמת האשכול ל-Kf, ואדמינים של האשכול יכולים לערוך אותו.
הערכים ב-ConfigMap נקראים על ידי בקר המרחבים ומשנים את ההגדרה שלהם.
ערכי הדומיין משתקפים בשדה status.networkConfig.domains של המרחב.
כדי לשנות את הדומיין של אשכול Kf, עורכים את config-defaults ConfigMap ב-kf Namespace:
kubectl edit configmap config-defaults -n kfמוסיפים או מעדכנים את הערך של המפתח spaceClusterDomain באופן הבא:
spaceClusterDomain: my-domain.com
כדי לוודא שההגדרה עודכנה בצורה נכונה, בודקים את ערך הדומיין במרחב:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"הפלט אמור להיראות כך:
Getting Space some-space
some-space.my-domain.com
לכל מרחב יש קידומת משלו לשמות הדומיינים של האשכול. כך נמנעות התנגשויות בין האפליקציות.
דומיינים של מרחבים
המרחבים הם המקום המוסמך להגדרת הדומיין.
אתם יכולים להקצות דומיינים ותת-דומיינים לכל מרחב כדי שהמפתחים יוכלו להשתמש בהם.
השדה להגדרת הדומיינים הוא spec.networkConfig.domains.
כדי לראות את הדומיינים שהוקצו למרחב, משתמשים ב-kf space:
kf space SPACE_NAMEבפלט, השדה Spec מכיל הגדרה ספציפית של המרחב, והשדה Status משקף את ההגדרה של המרחב עם ברירות מחדל ברמת האשכול שנוספו בסוף:
...
Spec:
Network Config:
Domains:
Domain: my-space.mycompany.com
...
Status:
Network Config:
Domains:
Domain: my-space.mycompany.com
Domain: my-space.prod.us-east1.kf.mycompany.com
הגדרה באמצעות ה-CLI
ממשק kf CLI תומך במוטציות בדומיינים של Space. כל פקודה מפיקה פלט של השוואה בין ההגדרות הישנות לחדשות.
כדי להוסיף דומיין חדש באמצעות kf configure-space append-domain:
kf configure-space append-domain SPACE_NAME myspace.mycompany.comהוספה של דומיין או הגדרה של דומיין קיים כברירת מחדל באמצעות kf configure-space set-default-domain:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.comולבסוף, מסירים דומיין:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.comאפליקציות
אפליקציות יכולות לציין דומיינים כחלק מההגדרה שלהן.
המיפוי של המסלולים לאפליקציות במהלך kf push מתבצע לפי הלוגיקה הבאה:
let current_routes = The set of routes already on the app
let manifest_routes = The set of routes defined by the manifest
let flag_routes = The set of routes supplied by the --route flag(s)
let no_route = Whether the manifest has no-route:true or --no-route is set
let random_route = Whether the manifest has random-route:true or --random-route is set
let new_routes = Union(current_routes, manifest_routes, flag_routes)
if new_routes.IsEmpty() then
if random_route then
new_routes.Add(CreateRandomRoute())
else
new_routes.Add(CreateDefaultRoute())
end
end
if no_route then
new_routes.RemoveAll()
end
return new_routes
אם אפליקציה לא מציינת נתיב או מבקשת נתיב אקראי, ייעשה שימוש בדומיין הראשון במרחב. אם הדומיין הראשון במרחב משתנה, כל האפליקציות במרחב שמשתמשות בדומיין שמוגדר כברירת מחדל יעודכנו בהתאם.
תבניות לדומיין
Kf תומך בהחלפת משתנים בדומיינים. ההחלפה מאפשרת להתאים אישית דומיין יחיד ברמת האשכול לכל מרחב, ולהגיב לשינויים בכתובת ה-IP של הכניסה. ההחלפה מתבצעת במשתנים עם התחביר $(VARIABLE_NAME)
שמופיעים בדומיין.
| משתנה | תיאור |
|---|---|
CLUSTER_INGRESS_IP |
כתובת ה-IPv4 של ה-Ingress של האשכול. |
SPACE_NAME |
שם המרחב. |
דוגמאות
הדוגמאות הבאות מראות איך אפשר להשתמש במשתני דומיין כדי לתמוך במגוון של מבנים ארגוניים שונים ודפוסי אשכולות.
שימוש בשירות DNS עם תו כללי כמו nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.ioדומיין לארגון עם DNS שמנוהל באופן מרכזי:
$(SPACE_NAME).cluster-name.example.comדומיין לצוותים שמנהלים את ה-DNS שלהם:
cluster-name.$(SPACE_NAME).example.comדומיין לאשכול עם מעבר גיבוי חם ומפסק זרם חיצוני:
$(SPACE_NAME)-failover.cluster-name.example.com
ההבדלים בין Kf לבין CF
- ב-Kf Spaces, שם המרחב מופיע לפני הדומיין ברמת האשכול.
- מערכת Kf לא בודקת אם יש התנגשויות בדומיין במסלולים שצוינו על ידי המשתמש.