הגדרת שירות רשמי (קנוני)
הערה: שירותים קנוניים נתמכים באופן אוטומטי ב-Cloud Service Mesh מגרסה 1.6.8 ואילך.
Canonical Services היא קבוצה של עומסי עבודה שמיישמים את אותם שירותים ואת אותם ממשקי API. עבור סוגי עומסי עבודה נתמכים, Cloud Service Mesh יוצר באופן אוטומטי משאבי Canonical Service על סמך מידע קיים משרת ה-API של Kubernetes. בדף הזה מוסבר אילו תוויות מגדירות באופן אוטומטי שירותים קנוניים, ואיך אפשר לשנות באופן ידני את הגבולות של השירותים.
סוגי המקרים של עומסי העבודה שנתמכים הם:
- קבוצות Pod של Kubernetes (כולל באמצעות פריסות Kubernetes, שירותי Kube Run וכו')
- שירותים חיצוניים לרשת (במיוחד, משאבי ServiceEntry עם מיקום של
MESH_EXTERNAL)
מה מגדיר שירותים רשמיים (קנוניים)
Cloud Service Mesh קובע את החברות בשירות הקנוני על ידי קריאת service.istio.io/canonical-name
התווית במשאב התצורה של Kubernetes שמשויך לכל מופע של עומס עבודה:
- ב-Pods, התווית נמצאת במשאב Kubernetes Pod
- בשירותים חיצוניים, התווית נמצאת במשאב ServiceEntry של Istio
לשירותים קנוניים יש את אותו מרחב שמות של Kubernetes כמו למופעים המשויכים של עומס העבודה, והם לא יכולים להתפרס על פני מרחבי שמות.
כללים אוטומטיים להוספת תוויות
Cloud Service Mesh מקבץ באופן אוטומטי את עומסי העבודה שלכם לשירותים קנוניים, בלי שתצטרכו לבצע פעולה כלשהי. אתם צריכים לבצע פעולה רק במקרים הבאים:
- שינוי התוויות כדי שהמשתמשים או הקוראים יבינו אותן טוב יותר
- שינוי פעולת ברירת המחדל.
הוספת תוויות אוטומטית לקבוצות Pod ב-Kubernetes
השירותים הרשמיים (קנוניים) מתמקדים בתוויות app.kubernetes.io/name ו-app של Kubernetes. שימו לב שהתווית הראשונה מקבלת עדיפות.
אם אתם משתמשים באחת משתי התוויות האלה בעומסי העבודה שלכם, לא נדרשת פעולה נוספת.
הוספת תוויות באופן ידני
כדי להחיל או לשנות ידנית תווית של שירות קנוני, צריך להחיל את התווית service.istio.io/canonical-name על הגדרות של משאבי עומס עבודה נתמכים.
כדי ששירות חיצוני יזוהה כשירות רשמי (קנוני), צריך להוסיף ידנית את התווית המתאימה ל-ServiceEntry.
תיוג ידני בקבוצות Pod של Kubernetes
כדי לפרוס הרבה פודים בבת אחת באמצעות Deployment, צריך להגדיר את התווית service.istio.io/canonical-name ב-PodTemplateSpec:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: my-namespace
spec:
replicas: 3
template:
metadata:
labels:
service.istio.io/canonical-name: my-service
spec:
containers:
...
כדי להוסיף תווית לשירות הקנוני של פוד יחיד, מוסיפים את התווית service.istio.io/canonical-name לקטע labels בהגדרת הפוד:
apiVersion: v1
kind: Pod
metadata:
name: my-test-pod
namespace: my-namespace
labels:
service.istio.io/canonical-name: my-service
spec:
...
הוספת תוויות לשירותים חיצוניים באופן ידני
כדי להוסיף תווית לשירות הקנוני של שירות חיצוני יחיד או ServiceEntry, מוסיפים את התווית service.istio.io/canonical-name לקטע labels בהגדרת ServiceEntry:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: example-com
namespace: my-namespace
labels:
service.istio.io/canonical-name: an-external-service
spec:
location: MESH_EXTERNAL
...