סקירה כללית על Service Directory ל-GKE

‫Service Directory ל-Google Kubernetes Engine‏ (GKE) מספק תצוגה יחידה של כל השירותים בכל הפריסות של GKE ומחוצה להן. אפשר להוסיף סוגים שונים של שירותי GKE, להוסיף להם הערות ואז לראות את השירותים האלה בספריית השירותים.

אלה התכונות של Service Directory for GKE:

  • הוא מאפשר לכם לגלות שירותים באמצעות gRPC ו-HTTP, ולפענח שירותים באמצעות אזורי DNS של Service Directory. השילוב של Service Directory ו-Cloud DNS מאפשר לכם להגדיר אזור DNS של Service Directory.
  • ‫Service Directory רושם שירותים מחוץ ל-GKE, ומאפשר לשירותי GKE ולשירותים אחרים לגלות אחד את השני בקלות.
  • ב-Service Directory נאכפות הרשאות IAM ובדיקות של VPC Service Controls כדי להבטיח אבטחה ופרטיות נאותות של נתוני הלקוחות.
  • אפשר להגדיר את Service Directory ל-GKE עם אשכולות GKE במצב Autopilot או עם אשכולות GKE רגילים. מידע על שני המצבים זמין במאמר בחירה של מצב פעולה ב-GKE.

במאמר הגדרת Service Directory ל-GKE מוסבר איך להגדיר את Service Directory כך ששירותי GKE יירשמו בו באופן אוטומטי.

מיפוי שירותים

כשרושמים שירות ב-Service Directory, נוצר שירות בפרויקט Google Cloud fleet באמצעות השם של מרחב השמות של Kubernetes והאזור של אשכול GKE. בטבלה הבאה מתואר המיפוי של המאפיינים בשירות GKE למאפיינים בשירות שנוצר בספריית השירותים עבור כל סוגי השירותים של GKE.

נכסים ברמה העליונה

מאפיין Service Directory נכס GKE
פרויקט פרויקט Fleet
אזור האזור של האשכול
מרחב שמות מרחב שמות Kubernetes

סוג שירות אחד (LoadBalancer)

בדוגמה הבאה מוצג מיפוי של שירות GKE LoadBalancer ל-Service Directory. שירות Service Directory קיים במרחב שמות עם אותו שם כמו מרחב השמות של Kubernetes בפרויקט ה-Fleet ובאזור של אשכול GKE.

מאפיין Service Directory נכס GKE
שם השירות שם השירות
השם של נקודת הקצה נוצר באופן אוטומטי על ידי Service Directory Controller
כתובת ה-IP של נקודת הקצה תעבורת נתונים נכנסת (ingress) מסוג LoadBalancer
יציאה של נקודת קצה יציאת שירות מאזן העומסים
רשת נקודות קצה רשת ה-VPC של האשכול

הדוגמה הבאה היא של שירות LoadBalancer ב-GKE:

apiVersion: v1
kind: Service
metadata:
  name: hello-app
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: hello-app
    sd-import: "true"
spec:
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
  selector:
    app: hello-app
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 10.140.0.5

הדוגמה הבאה היא של שירות בספריית השירותים:

service:
  endpoints:
  - address: 10.140.0.5
    metadata:
       cloud.google.com/load-balancer-type: "Internal"
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345
    port: 80
    network: projects/my-project/locations/global/networks/default
  name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app

סוג שירות אחד (NodePort)

בדוגמה הבאה אפשר לראות איך שירות NodePort של GKE ממופה ל-Service Directory. שירות Service Directory קיים במרחב שמות עם אותו שם כמו מרחב השמות של Kubernetes בפרויקט של ה-hub והאזור של אשכול GKE.

מאפיין Service Directory נכס GKE
שם השירות שם השירות
השם של נקודת הקצה נוצר באופן אוטומטי על ידי Service Directory Controller
כתובת ה-IP של נקודת הקצה כתובת ה-IP הפנימית של הצומת לכל צומת שמריץ פוד בשביל השירות
יציאה של נקודת קצה יציאת צומת סטטית
רשת נקודות קצה רשת ה-VPC של האשכול

הדוגמה הבאה היא של שירות NodePort ב-GKE:

apiVersion: v1
kind: Service
metadata:
  name: hello-app
  annotations:
    key1: "value1"
spec:
  ports:
  - nodePort: 30007
    port: 80
    targetPort: 8080
    protocol: TCP
  selector:
    app: hello-app
  type: NodePort
  

דוגמה לצמתים של GKE:

apiVersion: v1
items:
- apiVersion: v1
  kind: Node
  metadata:
    name: gke-hello-cluster-default-pool-a40cbab6-d2rr
  status:
    addresses:
    - address: 10.142.0.27
      type: InternalIP
    - address: 34.73.248.170
- apiVersion: v1
  kind: Node
  metadata:
    name: gke-hello-cluster-default-pool-a40cbab6-kb38
  status:
    addresses:
    - address: 10.142.0.29
      type: InternalIP
    - address: 35.196.219.215
      type: ExternalIP
- apiVersion: v1
  kind: Node
  metadata:
    name: gke-hello-cluster-default-pool-a40cbab6-x34q
  status:
    addresses:
    - address: 10.142.0.28
      type: InternalIP
    - address: 34.75.202.26
      type: ExternalIP
    

הדוגמה הבאה היא של שירות בספריית השירותים:

service:
  endpoints:
  - address: 10.142.0.27
    metadata:
      key1: value1
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345
    port: 30007
    network: projects/my-project/locations/global/networks/default
  - address: 10.142.0.28
    metadata:
      key1: value1
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-23456
    port: 30007
    network: projects/my-project/locations/global/networks/default
  - address: 10.142.0.29
    metadata:
      key1: value1
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-34567
    port: 30007
    network: projects/my-project/locations/global/networks/default
  name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
  

שירות ClusterIP

בדוגמה הבאה מוצג מיפוי של שירות GKE ClusterIP ל-Service Directory. שירות Service Directory קיים במרחב שמות עם אותו שם כמו מרחב השמות של Kubernetes בפרויקט ה-Fleet ובאזור של אשכול GKE.

מאפיין Service Directory נכס GKE
שם השירות שם השירות
השם של נקודת הקצה נוצר באופן אוטומטי על ידי Service Directory Controller
כתובת ה-IP של נקודת הקצה ClusterIP
יציאה של נקודת קצה יציאת שירות
רשת נקודות קצה רשת ה-VPC של האשכול

הנה דוגמה לשירות GKE ClusterIP:

apiVersion: v1
kind: Service
metadata:
  name: hello-app
  annotations:
    key1: "value1"
  labels:
    app: hello-app
    sd-import: "true"
spec:
  clusterIP: 10.15.254.17
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
  selector:
    app: hello-app
  type: ClusterIP
  

הדוגמה הבאה היא של שירות בספריית השירותים:

service:
  endpoints:
  - address: 10.15.254.17
    metadata:
      key1: value1
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345
    port: 80
    network: projects/my-project/locations/global/networks/default
  name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
  

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