לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול חשבונות שירות ותפקידים ב-IAM, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
אדמין לענייני אבטחה (
roles/iam.securityAdmin) בפרויקט של האשכול -
הגדרת חשבונות שירות בפרויקט נפרד:
אדמין לענייני אבטחה (
roles/iam.securityAdmin) בפרויקט של חשבון השירות
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הקצאת התפקיד המינימלי הנדרש ל-GKE
GKE משתמש בחשבונות שירות של IAM שמצורפים לצמתים כדי להריץ משימות מערכת כמו רישום ביומן ומעקב. לפחות, חשבונות השירות של הצמתים צריכים לקבל את התפקיד Kubernetes Engine Default Node Service Account (roles/container.defaultNodeServiceAccount) בפרויקט. כברירת מחדל, GKE משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, שנוצר באופן אוטומטי בפרויקט, כחשבון השירות של הצומת.
אם בארגון שלכם נאכף iam.automaticIamGrantsForDefaultServiceAccounts אילוץ מדיניות הארגון, יכול להיות שלחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine בפרויקט שלכם לא יוקצו באופן אוטומטי ההרשאות הנדרשות ל-GKE.
בקטעים הבאים מוסבר איך להעניק את התפקיד roles/container.defaultNodeServiceAccount לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine או לחשבון שירות חדש בהתאמה אישית שאתם יוצרים.
הגדרת חשבון השירות של Compute Engine שמוגדר כברירת מחדל
כדי להעניק את התפקיד roles/container.defaultNodeServiceAccount לחשבון השירות שמוגדר כברירת המחדל של Compute Engine, מבצעים את השלבים הבאים:
המסוף
- נכנסים לדף Welcome:
- בשדה מספר הפרויקט, לוחצים על העתקה ללוח.
- נכנסים לדף IAM:
- לוחצים על Grant access.
- בשדה New principals, מציינים את הערך הבא:
מחליפים אתPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERבמספר הפרויקט שהעתקתם. - בתפריט Select a role (בחירת תפקיד), בוחרים בתפקיד Kubernetes Engine Default Node Service Account (חשבון השירות שמשמש כברירת מחדל לצומת ב-Kubernetes Engine).
- לוחצים על Save.
gcloud
- איך מוצאים את Google Cloud מספר הפרויקט:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
מחליפים את
PROJECT_IDבמזהה הפרויקט.הפלט אמור להיראות כך:
12345678901
- מקצים לחשבון השירות של Compute Engine שמוגדר כברירת מחדל את התפקיד
roles/container.defaultNodeServiceAccount:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
מחליפים את
PROJECT_NUMBERבמספר הפרויקט מהשלב הקודם.
הגדרת חשבון שירות מותאם אישית של צומת
כדי ליצור חשבון שירות בהתאמה אישית ולהעניק לו את התפקיד הנדרש ל-GKE, צריך לבצע את הפעולות הבאות:
המסוף
- עוברים לדף Service accounts:
- לוחצים על יצירת חשבון שירות.
- מזינים שם לחשבון השירות. בשדה Service account ID נוצר אוטומטית מזהה ייחודי לחשבון השירות על סמך השם.
- לוחצים על Create and continue.
- בתפריט Select a role בוחרים בתפקיד Kubernetes Engine Default Node Service Account.
- לוחצים על סיום.
gcloud
- יוצרים את חשבון השירות:
gcloud iam service-accounts create SA_NAME
מחליפים את הערך
SA_NAMEבשם ייחודי שמזהה את חשבון השירות. - מקצים לחשבון השירות את התפקיד חשבון השירות של צומת ברירת המחדל ב-Kubernetes Engine (
roles/container.defaultNodeServiceAccount):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/container.defaultNodeServiceAccount
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
SA_NAME: השם של חשבון השירות שיצרתם.
-
Terraform
יוצרים חשבון שירות ב-IAM ומקצים לו את התפקיד roles/container.defaultNodeServiceAccount בפרויקט:
Config Connector
הערה: כדי לבצע את השלב הזה, צריך להשתמש ב-Config Connector. פועלים לפי הוראות ההתקנה כדי להתקין את Config Connector באשכול.
- כדי ליצור את חשבון השירות, מורידים את המשאב הבא בתור
service-account.yaml:מחליפים את מה שכתוב בשדות הבאים:
-
[SA_NAME]: השם של חשבון השירות החדש. -
[DISPLAY_NAME]: שם מוצג לחשבון השירות.
-
- יוצרים את חשבון השירות:
kubectl apply -f service-account.yaml
- מקצים את התפקיד
roles/logging.logWriterלחשבון השירות:- הורדת המשאב הבא כ-
policy-logging.yaml.מחליפים את מה שכתוב בשדות הבאים:
-
[SA_NAME]: השם של חשבון השירות. -
[PROJECT_ID]: מזהה הפרויקט ב- Google Cloud .
-
- מקצים את התפקיד לחשבון השירות:
kubectl apply -f policy-logging.yaml
- הורדת המשאב הבא כ-
- מקצים את התפקיד
roles/monitoring.metricWriterלחשבון השירות:- הורדת המשאב הבא כ-
policy-metrics-writer.yaml. מחליפים את[SA_NAME]ואת[PROJECT_ID]בפרטים שלכם.מחליפים את מה שכתוב בשדות הבאים:
-
[SA_NAME]: השם של חשבון השירות. -
[PROJECT_ID]: מזהה הפרויקט ב- Google Cloud .
-
- מקצים את התפקיד לחשבון השירות:
kubectl apply -f policy-metrics-writer.yaml
- הורדת המשאב הבא כ-
- מקצים את התפקיד
roles/monitoring.viewerלחשבון השירות:- הורדת המשאב הבא כ-
policy-monitoring.yaml.מחליפים את מה שכתוב בשדות הבאים:
-
[SA_NAME]: השם של חשבון השירות. -
[PROJECT_ID]: מזהה הפרויקט ב- Google Cloud .
-
- מקצים את התפקיד לחשבון השירות:
kubectl apply -f policy-monitoring.yaml
- הורדת המשאב הבא כ-
- מקצים את התפקיד
roles/autoscaling.metricsWriterלחשבון השירות:- הורדת המשאב הבא כ-
policy-autoscaling-metrics-writer.yaml.מחליפים את מה שכתוב בשדות הבאים:
-
[SA_NAME]: השם של חשבון השירות. -
[PROJECT_ID]: מזהה הפרויקט ב- Google Cloud .
-
- מקצים את התפקיד לחשבון השירות:
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- הורדת המשאב הבא כ-
אפשר גם להשתמש בחשבון השירות הזה למשאבים בפרויקטים אחרים. למידע נוסף, עיינו במאמר הפעלת התחזות לחשבון שירות בין פרויקטים.
מתן הרשאה לגורמים ראשיים לצרף חשבונות שירות בהתאמה אישית
אפשר לצרף חשבון שירות בהתאמה אישית כשיוצרים אשכול או מאגר צמתים. כדי לאפשר לחשבון משתמש (כמו אדמין פלטפורמה) להשתמש בחשבון שירות מותאם אישית כדי ליצור משאבי GKE, צריך להעניק לחשבון המשתמש הזה את התפקיד משתמש בחשבון שירות (roles/iam.serviceAccountUser) בחשבון השירות המותאם אישית. כדי להקצות את התפקיד הזה, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף Service accounts במסוף Google Cloud :
בבורר המשאבים, בוחרים את הפרויקט שמכיל את חשבון השירות המותאם אישית.
מסמנים את התיבה של חשבון השירות המותאם אישית שיצרתם לשימוש עם צמתי GKE.
לוחצים על ניהול הגישה. תיפתח החלונית ניהול הגישה.
לוחצים על Add principal. נפתחת החלונית הענקת גישה.
בשדה New principals, מציינים את החשבון הראשי, כמו קבוצת אדמינים.
בתפריט הנפתח Select a role בוחרים בתפקיד Service Account User.
לוחצים על Save. החלונית הענקת גישה נסגרת.
סוגרים את החלונית ניהול הגישה.
gcloud
הקצאת התפקיד roles/iam.serviceAccountUser:
gcloud iam service-accounts add-iam-policy-binding \
SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
--member=PRINCIPAL \
--role=roles/iam.serviceAccountUser
מחליפים את מה שכתוב בשדות הבאים:
-
SA_NAME: השם של חשבון השירות המותאם אישית. -
SERVICE_ACCOUNT_PROJECT_ID: מזהה הפרויקט שמכיל את חשבון השירות המותאם אישית. -
PRINCIPAL: המזהה של החשבון הראשי, למשלuser:baklavainthebalkans@example.com.
Config Connector
הערה: כדי לבצע את השלב הזה, צריך להשתמש ב-Config Connector. פועלים לפי הוראות ההתקנה כדי להתקין את Config Connector באשכול.
מקצים את התפקיד iam.serviceAccountUser לחשבון השירות. הורדת המשאב הבא כקובץ policy-service-account-user.yaml. מחליפים את [SA_NAME]
ואת [PROJECT_ID] בפרטים שלכם.
kubectl apply -f policy-service-account-user.yaml
אחרי שמעניקים את התפקיד בחשבון השירות, אותם חשבונות משתמשים יכולים להשתמש בחשבון השירות הזה כדי ליצור אשכולות ומאגרי צמתים. מידע נוסף זמין במאמרים הבאים:
הגדרת השימוש בחשבון שירות בפרויקטים שונים
אם חשבון השירות של הצומת לא נמצא באותו פרויקט כמו האשכול, לסוכני השירות בפרויקט של האשכול נדרשות הרשאות נוספות בחשבון השירות. מידע נוסף מופיע במאמר חשבונות שירות של צמתים וסוכני שירות של פרויקטים.
כדי להעניק את התפקידים הנדרשים בחשבונות שירות של צמתים שלא נמצאים בפרויקט של האשכול:
- כדי להפעיל צירוף של חשבונות שירות בין פרויקטים, צריך לעדכן את מדיניות הארגון.
כדי להעניק את התפקידים הנדרשים בחשבון השירות המותאם אישית לסוכני השירות בפרויקט האשכול, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף Service accounts במסוף Google Cloud .
מסמנים את התיבה של חשבון השירות המותאם אישית שיצרתם לשימוש עם צמתי GKE.
לוחצים על ניהול הגישה. תיפתח החלונית ניהול הגישה.
מקצים את התפקיד 'יצירת אסימונים בחשבון שירות' לסוכן השירות של Compute Engine בפרויקט של האשכול:
- בחלונית Manage Access, לוחצים על Add principal. נפתחת החלונית הענקת גישה.
בשדה New principals, מציינים את כתובת האימייל של סוכן השירות של Compute Engine בפרויקט של האשכול:
service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.comמחליפים את
CLUSTER_PROJECT_NUMBERבמספר הפרויקט של פרויקט האשכול.בתפריט Select a role בוחרים בתפקיד Service Account Token Creator.
לוחצים על Save. החלונית הענקת גישה נסגרת.
מקצים את התפקיד Service Account User לסוכן השירות של GKE בפרויקט של האשכול:
- בחלונית Manage Access, לוחצים על Add principal. נפתחת החלונית הענקת גישה.
בשדה New principals, מציינים את כתובת האימייל של סוכן השירות של GKE בפרויקט של האשכול:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comבתפריט Select a role בוחרים את התפקיד Service Account User.
לוחצים על Save. החלונית הענקת גישה נסגרת.
סוגרים את החלונית ניהול הגישה.
gcloud
מקבלים את מספר הפרויקט של פרויקט האשכול:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'מחליפים את
CLUSTER_PROJECT_IDבמזהה הפרויקט של פרויקט האשכול.הפלט אמור להיראות כך:
123456789.מקצים את התפקיד
roles/iam.serviceAccountTokenCreatorבחשבון השירות המותאם אישית לסוכן השירות של Compute Engine בפרויקט האשכול:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorמחליפים את מה שכתוב בשדות הבאים:
-
SA_NAME: השם של חשבון השירות המותאם אישית. -
SERVICE_ACCOUNT_PROJECT_ID: מזהה הפרויקט שמכיל את חשבון השירות המותאם אישית. -
CLUSTER_PROJECT_NUMBER: מספר הפרויקט של פרויקט האשכול.
-
מקצים את התפקיד
roles/iam.serviceAccountUserבחשבון השירות המותאם אישית לסוכן השירות של GKE בפרויקט של האשכול:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
התרת שליפת תמונות ממאגרים פרטיים
אם יש לכם תמונות במאגרי Artifact Registry פרטיים, אתם צריכים לתת לחשבון השירות של הצומת גישה למאגרים האלה. גם אם משתמשים בחשבון השירות שמוגדר כברירת מחדל של Compute Engine, יכול להיות שיהיה צורך לתת לחשבון השירות גישה למאגר אם המאגר נמצא בפרויקט אחר.
Google Cloudכדי למשוך תמונות פרטיות מ-Artifact Registry, צריך להעניק את התפקיד 'קורא Artifact Registry' (roles/artifactregistry.reader) במאגר לחשבון השירות של הצומת.
המסוף
נכנסים לדף Repositories במסוף Google Cloud .
מסמנים את התיבה של המאגר.
לוחצים על הצגת חלונית המידע. חלונית פרטי המאגר תיפתח.
בכרטיסייה Permissions, לוחצים על Add principal. נפתחת החלונית הענקת גישה.
בשדה New principals, מציינים את כתובת האימייל של חשבון השירות של הצומת.
לוחצים על Select a role (בחירת תפקיד) כדי לפתוח את תיבת הדו-שיח לבחירת תפקיד.
בוחרים בתפקיד Artifact Registry Reader.
לוחצים על Save.
gcloud
הקצאת התפקיד roles/artifactregistry.reader במאגר:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY_NAME \
--member=serviceAccount:SERVICE_ACCOUNT_EMAIL \
--project=REPOSITORY_PROJECT_ID \
--role=roles/artifactregistry.reader
מחליפים את מה שכתוב בשדות הבאים:
-
REPOSITORY_NAME: השם של מאגר Artifact Registry. -
SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות של הצומת. -
REPOSITORY_PROJECT_ID: מזהה הפרויקט שמכיל את המאגר.
Config Connector
הערה: כדי לבצע את השלב הזה, צריך להשתמש ב-Config Connector. פועלים לפי הוראות ההתקנה כדי להתקין את Config Connector באשכול.
שומרים את קובץ המניפסט הבא בשם
policy-artifact-registry-reader.yaml:מחליפים את מה שכתוב בשדות הבאים:
- SA_NAME: השם של חשבון השירות ב-IAM.
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- REPOSITORY_NAME: השם של מאגר Artifact Registry.
מקצים לחשבון השירות את התפקיד Artifact Registry Reader:
kubectl apply -f policy-artifact-registry-reader.yaml