שימוש באיחוד שירותי אימות הזהויות של עומסי עבודה ב-GKE

במאמר הזה מוסבר איך לאמת את שירותי Knative Serving באמצעות איחוד זהויות של עומסי עבודה ל-GKE כדי לגשת אל Google Cloud ממשקי API כמו Compute APIs,‏ Storage and Database APIs או Machine Learning APIs.

כדי לאמת את שירותי Knative serving, אתם צריכים:

  1. הפעלת איחוד זהויות של עומסי עבודה ל-GKE באשכול
  2. יוצרים חשבון שירות של 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.

  1. אם לא קיים חשבון שירות של Kubernetes, יוצרים אחד באותו מרחב שמות של Kubernetes כמו שירות Knative serving. אחרת, מדלגים לשלב הבא:

    kubectl create serviceaccount --namespace K8S_NAMESPACE KUBERNETES_SERVICEACCOUNT
  2. מקצים את תפקידי ה-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 שיצרתם.

המסוף

  1. נכנסים אל Knative serving במסוף Google Cloud :

    מעבר אל Knative serving

  2. אם אתם מגדירים שירות חדש שאתם פורסים, לוחצים על יצירת שירות. אם מגדירים שירות קיים, לוחצים על השירות ואז על עריכה ופריסה של גרסה חדשה.

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

  4. לוחצים על התפריט הנפתח Service account ובוחרים את חשבון השירות הרצוי.

  5. לוחצים על הבא כדי להמשיך לקטע הבא.

  6. בקטע Configure how this service is triggered (הגדרה של אופן הפעלת השירות), בוחרים את סוג הקישוריות שרוצים להשתמש בו כדי להפעיל את השירות.

  7. לוחצים על יצירה כדי לפרוס את התמונה ב-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 שבו השתמשתם כדי ליצור את זהות עומס העבודה.

YAML

אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export. אחרי זה תוכלו לשנות את קובץ ה-YAML ולהטמיע את השינויים באמצעות הפקודה gcloud run services replace. חשוב לוודא שמשנים רק את המאפיינים שצוינו.

  1. מורידים את ההגדרה של השירות לקובץ בשם service.yaml בסביבת העבודה המקומית:

    gcloud run services describe SERVICE --format export > service.yaml

    מחליפים את SERVICE בשם של שירות Knative serving.

  2. מעדכנים את המאפיין serviceAccountName: בקובץ המלאי בחנות מקומית:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: KUBERNETES_SERVICEACCOUNT

    החלפה

    • ‫SERVICE בשם של השירות שלכם ב-Knative serving.
    • ‫KUBERNETES_SERVICEACCOUNT עם חשבון השירות של Kubernetes שבו השתמשתם כדי ליצור את זהות עומס העבודה.
  3. מריצים את הפקודה הבאה כדי לפרוס את ההגדרה לשירות Knative serving:

    gcloud run services replace service.yaml

העברת שירותים קיימים לשימוש באיחוד זהויות של עומסי עבודה ל-GKE

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

השלבים הבאים

איך מנהלים את הגישה לשירותים.