הגדרת שירות רשמי (קנוני)

הערה: שירותים קנוניים נתמכים באופן אוטומטי ב-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
  ...

המאמרים הבאים