הגדרת שירותי TCP
במדריך הזה מוסבר איך להגדיר את Cloud Service Mesh לשימוש בשירותי TCP ובמשאבי TCPRoute.
Cloud Service Mesh עם שירותי TCP ו-TCPRoute דומה להגדרת שרת ה-proxy של Envoy קובץ עזר חיצוני עם שירותי HTTP. החריגים הם ששירות לקצה העורפי מספק שירות TCP והניתוב מבוסס על פרמטרים של TCP/IP ולא על פרוטוקול HTTP.
Mesh עם משאב TCPRoute (לחצו כדי להגדיל)לפני שמתחילים
חשוב להשלים את המשימות שמתוארות במאמר הכנה להגדרה של Envoy ועומסי עבודה בלי שרת Proxy.
הגדרת המשאב Mesh
יוצרים את מפרט המשאב
meshבקובץ בשםmesh.yaml.name: sidecar-mesh
משתמשים בקובץ
mesh.yamlכדי ליצור את המשאבmesh.gcloud network-services meshes import sidecar-mesh \ --source=mesh.yaml \ --location=global
הגדרת שרת TCP
החלק הזה במדריך לא ספציפי לממשקי ה-API החדשים, והוא משתמש במשאבים קיימים של שירות לקצה העורפי, בדיקת תקינות ו-MIG.
לצורך הדגמה, יוצרים שירות לקצה העורפי עם מכונות וירטואליות שניתנות להרחבה אוטומטית באמצעות קבוצות מנוהלות של מכונות וירטואליות, שמספקות שירות TCP לבדיקה ביציאה 10000.
יוצרים תבנית של הגדרות מכונה ב-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 &"
יוצרים קבוצה של מופעי מכונה מנוהלים על סמך התבנית.
gcloud compute instance-groups managed create tcp-td-mig-us-east1 \ --zone=ZONE \ --size=1 \ --template=tcp-td-vm-template
מגדירים את היציאות עם השמות בקבוצת מופעי המכונה המנוהלים שנוצרה ליציאה 10000.
gcloud compute instance-groups set-named-ports tcp-td-mig-us-east1
--zone=ZONE
--named-ports=tcp:10000יצירת בדיקת תקינות.
gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
יוצרים כלל חומת אש שמאפשר חיבורים נכנסים של בדיקות תקינות למופעים ברשת.
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
יוצרים שירות לקצה עורפי גלובלי עם סכמת איזון עומסים מסוג
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מוסיפים את קבוצת מופעי המכונה המנוהלים לשירות לקצה העורפי.
gcloud compute backend-services add-backend tcp-helloworld-service \ --instance-group tcp-td-mig-us-east1 \ --instance-group-zone=ZONE \ --global
הגדרת ניתוב באמצעות TCPRoute
בקטע הזה מגדירים את הניתוב.
יוצרים את המפרט
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'יוצרים את המשאב
TcpRouteבאמצעות המפרטtcp_route.yaml.gcloud network-services tcp-routes import helloworld-tcp-route \ --source=tcp-route.yaml \ --location=global
יצירת לקוח TCP עם Envoy sidecar
יוצרים תבנית של הגדרות מכונה ואז יוצרים מכונה וירטואלית עם 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
נכנסים למכונה הווירטואלית שיצרתם.
gcloud compute ssh td-vm-client
בודקים את הקישוריות לשירותי הבדיקה שיצרתם באמצעות כלי השירות
netcat.echo 'Hi TCP Service' | nc 10.0.0.1 10000
שירות הבדיקה צריך להחזיר את הביטוי Hello from TCP
service. בנוסף, אמור להופיע טקסט שאתם מקלידים, שמוחזר על ידי שירות netcat שפועל במכונה הווירטואלית המרוחקת.
מגבלות
אי אפשר להגדיר כללי מדיניות אבטחה של Google Cloud Armor אם משתמשים בניתוב תנועת TCP.