במאמר הזה מוסבר איך לאמת את שירותי Knative Serving באמצעות איחוד זהויות של עומסי עבודה ל-GKE כדי לגשת אל Google Cloud ממשקי API כמו Compute APIs, Storage and Database APIs או Machine Learning APIs.
כדי לאמת את שירותי Knative serving, אתם צריכים:
- הפעלת איחוד זהויות של עומסי עבודה ל-GKE באשכול
- יוצרים חשבון שירות של Kubernetes ומקצים לו את תפקידי ה-IAM הנדרשים
אחרי שמבצעים את השלבים האלה, אפשר לפרוס שירות חדש של Knative Serving שמשתמש בזהות שיצרתם.
הפעלת איחוד זהויות של עומסי עבודה ל-GKE באשכול
כדי להגדיר איחוד זהויות של עומסי עבודה ל-GKE עם Knative serving, אפשר להגדיר איחוד זהויות של עומסי עבודה ב-Fleet במקום להשתמש בקובץ JSON של חשבון שירות Google Cloud .
הגדרת הרשאות להפעלת כל המדדים
כדי להפעיל מדדים, כמו דיווח על מספר הבקשות או על זמן האחזור של הבקשות ב-Google Cloud Observability, צריך לתת הרשאות כתיבה ל-Cloud Monitoring. לדוגמה, אפשר להעניק את התפקיד Monitoring Metric Writer (roles/monitoring.metricWriter) לחשבון השירות של Kubernetes שמשויך ל-Knative serving, כי הוא כולל את ההרשאות הנדרשות לכתיבת נתוני ניטור.
הקצאת תפקידי IAM לחשבון שירות של Kubernetes
כל שירות Knative serving שפועל כחשבון שירות של Kubernetes שמוגדר באופן אוטומטי, עובר אימות באמצעות הזהות המאוחדת שלו כשניגשים ל- Google Cloud APIs. חשבון השירות של Kubernetes צריך להיות קיים באשכול ובמרחב השמות של שירות Knative serving שרוצים להשתמש בו באיחוד זהויות של עומסי עבודה ל-GKE.
אם לא קיים חשבון שירות של Kubernetes, יוצרים אחד באותו מרחב שמות של Kubernetes כמו שירות Knative serving. אחרת, מדלגים לשלב הבא:
kubectl create serviceaccount --namespace K8S_NAMESPACE KUBERNETES_SERVICEACCOUNT
מקצים את תפקידי ה-IAM הנדרשים ישירות לחשבון השירות של Kubernetes:
gcloud projects add-iam-policy-binding RESOURCE_PROJECT_ID \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/K8S_NAMESPACE/sa/KUBERNETES_SERVICEACCOUNT" \ --role "ROLE_NAME" \ --condition=None
מחליפים את:
- RESOURCE_PROJECT_ID עם מזהה הפרויקט ב- Google Cloud שבו נמצאים משאבי היעד Google Cloud .
- PROJECT_NUMBER עם מספר הפרויקט שלGoogle Cloud הפרויקט של האשכול שבו נמצאים חשבון השירות של Kubernetes ושירותי Knative serving.
- PROJECT_ID עם המזהה של הפרויקט Google Cloud של האשכול שבו נמצאים חשבון השירות של Kubernetes והשירותים של Knative Serving.
- K8S_NAMESPACE ו-KUBERNETES_SERVICEACCOUNT עם מרחב השמות והשם של חשבון השירות של Kubernetes.
- ROLE_NAME עם תפקיד ה-IAM להקצאה לחשבון השירות של Kubernetes, כמו
roles/monitoring.metricWriter.
פריסת שירות חדש לשימוש באיחוד זהויות של עומסי עבודה ל-GKE
פורסים שירות חדש של Knative Serving שמשתמש באיחוד הזהויות של עומסי עבודה ל-GKE שיצרתם.
המסוף
נכנסים אל Knative serving במסוף Google Cloud :
אם אתם מגדירים שירות חדש שאתם פורסים, לוחצים על יצירת שירות. אם מגדירים שירות קיים, לוחצים על השירות ואז על עריכה ופריסה של גרסה חדשה.
בקטע הגדרות מתקדמות, לוחצים על מאגר תגים.
לוחצים על התפריט הנפתח Service account ובוחרים את חשבון השירות הרצוי.
לוחצים על הבא כדי להמשיך לקטע הבא.
בקטע Configure how this service is triggered (הגדרה של אופן הפעלת השירות), בוחרים את סוג הקישוריות שרוצים להשתמש בו כדי להפעיל את השירות.
לוחצים על יצירה כדי לפרוס את התמונה ב-Knative serving ומחכים עד שהפריסה תסתיים.
שורת הפקודה
בשירותים קיימים, מגדירים את חשבון השירות של Kubernetes על ידי הרצת הפקודה
gcloud run services updateעם הפרמטרים הבאים:gcloud run services update SERVICE --service-account KUBERNETES_SERVICEACCOUNT
מחליפים את:
- SERVICE בשם של השירות שלכם ב-Knative serving.
- KUBERNETES_SERVICEACCOUNT עם חשבון השירות של Kubernetes שבו השתמשתם כדי ליצור את זהות עומס העבודה.
בשביל שירותים חדשים, מגדירים את חשבון השירות של Kubernetes על ידי הרצת הפקודה
gcloud run deployעם הפרמטר--service-account:gcloud run deploy --image IMAGE_URL --service-account KUBERNETES_SERVICEACCOUNT
מחליפים את:
- IMAGE_URL עם הפניה לקובץ האימג' בקונטיינר, לדוגמה,
gcr.io/cloudrun/hello. - KUBERNETES_SERVICEACCOUNT עם חשבון השירות של Kubernetes שבו השתמשתם כדי ליצור את זהות עומס העבודה.
- IMAGE_URL עם הפניה לקובץ האימג' בקונטיינר, לדוגמה,
YAML
אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export.
אחרי זה תוכלו לשנות את קובץ ה-YAML ולהטמיע את השינויים באמצעות הפקודה gcloud run services replace.
חשוב לוודא שמשנים רק את המאפיינים שצוינו.
מורידים את ההגדרה של השירות לקובץ בשם
service.yamlבסביבת העבודה המקומית:gcloud run services describe SERVICE --format export > service.yaml
מחליפים את SERVICE בשם של שירות Knative serving.
מעדכנים את המאפיין
serviceAccountName:בקובץ המלאי בחנות מקומית:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: serviceAccountName: KUBERNETES_SERVICEACCOUNT
החלפה
- SERVICE בשם של השירות שלכם ב-Knative serving.
- KUBERNETES_SERVICEACCOUNT עם חשבון השירות של Kubernetes שבו השתמשתם כדי ליצור את זהות עומס העבודה.
מריצים את הפקודה הבאה כדי לפרוס את ההגדרה לשירות Knative serving:
gcloud run services replace service.yaml
העברת שירותים קיימים לשימוש באיחוד זהויות של עומסי עבודה ל-GKE
אם הפעלתם איחוד זהויות של עומסי עבודה ל-GKE באשכול קיים, צריך להעביר כל שירות באשכול שבו רוצים להשתמש באיחוד זהויות של עומסי עבודה ל-GKE. איך מעבירים שירותים קיימים
השלבים הבאים
איך מנהלים את הגישה לשירותים.