הגדרת משאבים ב-Google Cloud

כדי להכין את הסביבה ליצירת אשכול, צריך להגדיר את המשאבים הנדרשים של Google Cloud . ההגדרה הזו יוצרת את חשבונות השירות, תפקידי ה-IAM וממשקי ה-API הנדרשים לפני פריסת האשכולות.

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

  1. יוצרים פרויקט Google Cloud וחשבון לחיוב.

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

    תפקיד מטרה
    roles/compute.viewer חובה: נדרש כש-bmctl מאמת את השדה clusterOperations.location בקובץ התצורה של האשכול.
    roles/iam.serviceAccountAdmin חובה: נדרש כדי ליצור את חשבונות השירות שנדרשים ל-Google Distributed Cloud.
    roles/iam.securityAdmin חובה: נדרש כדי להקצות תפקידי IAM לחשבונות השירות שנדרשים ל-Google Distributed Cloud.
    roles/iam.serviceAccountKeyAdmin נדרש: כדי ליצור קובצי מפתחות בפורמט JSON לחשבונות השירות שנדרשים ל-Google Distributed Cloud.
    roles/serviceusage.serviceUsageAdmin חובה: כדי להפעיל את ממשקי ה-API של Google שנדרשים ל-Google Distributed Cloud.
    roles/gkeonprem.admin אופציונלי: נדרש אם רוצים ליצור אשכולות באמצעות לקוחות GKE On-Prem API או להגדיר אשכול שינוהל על ידי GKE On-Prem API.
    roles/gkehub.viewer
    roles/container.viewer
    אופציונלי: נדרש אם רוצים לגשת לדפי GKE במסוף Google Cloud .

    איך נותנים גישה לפרויקטים, לתיקיות ולארגונים

הפעלת ממשקי ה-API

צריך להפעיל כמה ממשקי Google API בפרויקט המשויך ב- Google Cloud . ‫Google Distributed Cloud משתמש בממשקי ה-API כשיוצרים אשכולות. ממשקי ה-API נדרשים גם כדי לשמור על החיבור ל- Google Cloud. החיבור ל- Google Cloud מאפשר ל-Google Distributed Cloud להשתמש ב-Cloud Logging וב-Cloud Monitoring, ובתכונות של Fleet כמו Cloud Service Mesh, סנכרון תצורות, Policy Controller ו-Config Controller.

אם אתם משתמשים בכלי bmctl כדי ליצור אשכולות, אתם יכולים לכלול את הדגל --enable-apis כשאתם מריצים את bmctl create config, והכלי bmctl יפעיל את ממשקי ה-API שמפורטים בפקודת gcloud services enable הבאה. אם אתם משתמשים בלקוח GKE On-Prem API כדי ליצור אשכול אדמין או אשכול משתמש, אתם צריכים להפעיל את ממשקי ה-API לפני שאתם יוצרים את האשכול.

כדי להפעיל את ממשקי ה-API, מריצים את הפקודות הבאות:

  1. מתחברים ל-Google Cloud CLI:

    gcloud auth login
    
  2. מפעילים את ממשקי ה-API הבאים:

    gcloud services enable --project=PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        compute.googleapis.com \
        connectgateway.googleapis.com \
        container.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        gkeonprem.googleapis.com \
        iam.googleapis.com \
        kubernetesmetadata.googleapis.com \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        storage.googleapis.com
    

    חוץ מ-gkeonprem.googleapis.com, ממשקי ה-API האלה של Google נדרשים לפרויקט. שני ממשקי ה-API הבאים נדרשים רק לגרסה 1.29 ואילך:

    • compute.googleapis.com
    • kubernetesmetadata.googleapis.com

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

  3. כדי לראות אילו ממשקי API ושירותים מופעלים בפרויקט, מריצים את הפקודה הבאה:

    gcloud services list --project=PROJECT_ID \
        --enabled
    

הגדרת חשבונות שירות

כדי להשתמש ב-Google APIs, ב-Google Distributed Cloud נדרש חשבון שירות שמוגדרים בו תפקידי IAM ספציפיים בפרויקט המשויך ב- Google Cloud . מומלץ ליצור חשבונות שירות נפרדים למטרות שונות, במיוחד בסביבות ייצור.

אם אתם משתמשים בכלי bmctl כדי ליצור אשכולות, אתם יכולים לכלול את הדגל --create-service-accounts כשאתם מריצים את bmctl create config כדי ש-bmctl ייצור את חשבונות השירות עם תפקידי ה-IAM הנדרשים. אם אתם משתמשים בלקוח GKE On-Prem API כדי ליצור אשכול אדמין, כברירת מחדל הפקודה bmctl register bootstrap יוצרת את חשבונות השירות עם תפקידי ה-IAM הנדרשים כשמריצים את הפקודה ליצירת אשכול Bootstrap.

חשבונות השירות נדרשים גם ליצירת אשכולות של משתמשים, אבל חשבונות השירות נוצרים ומוגדרים כשיוצרים את אשכול הניהול שמנהל את אשכולות המשתמשים.

בטבלה הבאה מתוארים חשבונות השירות שנוצרים באופן אוטומטי:

חשבון שירות מטרה תפקידים
anthos-baremetal-gcr ‫Google Distributed Cloud משתמש בחשבון השירות הזה כדי להוריד קובצי אימג' של קונטיינרים מ-Artifact Registry. ללא
anthos-baremetal-connect Connect Agent משתמש בחשבון השירות הזה כדי לשמור על החיבור בין האשכול לבין Google Cloud. כך אפשר לגשת לאשכול ולתכונות של ניהול עומסי העבודה, כולל מסוף Google Cloud ושער הקישור, כדי לבצע פעולות באשכול. roles/gkehub.connect
anthos-baremetal-register ‫Connect Agent משתמש בחשבון השירות הזה כדי לרשום את האשכולות שלכם ב צי. roles/gkehub.admin
anthos-baremetal-cloud-ops הסוכן של Stackdriver משתמש בחשבון השירות הזה כדי לייצא יומנים ומדדים מאשכולות אל Cloud Logging ואל Cloud Monitoring. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor
roles/monitoring.viewer
roles/serviceusage.serviceUsageViewer
roles/kubernetesmetadata.publisher

הגדרה ידנית של חשבונות שירות

אם אתם מעדיפים, אתם יכולים ליצור את חשבונות השירות באופן ידני, להגדיר להם את התפקידים הנדרשים ולהוריד קובצי מפתחות בפורמט JSON לפני שאתם יוצרים אשכולות. אם אתם משתמשים ב-bmctl כדי ליצור אשכולות, אתם צריכים להוסיף הפניות לקובצי המפתחות בפורמט JSON לקובץ התצורה המתאים של האשכול. דוגמה לכך מופיעה בקטע עריכת קובץ התצורה. אם אתם משתמשים ב-GKE On-Prem API כדי ליצור אשכול אדמין, אתם יכולים לציין את קובצי המפתחות כשאתם מריצים את bmctl register bootstrap כדי ליצור את אשכול ה-bootstrap.

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

  1. בתחנת העבודה של האדמין, מוודאים שאתם נמצאים בספרייה baremetal.

  2. אם עדיין לא עשיתם זאת, היכנסו ל-Google Cloud CLI:

    gcloud auth login
    
  3. יוצרים את חשבונות השירות:

    gcloud iam service-accounts create anthos-baremetal-gcr \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-connect \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-register \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-cloud-ops \
        --project=PROJECT_ID
    
  4. מקצים את תפקידי ה-IAM הנדרשים בחשבונות השירות:

    gcloud projects add-iam-policy-binding  PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/gkehub.connect"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/logging.logWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/stackdriver.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/opsconfigmonitoring.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.dashboardEditor"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.viewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/kubernetesmetadata.publisher"
    
  5. מורידים את קובצי המפתחות בפורמט JSON של חשבון השירות:

    gcloud iam service-accounts keys create anthos-baremetal-gcr.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-agent.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-register.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
    

הגדרת חשבון שירות שיכול לגשת לקטגוריה של Cloud Storage

אתם משתמשים בחשבון שירות ובקובץ מפתח כדי לגשת ל-Cloud Storage. אתם יכולים להשתמש בחשבון השירות הזה כדי לאפשר העלאה אוטומטית של קובצי Snapshot של אשכולות לקטגוריות של Cloud Storage, או כדי לייבא קובצי אימג' של מכונות וירטואליות (VM) מקטגוריות של Cloud Storage לשימוש עם VM Runtime ב-GDC.

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

  1. חשוב לוודא שאתם נמצאים בספרייה baremetal.

  2. אם עדיין לא עשיתם את זה, מתחברים ל-Google Cloud CLI:

    gcloud auth login
    
  3. אם Cloud Storage API לא מופעל, מפעילים אותו (storage.googleapis.com) בפרויקט ב- Google Cloud :

    gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
    
  4. יוצרים חשבון שירות שהאשכול יכול להשתמש בו כדי לגשת לקטגוריות של Cloud Storage:

    gcloud iam service-accounts create SA_NAME \
        --project=PROJECT_ID
    

    מחליפים את SA_NAME בשם של חשבון השירות החדש. השם של חשבון השירות מופיע בכתובת האימייל שמוקצית במהלך היצירה, בפורמט SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

  5. יוצרים תפקיד בהתאמה אישית עם ההרשאות הבאות:

    • storage.buckets.create
    • storage.buckets.get
    • storage.buckets.list
    • storage.objects.create
    • resourcemanager.projects.get
    gcloud iam roles create ROLE_ID \
        --permissions=storage.buckets.create,storage.buckets.get,storage.buckets.list,storage.objects.create \
        --project=PROJECT_ID
    

    מחליפים את ROLE_ID בשם של התפקיד החדש בהתאמה אישית, למשל snapshotUpload. הנתיב המלא של התפקיד בהתאמה אישית הוא בפורמט projects/PROJECT_ID/roles/ROLE_ID.

  6. מוסיפים קישור מדיניות לחשבון השירות:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role='projects/PROJECT_ID/roles/ROLE_ID'
    
  7. מורידים את קובץ המפתח בפורמט JSON של חשבון השירות:

    gcloud iam service-accounts keys create OUTPUT_FILE \
        --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

מידע נוסף על יצירת קובצי snapshot של אשכולות והעלאה אוטומטית שלהם לקטגוריה של Cloud Storage זמין במאמר יצירת קובצי snapshot כדי לאבחן בעיות באשכול.

למידע נוסף על ייבוא קובצי אימג' של מכונות וירטואליות מ-Cloud Storage, קראו את המאמר יצירת פרטי כניסה ושימוש בהם כדי לייבא קובצי אימג' מ-Cloud Storage ל-VM Runtime on GDC.