דרישות מוקדמות כלליות

כמו שראיתם בסקירה הכללית על יצירת צי, אשכולות GKE מקומיים ב-VMware ובשרת פיזי, ואשכולות מרובי עננים (גם ב-AWS וגם ב-Azure) נרשמים אוטומטית לצי הפרויקטים שלכם בזמן יצירת האשכול. עם זאת, צריך לרשום ידנית אשכולות GKE ב- Google Cloud ואשכולות Kubernetes של צד שלישי (אשכולות מצורפים) כדי להוסיף אותם לצי. פרטים נוספים על אפשרויות שונות להרשמה זמינים במאמר 'סקירה כללית על יצירת צי'.

בדף הזה מתוארות הדרישות המוקדמות לרישום ידני של כל אשכול Kubernetes ל- Google Cloud Fleet. יש גם דרישות נפרדות ספציפיות לאשכולות GKE ב- Google Cloud ולאשכולות מצורפים. אחרי שתסיימו את המדריך הזה, תצטרכו לפעול לפי ההוראות לסוג האשכול שאתם רוצים לרשום.

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

התקנה של כלי שורת הפקודה

ודאו שכלי שורת הפקודה הבאים מותקנים. אם אתם משתמשים ב-Cloud Shell כסביבת המעטפת שלכם לאינטראקציה עם Google Cloud, הכלים האלה מותקנים בשבילכם.

התקנת Google Cloud CLI

‫Google Cloud CLI הוא ממשק שורת הפקודה (CLI) של Google Cloud. אפשר לרשום אשכולות באמצעות Google Cloud CLI או, בהתאם לסוג האשכול, באמצעות כלים אחרים כמו Terraform או מסוף Google Cloud . עם זאת, גם אם לא משתמשים בו לרישום אשכולות, gcloud נדרש או שימושי עבור רבים משלבי ההגדרה האחרים במדריך הזה.

  1. אם הוא לא מותקן, מתקינים את Google Cloud CLI לפי הוראות ההתקנה. מומלץ להשתמש בגרסה העדכנית ביותר של Google Cloud CLI. כדי לרשום אשכולות, צריך גרסה 361.0.0 ואילך, וכדי להשתמש בפקודות הרישום שאינן מדור קודם ל-GKE, צריך גרסה 423.0.0 ואילך, עם רכיב אלפא או בטא מותקן.

  2. מריצים את הפקודה הבאה כדי להתחבר אל Google Cloud:

    gcloud auth login
  3. (אופציונלי) אם אתם מתכננים לנסות תכונות אלפא או בטא, ודאו שהרכיב gcloud beta מותקן אצלכם:

     gcloud components install beta 

התקנת kubectl

למרות שלא צריך את kubectl כדי לרשום אשכול, יכול להיות שתצטרכו אותו כדי להעניק את ההרשאות הנדרשות של בקרת גישה מבוססת-תפקידים (RBAC) למשתמש שרושם את האשכול (אם הוא לא הבעלים של האשכול), וגם להגדרות אחרות שספציפיות לפלטפורמה. צריך להשתמש בגרסה של Google Kubernetes Engine ‏ (GKE) שהיא לפחות הגרסה המינימלית הנתמכת של Kubernetes.kubectl

מומלץ להתקין את kubectl באמצעות Google Cloud CLI.

כדי לבדוק את הגרסה של kubectl:

kubectl version

גרסת הלקוח מצוינת על ידי gitVersion בפלט.

כדי להתקין את kubectl:

gcloud components install kubectl

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

צריך להפעיל את ממשקי ה-API הבאים בפרויקט המארח של צי המכשירים:

  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com, שנקרא גם Fleet API. זהו השירות של Google Cloud שמטפל ברישום האשכולות ובחברות ב-Fleet.
  • cloudresourcemanager.googleapis.com

ל-Pods באשכול שרוצים לרשום צריכה להיות גישה לכתובות googleapis.com ו-gkeconnect.googleapis.com, ישירות או באמצעות שרת proxy מוגדר.

אם רוצים להפעיל את Workload Identity ב-Fleet במהלך הרישום, צריך להפעיל גם את האפשרויות הבאות:

  • iam.googleapis.com

למשתמשים שאינם בעלי הפרויקט צריך להעניק את ההרשאה serviceusage.services.enable כדי שיוכלו להפעיל ממשקי API.

gcloud

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

gcloud services enable \
   --project=FLEET_HOST_PROJECT_ID \
   container.googleapis.com \
   gkeconnect.googleapis.com \
   gkehub.googleapis.com \
   cloudresourcemanager.googleapis.com \
   iam.googleapis.com

