הגדרת שירותי TCP

במדריך הזה מוסבר איך להגדיר את Cloud Service Mesh לשימוש בשירותי TCP ובמשאבי TCPRoute.

‫Cloud Service Mesh עם שירותי TCP ו-TCPRoute דומה להגדרת שרת ה-proxy של Envoy קובץ עזר חיצוני עם שירותי HTTP. החריגים הם ששירות לקצה העורפי מספק שירות TCP והניתוב מבוסס על פרמטרים של TCP/IP ולא על פרוטוקול HTTP.

משאב Mesh עם משאב TCPRoute
משאב Mesh עם משאב TCPRoute (לחצו כדי להגדיל)

לפני שמתחילים

חשוב להשלים את המשימות שמתוארות במאמר הכנה להגדרה של Envoy ועומסי עבודה בלי שרת Proxy.

הגדרת המשאב Mesh

  1. יוצרים את מפרט המשאב mesh בקובץ בשם mesh.yaml.

    name: sidecar-mesh
    
  2. משתמשים בקובץ mesh.yaml כדי ליצור את המשאב mesh.

    gcloud network-services meshes import sidecar-mesh \
      --source=mesh.yaml \
      --location=global
    

הגדרת שרת TCP

החלק הזה במדריך לא ספציפי לממשקי ה-API החדשים, והוא משתמש במשאבים קיימים של שירות לקצה העורפי, בדיקת תקינות ו-MIG.

לצורך הדגמה, יוצרים שירות לקצה העורפי עם מכונות וירטואליות שניתנות להרחבה אוטומטית באמצעות קבוצות מנוהלות של מכונות וירטואליות, שמספקות שירות TCP לבדיקה ביציאה 10000.

  1. יוצרים תבנית של הגדרות מכונה ב-Compute Engine עם שירות בדיקה ביציאה 10000.

    gcloud compute instance-templates create tcp-td-vm-template \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --tags=allow-health-checks \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --metadata=startup-script="#! /bin/bash
    sudo apt-get update -y
    sudo apt-get install netcat -y
    while true;
      do echo 'Hello from TCP service' | nc -l -s 0.0.0.0 -p 10000;
    done &"
    
  2. יוצרים קבוצה של מופעי מכונה מנוהלים על סמך התבנית.

    gcloud compute instance-groups managed create tcp-td-mig-us-east1 \
      --zone=ZONE \
      --size=1 \
      --template=tcp-td-vm-template
    
  3. מגדירים את היציאות עם השמות בקבוצת מופעי המכונה המנוהלים שנוצרה ליציאה 10000.

    gcloud compute instance-groups set-named-ports tcp-td-mig-us-east1 
    --zone=ZONE
    --named-ports=tcp:10000

  4. יצירת בדיקת תקינות.

    gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
    
  5. יוצרים כלל חומת אש שמאפשר חיבורים נכנסים של בדיקות תקינות למופעים ברשת.

    gcloud compute firewall-rules create tcp-vm-allow-health-checks \
       --network default \
       --action allow \
       --direction INGRESS \
       --source-ranges=35.191.0.0/16,130.211.0.0/22 \
       --target-tags allow-health-checks \
       --rules tcp:10000
    
  6. יוצרים שירות לקצה עורפי גלובלי עם סכמת איזון עומסים מסוג INTERNAL_SELF_MANAGED ומצרפים את בדיקת התקינות לשירות לקצה העורפי. בדוגמה נעשה שימוש בקבוצת מופעים מנוהלת שמריצה את שירות ה-TCP לדוגמה שיצרתם קודם.

    gcloud compute backend-services create tcp-helloworld-service \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --protocol=TCP \
        --health-checks tcp-helloworld-health-check
    
  7. מוסיפים את קבוצת מופעי המכונה המנוהלים לשירות לקצה העורפי.

    gcloud compute backend-services add-backend tcp-helloworld-service \
      --instance-group tcp-td-mig-us-east1 \
      --instance-group-zone=ZONE \
      --global
    

הגדרת ניתוב באמצעות TCPRoute

בקטע הזה מגדירים את הניתוב.

  1. יוצרים את המפרט TcpRoute בקובץ בשם tcp_route.yaml.

    אפשר להשתמש ב-$PROJECT_ID או ב-$PROJECT_NUMBER.

    name: helloworld-tcp-route
    meshes:
    - projects/$PROJECT_NUMBER/locations/global/meshes/sidecar-mesh
    rules:
    - action:
        destinations:
        - serviceName: projects/$PROJECT_NUMBER/locations/global/backendServices/tcp-helloworld-service
      matches:
      - address: '10.0.0.1/32'
        port: '10000'
    
  2. יוצרים את המשאב TcpRoute באמצעות המפרט tcp_route.yaml.

    gcloud network-services tcp-routes import helloworld-tcp-route \
      --source=tcp-route.yaml \
      --location=global
    

יצירת לקוח TCP עם Envoy sidecar

  1. יוצרים תבנית של הגדרות מכונה ואז יוצרים מכונה וירטואלית עם Envoy שמחוברת ל-Cloud Service Mesh.

    gcloud beta compute instance-templates create td-vm-client-template \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --service-proxy=enabled,mesh=sidecar-mesh \
      --metadata=startup-script="#! /bin/bash
    sudo apt-get update -y
    sudo apt-get install netcat -y"
    
    gcloud compute instances create td-vm-client \
      --zone=ZONE \
      --source-instance-template td-vm-client-template
    
  2. נכנסים למכונה הווירטואלית שיצרתם.

    gcloud compute ssh td-vm-client
    
  3. בודקים את הקישוריות לשירותי הבדיקה שיצרתם באמצעות כלי השירות netcat.

    echo 'Hi TCP Service' | nc 10.0.0.1 10000
    

שירות הבדיקה צריך להחזיר את הביטוי Hello from TCP service. בנוסף, אמור להופיע טקסט שאתם מקלידים, שמוחזר על ידי שירות netcat שפועל במכונה הווירטואלית המרוחקת.

מגבלות

אי אפשר להגדיר כללי מדיניות אבטחה של Google Cloud Armor אם משתמשים בניתוב תנועת TCP.

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