אם אתם רושמים אשכול GKE ב- Google Cloud, יכול להיות שתצטרכו לבצע אחת או יותר מהפעולות הבאות לפני רישום האשכול, בהתאם לאפשרות הרישום שתבחרו. במדריך הזה, אנחנו יוצאים מנקודת הנחה שכבר השלמתם את הדרישות המוקדמות הכלליות לרישום אשכולות.
הפעלת איחוד זהויות של עומסי עבודה ל-GKE
מומלץ לרשום את אשכולות GKE עם איחוד שירותי אימות הזהות של עומסי עבודה מופעל, כדי לספק דרך עקבית לאימות אפליקציות באשכולות ל- Google Cloud APIs ולשירותים. במאמר שימוש ב-Fleet Workload Identity Federation אפשר לקרוא על היתרונות של הפעלת איחוד זהויות של עומסי עבודה ב-Fleet.
כדי להשתמש בתכונה הזו, צריך לוודא שאיחוד שירותי אימות הזהות של עומסי עבודה ב-GKE מופעל באשכול לפני הרישום. רישום של אשכול GKE ב-Workload Identity Federation של Fleet בלי להפעיל את Workload Identity Federation ל-GKE באשכול עלול לגרום לחוסר עקביות באופן שבו עומסי עבודה באשכול מאמתים את הזהות, וההגדרה הזו לא נתמכת. בקטרי Autopilot, איחוד זהויות של עומסי עבודה ל-GKE מופעל כברירת מחדל.
gcloud
כדי לבדוק אם איחוד זהויות של עומסי עבודה ל-GKE מופעל באשכול, מריצים את הפקודה הבאה כדי להציג את מאגר הזהויות של עומסי העבודה באשכול. אם עדיין לא ציינתם אזור או אזור ברירת מחדל ל-gcloud, אתם צריכים לציין את הדגל --region או --zone כשאתם מריצים את הפקודה הזו.
gcloud container clusters describe CLUSTER_NAME --format="value(workloadIdentityConfig.workloadPool)"
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER_NAME:
nameשל אשכול GKE.
אם אתם רואים תוצאה שדומה לתוצאה הבאה, סימן שאיחוד זהויות של עומסי עבודה ל-GKE כבר מופעל באשכול:
GKE_PROJECT_ID.svc.id.goog
אם לא מוצגות תוצאות, סימן שאיחוד זהויות של עומסי עבודה ל-GKE לא מופעל. פועלים לפי ההוראות במאמר בנושא הפעלת איחוד זהויות של עומסי עבודה ל-GKE.
המסוף
כדי לבדוק אם איחוד זהויות של עומסי עבודה ל-GKE מופעל באשכול:
עוברים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול.
בדף פרטי האשכול, בקטע Security, מוודאים שWorkload Identity מופיע כEnabled.
אם Workload Identity מושבת ואתם רוצים להפעיל את התכונה הזו:
- בדף הפרטים של האשכול, לוחצים על עריכת Workload Identity.
- בתיבת הדו-שיח Edit Workload Identity, מסמנים את התיבה Enable Workload Identity.
- לוחצים על שמירת השינויים.
מתן הרשאות לרישום אשכול בפרויקט אחר
כדי לרשום אשכול GKE לצי בתוך הפרויקט שלו, לא נדרשות הרשאות מיוחדות מעבר לאלה שמתוארות במאמר הענקת הרשאות גישה. עם זאת, אם רוצים לרשום אשכול GKE מפרויקט משלו (GKE_PROJECT) ל-Fleet בפרויקט אחר (FLEET_HOST_PROJECT), לחשבון סוכן השירות gcp-sa-gkehub בפרויקט FLEET_HOST_PROJECT צריך להיות התפקיד gkehub.serviceAgent בפרויקט GKE_PROJECT. התפקיד הזה מעניק לחשבון השירות את ההרשאות לניהול משאבי האשכול באותו פרויקט.
כדי לבדוק אם לחשבון השירות של פרויקט המארח של צי הרכבים gcp-sa-gkehub יש את התפקיד הנדרש בפרויקט של האשכול, אפשר להשתמש ב-CLI של gcloud או במסוף Google Cloud , באופן הבא.
gcloud
מריצים את הפקודה הבאה:
gcloud projects get-iam-policy GKE_PROJECT_ID | grep gcp-sa-gkehub
כאשר GKE_PROJECT_ID הוא מזהה הפרויקט של האשכול.
אם לפרויקט המארח של ה-Fleet gcp-sa-gkehub יש את התפקידים הנדרשים בפרויקט של האשכול, הוא אמור להופיע בפלט בפורמט service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com. לדוגמה:
- members:
- serviceAccount:service-1234567890@gcp-sa-gkehub.iam.gserviceaccount.com
role: roles/gkehub.serviceAgent
המסוף
אחרי שבוחרים את הפרויקט של האשכול, עוברים לדף IAM & Admin במסוף Google Cloud .
כדי לראות את כללי המדיניות המלאים של ההרשאות, כולל סוכני שירות, מסמנים את התיבה Include Google-provided role grants.
אם לחשבון השירות של פרויקט המארח של ה-Fleet gcp-sa-gkehub יש את התפקידים הנדרשים בפרויקט של האשכול, הוא אמור להופיע ברשימה הזו בתבנית service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com.
אם סוכן השירות לא מופיע במדיניות ההרשאה של הפרויקט ב-IAM, צריך לבצע את הפעולות הבאות כדי לעדכן את ההרשאות הנדרשות:
gcloud
כדי להקצות
gcp-sa-gkehubאת התפקידgkehub.serviceAgent, קודם צריך לוודא שחשבון השירות הזה קיים בפרויקט המארח של צי הרכבים. אם רשמתם אשכולות בפרויקט הזה של Fleet בעבר, חשבון השירות הזה כבר אמור להתקיים. אפשר לבדוק את זה במדיניות ההרשאות של IAM בפרויקט המארח של צי המכונות:gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID | grep gcp-sa-gkehubאם אתם צריכים ליצור את חשבון השירות
gcp-sa-gkehub, מריצים את הפקודה הבאה:gcloud beta services identity create --service=gkehub.googleapis.com --project=FLEET_HOST_PROJECT_IDהפלט של הפקודה הזו צריך להיות:
Service identity created: service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.comמריצים את הפקודה הבאה כדי להעניק לחשבון השירות את התפקיד
roles/gkehub.serviceAgentבשני הפרויקטים ואת התפקידroles/gkehub.crossProjectServiceAgentבפרויקט של האשכול:GKE_PROJECT_ID=GKE_PROJECT_ID FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)") gcloud projects add-iam-policy-binding "${FLEET_HOST_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.crossProjectServiceAgentwhere:
- GKE_PROJECT_ID הוא Google Cloud מזהה הפרויקט של אשכול GKE.
- FLEET_HOST_PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud שבו רוצים לרשום את האשכולות. איך מוצאים את הערך הזה
כדי לוודא שהתפקיד הוקצה, מריצים שוב את הפקודה הבאה:
gcloud projects get-iam-policy GKE_PROJECT_IDאם אתם רואים את שם חשבון השירות יחד עם התפקידים
gkehub.serviceAgentו-gkehub.crossProjectServiceAgent, סימן שהוקצו קישורי התפקידים. לדוגמה:- members: - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com role: roles/gkehub.serviceAgent - members: - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com role: roles/gkehub.crossProjectServiceAgent
הגדרת חשבון שירות ל-Terraform
אם רוצים להשתמש ב-Terraform כדי לרשום אשכול Google Kubernetes Engine, צריך ליצור חשבון שירות ש-Terraform יכול להשתמש בו כדי לגשת אל Fleet API וליצור חברות.
gcloud
יוצרים חשבון שירות באופן הבא:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_IDמקשרים את תפקיד
gkehub.adminב-IAM לחשבון השירות כדי ש-Terraform יוכל להשתמש בו עם Fleet API:FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.admin"אם רוצים ליצור אשכול חדש באמצעות Terraform ואז לרשום אותו, צריך גם לקשר את התפקיד
roles/container.adminלחשבון השירות כדי ש-Terraform יוכל להשתמש בחשבון השירות הזה כדי לגשת ל-GKE API וליצור אשכול.FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/container.admin"מחליפים את מה שכתוב בשדות הבאים:
- FLEET_HOST_PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud שבו רוצים לרשום את האשכולות. איך מוצאים את הערך הזה
- SERVICE_ACCOUNT_NAME הוא השם המוצג שבחרתם עבור [חשבון השירות].
מורידים את קובץ ה-JSON של המפתח הפרטי של חשבון השירות, כמו שמתואר במאמר יצירת חשבון שירות באמצעות
gcloud. Google Cloud תצטרכו את הקובץ הזה כדי ליצור ולא לרשום אשכולות באמצעות Terraform.
הגדרת חשבון שירות ל-Config Connector
כדי להשתמש ב-Config Connector כדי לרשום אשכול GKE:
gcloud
מוודאים שהתקנתם את התוסף Config Connector. צריכה להיות לכם גרסה של Config Connector מעל 1.47.0.
פועלים לפי ההוראות של Config Connector כדי ליצור חשבון שירות.
מבצעים קישור של תפקיד
gkehub.adminב-IAM לחשבון השירות הזה, כדי ש-Config Connector יוכל להשתמש בחשבון השירות הזה כדי לגשת ל-Fleet API:FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.admin"אם רוצים ליצור אשכול חדש באמצעות Config Connector ואז לרשום אותו, צריך גם לקשר את התפקיד
roles/container.adminלחשבון השירות, כדי שבקר Config Connector יוכל להשתמש בחשבון השירות הזה כדי לגשת ל-GKE API וליצור אשכול.FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/container.admin"מחליפים את מה שכתוב בשדות הבאים:
- FLEET_HOST_PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud שבו רוצים לרשום את האשכולות. איך מוצאים את הערך הזה
- SERVICE_ACCOUNT_NAME הוא השם המוצג שבחרתם עבור [חשבון השירות].
פועלים לפי ההוראות להגדרת Config Connector כדי להגדיר את Config Connector עם חשבון השירות הזה.
מה השלב הבא?
פועלים לפי ההוראות כדי לרשום אשכול.