where:

אם אתם לא רוצים להפעיל את Workload Identity בצי, אתם יכולים להשמיט את iam.googleapis.com.

כדי לראות את רשימת ממשקי ה-API שכבר הפעלתם בפרויקטים, פועלים לפי ההוראות שבקטע Listing Services במסמכי התיעוד של שימוש בשירות.

מתן הרשאות גישה

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

מתן הרשאות לרישום אשכול

כדי לרשום אשכולות, צריך הרשאות IAM בפרויקט המארח של ה-Fleet. אם יש לכם את התפקיד roles/owner בפרויקט המארח של צי המכונות, הוא מוקצה לכם באופן אוטומטי ויש לכם את כל הרשאות הגישה שאתם צריכים כדי לבצע את כל משימות הרישום.

אם אין לכם roles/owner בפרויקט, אתם צריכים לקבל תפקידי IAM ספציפיים כדי שתוכלו לקשר אשכולות ל-Google, באופן הבא:

  • כדי לרשום אשכול ב-Fleet Workload Identity לצורך אימות ב-Google, צריך רק את תפקיד ה-IAM הבא:

    • roles/gkehub.admin
  • חלק מאפשרויות הרישום מחוץ ל- Google Cloud מחייבות להגדיר חשבון שירות שהאשכול ישתמש בו כדי לבצע אימות ל-Google במקום Workload Identity. כדי לרשום את האשכול ולנהל את חשבון השירות הזה, צריך את קבוצת התפקידים הבאה:

    • roles/gkehub.admin
    • roles/iam.serviceAccountAdmin
    • roles/iam.serviceAccountKeyAdmin
    • roles/resourcemanager.projectIamAdmin

רשימה של ההרשאות המפורטות שכלולות בתפקידים gkehub מופיעה במאמר תפקידי IAM ב-Connect.

gcloud

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

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
   --member user:GCP_EMAIL_ADDRESS \
   --role=ROLE

where:

  • FLEET_HOST_PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud שבו רוצים לרשום את האשכולות. איך מוצאים את הערך הזה
  • GCP_EMAIL_ADDRESS הוא החשבון שבו המשתמש משתמש כדי להיכנס ל- Google Cloud.
  • ROLE הוא תפקיד ה-IAM שרוצים להעניק, למשל roles/gkehub.admin.

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

הענקת הרשאות אדמין של אשכול

בנוסף להרשאות שנדרשות כדי לרשום אשכול, אתם צריכים גם הרשאות אדמין באשכול עצמו. בהתאם למיקום האשכול, אפשר להקצות את ההרשאה הזו באמצעות תפקידי IAM או בקרת גישה מבוססת-תפקידים (RBAC) של Kubernetes.

אשכולות GKE ב- Google Cloud

אם אתם משתמשים באשכולות GKE ב- Google Cloud בלבד, תוכלו להוסיף את תפקיד ה-IAM הבא כדי לקבל הרשאות אדמין באשכול, אם עדיין אין לכם אותו (סביר להניח שיש לכם אותו בחשבון המשתמש אם יצרתם את האשכול):

  • roles/container.admin

תפקיד ה-IAM הזה כולל את תפקיד ה-RBAC של Kubernetes‏ cluster-admin. בסביבות אשכולות אחרות, צריך להעניק את תפקיד ה-RBAC הזה באמצעות kubectl, כמו שמתואר בקטע הבא. מידע נוסף על הקשר בין תפקידי IAM לבין תפקידי RBAC ב-GKE זמין במסמכי GKE.

מקבצים מחוץ Google Cloud

כדי לצרף אשכולות של צד שלישי מחוץ ל- Google Cloud, צריך לוודא שלמשתמש שרושם את האשכול יש תפקיד cluster-admin ב-Kubernetes RBAC.

kubectl

אם אתם יצרתם את האשכול, סביר להניח שיש לכם את התפקיד הזה. כדי לוודא זאת, מריצים את הפקודה הבאה:

kubectl auth can-i '*' '*' --all-namespaces

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

kubectl create clusterrolebinding BINDING_NAME --clusterrole cluster-admin --user USER

where:

  • BINDING_NAME הוא שם שאתם בוחרים למשאב ClusterRoleBinding.
  • USER היא הזהות שמשמשת לאימות מול האשכול.

מה השלב הבא?

פועלים לפי מדריך הדרישות המוקדמות לסוג האשכול שרוצים לרשום: