חשבונות שירות ומפתחות

במסמך הזה מוסבר על חשבונות השירות והמפתחות שצריך ליצור אשכולות בהטמעה של Google Distributed Cloud. Google Cloud

ההוראות כאן מלאות. לקבלת מבוא קצר יותר לשימוש בחשבון שירות, אפשר לעיין במאמר הגדרת תשתית מינימלית.

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

יצירת Google Cloud פרויקטים.

סקירה כללית על חשבונות שירות

לפני שיוצרים את האשכולות של האדמינים והמשתמשים, צריך לוודא שיש לכם את חשבונות השירות הבאים:

  • חשבון שירות לגישה לרכיבים
  • קישור חשבון שירות
  • חשבון שירות לרישום ביומן ולמעקב

יכול להיות שתצטרכו גם חשבונות שירות אופציונליים, בהתאם לתכונות שאתם רוצים להפעיל.

הסבר על חשבונות שירות ו Google Cloud פרויקטים

כשיוצרים חשבון שירות, משייכים אותו ל Google Cloud פרויקט. הפרויקט הזה Google Cloud נקרא פרויקט האב של חשבון השירות. במסמך הזה, כל הפקודות gcloud iam service-accounts create משתמשות במשתנה placeholder‏ PROJECT_ID, שהוא מזהה הפרויקט של פרויקט האב של חשבון השירות.

אפשר לראות את פרויקט האב של חשבון שירות לפי כתובת האימייל של חשבון השירות. לדוגמה, זו כתובת האימייל של חשבון שירות בשם logger. הפרויקט הראשי הוא alice-123.

logger@alice-123.iam.gserviceaccount.com

כשמקצים תפקיד בניהול זהויות והרשאות גישה (IAM) לחשבון שירות, מקצים את התפקיד לחשבון השירות בGoogle Cloud פרויקט מסוים. הפעולה הזו תואמת לדפוס הכללי של הקצאת תפקיד לחשבון משתמש במשאב.

לדוגמה, אפשר להקצות את התפקיד bigquery.dataEditor לחשבון השירות logger@alice-123.iam.gserviceaccount.com בפרויקט bob-456. במקרה הזה, חשבון השירות הוא הגורם המקבל הרשאה, והפרויקט הוא המשאב. Google Cloud

אפשר להקצות תפקיד לחשבון שירות בפרויקט Google Cloud שאינו פרויקט האב של חשבון השירות, או שהפרויקטים יכולים להיות זהים. כדי לאפשר גמישות כזו, בפקודות gcloud projects add-iam-policy-binding של חשבון השירות של רכיב הגישה, חשבון השירות של connect-register וחשבון השירות של logging-monitoring, נעשה שימוש במשתנה placeholder‏ FLEET_HOST_PROJECT_ID. זהו המזהה של פרויקט המארח של הצי. המזהה שאתם מציינים כ-FLEET_HOST_PROJECT_ID בפקודות gcloud projects add-iam-policy-binding חייב להיות זהה.

הרשאות להקצאת תפקידים לחשבונות שירות

לכל חשבון שירות צריך להקצות תפקידים מסוימים בGoogle Cloud פרויקט הרלוונטי. לדוגמה, לחשבון השירות connect-register צריך להיות התפקיד gkehub.editor בפרויקט המארח של צי המכונות.

כדי להקצות תפקידים בפרויקט Google Cloud , צריך הרשאות מסוימות בפרויקט. פרטים נוספים זמינים במאמר הסבר על תפקידים, בקטע roles/resourcemanager.projectIamAdmin.

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

שימוש ב-gkeadm כדי ליצור חשבונות שירות באופן אוטומטי

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

חשבון שירות לגישה לרכיבים

‫Google Distributed Cloud משתמש בחשבון השירות הזה כדי להוריד רכיבי אשכול בשמכם מ-Artifact Registry.

  1. יוצרים חשבון שירות לגישה לרכיבים:

    gcloud iam service-accounts create component-access-sa \
        --display-name "Component Access Service Account" \
        --project PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה של Google Cloud הפרויקט שרוצים להגדיר כפרויקט האב של חשבון השירות.

  2. מקבלים את כתובת האימייל של חשבון השירות החדש שנוצר לגישה לרכיבים:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. יוצרים מפתח JSON לחשבון השירות של רכיב הגישה:

    gcloud iam service-accounts keys create component-access-key.json \
    --iam-account COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL
    

    מחליפים את COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL בכתובת האימייל של חשבון השירות של רכיב הגישה.

הקצאת תפקידים לחשבון השירות של רכיב הגישה

צריך להקצות לחשבון השירות של רכיב הגישה את תפקידי ה-IAM הבאים בפרויקט. התפקידים האלה נדרשים כדי ש-Google Distributed Cloud יוכל לבצע בדיקות לפני הפעלה:

  • serviceusage.serviceUsageViewer
  • iam.roleViewer
  • iam.serviceAccountViewer
  • compute.viewer

כדי להעניק את התפקידים:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.serviceAccountViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/compute.viewer"

מחליפים את FLEET_HOST_PROJECT_ID במזהה של פרויקט המארח של הצי. זה יכול להיות אותו פרויקט שבו נוצר חשבון השירות, או פרויקט אחר. מזהה הפרויקט שאתם מציינים כאן צריך להיות זהה למזהה שאתם מציינים כשאתם מעניקים תפקידי IAM לחשבון השירות connect-register ולחשבון השירות logging-monitoring.

קישור חשבון שירות

חשבון השירות הזה משמש את Google Distributed Cloud כדי לרשום את האשכולות שלכם בצי.

  1. יוצרים חשבון שירות לחיבור ולרישום:

    gcloud iam service-accounts create connect-register-sa \
        --display-name "Connect-register Service Account" \
        --project PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה שלGoogle Cloud הפרויקט שרוצים להגדיר כפרויקט ההורה של חשבון השירות connect-register.

  2. מקבלים את כתובת האימייל של חשבון השירות החדש שנוצר connect-register:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. יוצרים מפתח JSON לחשבון השירות של connect-register:

    gcloud iam service-accounts keys create connect-register-key.json \
    --iam-account CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL
    

    מחליפים את CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL בכתובת האימייל של חשבון השירות של connect-register.

  4. מקצים את התפקיד gkehub.editor לחשבון השירות connect-register:

    gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
        --member "serviceAccount:CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL" \
        --role "roles/gkehub.editor"
    

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

חשבון שירות לרישום ביומן ולמעקב

‫Google Distributed Cloud משתמש בחשבון השירות הזה כדי לייצא יומנים ומדדים מאשכולות אל Cloud Logging ו-Cloud Monitoring.

  1. יוצרים חשבון שירות לרישום ביומן ולמעקב:

    gcloud iam service-accounts create logging-monitoring-sa \
        --display-name "Logging-monitoring Service Account" \
        --project=PROJECT_ID
    

    מחליפים את הערך PROJECT_ID במזהה של הפרויקטGoogle Cloud שרוצים להגדיר כפרויקט ההורה של חשבון השירות לרישום ביומן ולמעקב.

  2. מוצאים את כתובת האימייל של חשבון השירות החדש של ניהול היומנים והמעקב:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. יוצרים מפתח JSON לחשבון השירות של שירות הרישום ביומן והמעקב:

    gcloud iam service-accounts keys create logging-monitoring-key.json \
        --iam-account LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL
    

    מחליפים את LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL בכתובת האימייל של חשבון השירות של שירות הרישום והמעקב.

הקצאת תפקידים לחשבון השירות של שירות הרישום ביומן והמעקב

לחשבון השירות של שירות הרישום ביומן והמעקב צריך להקצות את התפקידים הבאים בפרויקט:

  • opsconfigmonitoring.resourceMetadata.writer
  • logging.logWriter
  • monitoring.metricWriter
  • monitoring.dashboardEditor
  • kubernetesmetadata.publisher

כדי להקצות את התפקידים הנדרשים לחשבון השירות של רישום ביומן ומעקב:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.dashboardEditor"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/kubernetesmetadata.publisher"

מזהה הפרויקט שאתם מציינים כאן צריך להיות זהה למזהה שאתם מציינים כשאתם מעניקים תפקידי IAM לחשבון השירות של רכיב הגישה ולחשבון השירות של connect-register.

חשבונות שירות אופציונליים

חשבונות השירות שמתוארים בקטע הזה הם אופציונליים.

חשבון השירות של יומן הביקורת

‫Google Distributed Cloud משתמש בחשבון השירות הזה כדי לשלוח יומני ביקורת של Kubernetes מהאשכול אל יומני הביקורת של Cloud.

אם אתם מתכננים ליצור אשכולות עם אשכול מתקדם (שנדרש כדי להגדיר דומיינים של טופולוגיה), אתם יכולים להשתמש בחשבון השירות ובמפתח של שירות הרישום ביומן והמעקב לרישום ביומן הביקורת, במקום ליצור חשבון שירות נוסף.

  1. יוצרים חשבון שירות ליומן ביקורת:

    gcloud iam service-accounts create audit-logging-sa \
        --project PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה שלGoogle Cloud הפרויקט שרוצים להגדיר כפרויקט האב של חשבון השירות לרישום ביומן הביקורת.

  2. מקבלים את כתובת האימייל של חשבון השירות החדש שנוצר ליומן הביקורת:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. יוצרים מפתח JSON לחשבון השירות של שירות יומני הביקורת:

    gcloud iam service-accounts keys create audit-logging-key.json \
    --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
    

    מחליפים את AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL בכתובת האימייל של חשבון השירות של שירות יומני הביקורת.

אין צורך להקצות תפקידים לחשבון השירות של רישום הביקורת ביומן.

חשבון שירות של Binary Authorization

‫Google Distributed Cloud משתמש בחשבון השירות הזה כדי לקרוא ל-Binary Authorization API.

מידע על יצירת חשבון שירות של Binary Authorization זמין במאמר Binary Authorization ב-GKE on-prem.

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

יצירת תחנת עבודה לאדמין