הכנות להגדרת Gateway API ל-Cloud Service Mesh
בדף הזה מוסבר איך להתקין באשכול את ההגדרות הנדרשות של משאבים מותאמים אישית עבור השער.
מגבלות
- אין תמיכה בשילוב של אשכולות
gatewayconfig-api ו-istioconfig-api באותו צי. מוודאים שה-config-api מוגדר ל-gatewayבכל האשכולות בצי. כדי לראות מה הגדרתם לצי, משתמשים בפקודהgcloud container fleet mesh describe --project FLEET_PROJECT_ID. - אין תמיכה בגילוי שירותים ובאיזון עומסים בין אשכולות ב-
gatewayconfig-api clusters. - אם מצטרפים לאשכול באמצעות הדגל
--management automaticהקיים, האשכול מתחיל להשתמש ב-API של התצורהistioולא ניתן לשנות אותו ל-API gateway. - יש תמיכה רק בשמות דומיין מלאים (FQDN). אין תמיכה בשמות מקוצרים.
שיקולים לגבי ניהול מישור הנתונים
ב-pods חדשים, Google מנהלת את גרסת ה-proxy שמוזרקת. שימו לב שמישור הנתונים המנוהל מסתמך על ערוץ ההפצה של Google Kubernetes Engine (GKE) כדי לקבוע את גרסת ה-proxy.
ב-pods קיימים, ניהול ה-proxy מתבצע באופן פסיבי, על סמך מחזור החיים הטבעי של ה-pods באשכול. כדי להפעיל את העדכון ולהחדיר מחדש גרסאות חדשות של ה-proxy, מפעילים מחדש את עומסי העבודה.
דרישות מוקדמות
כנקודת התחלה, במדריך הזה אנחנו מניחים שכבר יצרתם פרויקט ב- Google Cloud והתקנתם את kubectl.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.
יצירה ורישום של אשכול 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 הוא מזהה הפרויקט של האשכול
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על add_box יצירה.
בקטע רגיל, לוחצים על הגדרה.
בקטע Cluster basics (יסודות האשכול), מבצעים את הפעולות הבאות:
- מזינים את השם של האשכול.
- בקטע Location type, בוחרים Compute Engine region עבור האשכול.
בחלונית הניווט, לוחצים על default-pool בקטע Node Pools ובוחרים באפשרות Security.
ברשימה Access scopes בוחרים באפשרות Set access for each API ומגדירים את Cloud Platform כEnabled.
בחלונית הניווט, לוחצים על Networking (רשת) בקטע Cluster (אשכול).
ברשימה Cluster Networking (רשת אשכול), בוחרים באפשרות Enable Gateway API (הפעלת Gateway API).
בחלונית הניווט, לוחצים על אבטחה בקטע אשכול.
ברשימה Security בוחרים באפשרות Enable Workload Identity.
לוחצים על יצירה.
אחרי שיוצרים את האשכול,
רישום האשכול לFleet:
gcloud container fleet memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_IDמוודאים שהאשכול רשום ב-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
כדי להפעיל את התכונה 'רשת':
gcloud container fleet mesh enable --project PROJECT_IDמעדכנים את הרשת לשימוש ב-Gateway API:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_IDכדי לוודא שהעדכון בוצע, מתארים את הסטטוס של משאב Cloud Service Mesh:
gcloud alpha container fleet mesh describe \ --project PROJECT_ID
הגדרה של חברות חדשות בצי הרכבים לשימוש ב-Gateway API כברירת מחדל (אופציונלי)
לחלופין, אתם יכולים ליצור הגדרות ברירת מחדל ברמת ה-Fleet עבור אשכולות GKE חדשים שנרשמים ל-Fleet במהלך יצירת האשכול, כדי שהם יוגדרו אוטומטית באמצעות Gateway API.
יוצרים קובץ YAML עם ההגדרה הבאה לשימוש ב-Gateway API:
echo "configapi: gateway" > mesh.yamlעדכון הרשת:
gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \ --fleet-default-member-config mesh.yamlכדי ליצור אשכול ולרשום אותו ל-Fleet בבת אחת באמצעות הגדרת ברירת המחדל:
gcloud container clusters create CLUSTER_NAME \ --project PROJECT_ID \ --fleet-project FLEET_PROJECT_ID \ --location=LOCATION \מפעילים את איחוד הזהויות של עומסי עבודה ל-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