הכנות להגדרת Gateway API ל-Cloud Service Mesh

בדף הזה מוסבר איך להתקין באשכול את ההגדרות הנדרשות של משאבים מותאמים אישית עבור השער.

מגבלות

  • אין תמיכה בשילוב של אשכולות gateway config-api ו-istio config-api באותו צי. מוודאים שה-config-api מוגדר ל-gateway בכל האשכולות בצי. כדי לראות מה הגדרתם לצי, משתמשים בפקודה gcloud container fleet mesh describe --project FLEET_PROJECT_ID.
  • אין תמיכה בגילוי שירותים ובאיזון עומסים בין אשכולות ב-gateway config-api clusters.
  • אם מצטרפים לאשכול באמצעות הדגל --management automatic הקיים, האשכול מתחיל להשתמש ב-API של התצורה istio ולא ניתן לשנות אותו ל-API ‏gateway.
  • יש תמיכה רק בשמות דומיין מלאים (FQDN). אין תמיכה בשמות מקוצרים.

שיקולים לגבי ניהול מישור הנתונים

ב-pods חדשים, Google מנהלת את גרסת ה-proxy שמוזרקת. שימו לב שמישור הנתונים המנוהל מסתמך על ערוץ ההפצה של Google Kubernetes Engine ‏ (GKE) כדי לקבוע את גרסת ה-proxy.

ב-pods קיימים, ניהול ה-proxy מתבצע באופן פסיבי, על סמך מחזור החיים הטבעי של ה-pods באשכול. כדי להפעיל את העדכון ולהחדיר מחדש גרסאות חדשות של ה-proxy, מפעילים מחדש את עומסי העבודה.

דרישות מוקדמות

כנקודת התחלה, במדריך הזה אנחנו מניחים שכבר יצרתם פרויקט ב- Google Cloud והתקנתם את kubectl.

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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

יצירה ורישום של אשכול GKE

gcloud

יוצרים אשכול GKE:

gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--enable-ip-alias \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--release-channel=regular \
--project=PROJECT_ID \
--gateway-api=standard \
--workload-pool=PROJECT_ID.svc.id.goog \
--workload-metadata=GKE_METADATA

where:

  • CLUSTER_NAME הוא שם האשכול
  • LOCATION הוא המיקום של האשכול
  • PROJECT_ID הוא מזהה הפרויקט של האשכול

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. לוחצים על יצירה.

  3. בקטע רגיל, לוחצים על הגדרה.

  4. בקטע Cluster basics (יסודות האשכול), מבצעים את הפעולות הבאות:

    1. מזינים את השם של האשכול.
    2. בקטע Location type, בוחרים Compute Engine region עבור האשכול.
  5. בחלונית הניווט, לוחצים על default-pool בקטע Node Pools ובוחרים באפשרות Security.

  6. ברשימה Access scopes בוחרים באפשרות Set access for each API ומגדירים את Cloud Platform כEnabled.

  7. בחלונית הניווט, לוחצים על Networking (רשת) בקטע Cluster (אשכול).

  8. ברשימה Cluster Networking (רשת אשכול), בוחרים באפשרות Enable Gateway API (הפעלת Gateway API).

  9. בחלונית הניווט, לוחצים על אבטחה בקטע אשכול.

  10. ברשימה Security בוחרים באפשרות Enable Workload Identity.

  11. לוחצים על יצירה.

אחרי שיוצרים את האשכול,

  1. רישום האשכול לFleet:

    gcloud container fleet memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  2. מוודאים שהאשכול רשום ב-Fleet:

    gcloud container fleet memberships list --project=PROJECT_ID
    

    הפלט אמור להיראות כך:

    NAME            EXTERNAL_ID                             LOCATION
    my-cluster      91980bb9-593c-4b36-9170-96445c9edd39    us-west1
    

הגדרת ההרשאות

שימו לב שהפקודות הבאות מעניקות הרשאה לכל המשתמשים המאומתים, אבל אתם יכולים להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה ב-GKE כדי להעניק הרשאה רק לחשבונות נבחרים. לפרטים על אופן הפעולה של איחוד זהויות של עומסי עבודה ל-GKE, אפשר לעיין במאמר מידע על איחוד זהויות של עומסי עבודה ל-GKE. כדי להגדיר איחוד זהויות של עומסי עבודה ל-GKE, תוכלו לקרוא את המאמר אימות ל-APIs מתוך עומסי עבודה ב-GKE. Google Cloud

הקצאת התפקיד trafficdirector.client:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \
    --role "roles/trafficdirector.client"

הפעלת Cloud Service Mesh

  1. כדי להפעיל את התכונה 'רשת':

    gcloud container fleet mesh enable --project PROJECT_ID
    
  2. מעדכנים את הרשת לשימוש ב-Gateway API:

    gcloud alpha container fleet mesh update \
    --config-api gateway \
    --memberships CLUSTER_NAME \
    --project PROJECT_ID
    
  3. כדי לוודא שהעדכון בוצע, מתארים את הסטטוס של משאב Cloud Service Mesh:

    gcloud alpha container fleet mesh describe \
    --project PROJECT_ID
    

הגדרה של חברות חדשות בצי הרכבים לשימוש ב-Gateway API כברירת מחדל (אופציונלי)

לחלופין, אתם יכולים ליצור הגדרות ברירת מחדל ברמת ה-Fleet עבור אשכולות GKE חדשים שנרשמים ל-Fleet במהלך יצירת האשכול, כדי שהם יוגדרו אוטומטית באמצעות Gateway API.

  1. יוצרים קובץ YAML עם ההגדרה הבאה לשימוש ב-Gateway API:

    echo "configapi: gateway" > mesh.yaml
    
  2. עדכון הרשת:

    gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \
        --fleet-default-member-config mesh.yaml
    
  3. כדי ליצור אשכול ולרשום אותו ל-Fleet בבת אחת באמצעות הגדרת ברירת המחדל:

    gcloud container clusters create CLUSTER_NAME \
        --project PROJECT_ID \
        --fleet-project FLEET_PROJECT_ID \
        --location=LOCATION \
    
  4. מפעילים את איחוד הזהויות של עומסי עבודה ל-GKE ומריצים את שרת המטא-נתונים של GKE בצומת.

התקנה של הגדרות מותאמות אישית של משאבים

יוצרים רשומה ב-kubeconfig עבור האשכול:

gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID

where:

  • CLUSTER_NAME הוא שם האשכול
  • LOCATION הוא המיקום של האשכול
  • PROJECT_ID הוא מזהה הפרויקט של האשכול

מתקינים את ההגדרה של המשאב המותאם אישית (CRD) של GRPCRoute:

curl https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.1.0/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml \
| kubectl apply -f -

הפלט אמור להיראות כך:

customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created

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