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

הערה: שירותים קנוניים נתמכים באופן אוטומטי ב-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
  • במכונות וירטואליות, התווית במשאב WorkloadEntry של Istio
  • בשירותים חיצוניים, התווית נמצאת במשאב ServiceEntry של Istio

לשירותים קנוניים יש אותו מרחב שמות של Kubernetes כמו למופעים המשויכים של עומס העבודה, והם לא יכולים להתפרס על פני מרחבי שמות.

כללי תיוג אוטומטיים

‫Cloud Service Mesh מקבץ אוטומטית את עומסי העבודה (workloads) מבוססי-Pod ומבוססי-VM לשירותים קנוניים, ללא צורך בפעולה מצדכם.

אתם צריכים לבצע פעולה רק במקרים הבאים:

  • שינוי תוויות כדי שהמשתמשים והקוראים יבינו אותן בקלות
  • שינוי התנהגות ברירת המחדל.

הוספת תוויות אוטומטית לקבוצות Pod של Kubernetes

השירותים הרשמיים מתמקדים בתוויות app.kubernetes.io/name ו-app של Kubernetes. חשוב לזכור שהתווית הראשונה מקבלת עדיפות.

אם אתם משתמשים באחת משתי התוויות האלה בעומסי העבודה שלכם, לא נדרשת פעולה נוספת.

הוספת תוויות אוטומטית במכונות וירטואליות

כדי לבנות שירותים קנוניים במכונות הווירטואליות, צריך להוסיף את המכונות הווירטואליות ל-service mesh על ידי הגדרת משאב WorkloadEntry בשרת Kubernetes API.

הוספת תוויות באופן ידני

כדי להחיל או לשנות באופן ידני תווית של שירות קנוני, מחילים את התווית service.istio.io/canonical-name על תצורות נתמכות של משאבי עומס עבודה.

כדי ששירות חיצוני יזוהה כשירות רשמי (קנוני), צריך להוסיף ידנית את התווית המתאימה ל-ServiceEntry.

תיוג ידני בקבוצות Pod של Kubernetes

כדי לפרוס הרבה Pods בבת אחת באמצעות 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:
        ...

כדי להוסיף תווית לשירות הקנוני של Pod יחיד, מוסיפים את התווית service.istio.io/canonical-name לקטע labels בהגדרת ה-Pod:

apiVersion: v1
kind: Pod
metadata:
  name: my-test-pod
  namespace: my-namespace
  labels:
    service.istio.io/canonical-name: my-service
spec:
  ...

הוספת תוויות למכונות וירטואליות באופן ידני

כדי להוסיף תווית לשירות הקנוני של מכונה וירטואלית או WorkloadEntry יחידים, מוסיפים את התווית service.istio.io/canonical-name לקטע labels בהגדרה של WorkloadEntry:

apiVersion: networking.istio.io/v1alpha3
kind: WorkloadEntry
metadata:
  name: my-vm-123
  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
  ...

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