במאמר הזה נסביר איך להשתמש בתגים כדי לנהל את האשכולות של Google Kubernetes Engine (GKE) ולהחיל מדיניות של ניהול זהויות והרשאות גישה (IAM) על צמתים באופן מותנה.
מידע על תגים
תגים הם צמדי מפתח/ערך שמאפשרים להוסיף הערות ולנהל אתGoogle Cloud המשאבים ברמת הארגון או הפרויקט. אתם יכולים להשתמש בתגים כדי לארגן את המשאבים ולהחיל באופן מותנה כללי מדיניות כמו חומות אש או כללי מדיניות של IAM. תגיות תומכות בבקרת גישה של IAM, שמאפשרת לכם להגדיר מי יכול לצרף, ליצור, לעדכן או למחוק תגיות.
תרחישים לדוגמה לשימוש בתגים ב-GKE
אפשר להשתמש בתגים ב-GKE במצבים כמו הבאים:
- החלה מותנית של מדיניות חומת אש בין רשתות על צמתים ספציפיים. לדוגמה, אפשר לחסום תעבורת נתונים נכנסת (ingress) מהאינטרנט הציבורי לכל הצמתים באשכול בסביבות פיתוח או בדיקה. הוראות זמינות במאמר בנושא החלה סלקטיבית של מדיניות חומת אש ברשת ב-GKE.
- הקצאת תפקידים ב-IAM על סמך תגים. לדוגמה, אפשר להעניק לקבלנים באופן אוטומטי גישה לסביבות ספציפיות שבדרך כלל זמינות רק לעובדים במשרה מלאה. הוראות מפורטות מופיעות בהמשך המאמר.
- בודקים ומנתחים את פרטי החיוב על סמך התגים שהוחלו ברמת הפרויקט או הארגון.
איך זה עובד
כדי לאכוף מדיניות חומת אש בין רשתות, צריך ליצור תג ולהגדיר אותו במפורש לשימוש בחומת האש. לכל שאר המטרות, יוצרים תג בלי להגדיר ייעוד של חומת אש.
אחרי שיוצרים את התג, מצרפים אותו למשאבים ב-GKE כצמד מפתח/ערך. למדיניות חומת אש בין רשתות משתמשים ב-GKE API, ולכל שאר המטרות משתמשים ב-Tags API.
לכל מפתח אפשר לצרף ערך אחד למשאב. לדוגמה, אם צירפתם את env:dev לאשכול GKE, לא תוכלו לצרף גם את env:prod או את env:test. אפשר לצרף עד 50 תגים שאינם חומת אש ועד חמישה תגים של חומת אש לכל משאב.
שיטות להוספת הערות למשאבים ב-GKE
ב-GKE יש כמה שיטות להוספת הערות למשאבים, כמו שמתואר בטבלה הבאה:
| סוג הערה | תיאור | דוגמה |
|---|---|---|
| תגים (לא חומת אש) |
מידע נוסף זמין במאמר סקירה כללית על תגים. |
התניית מתן תפקידים ב-IAM כדי לשלוט בגישה למשאבים עם תגים ספציפיים |
| תגים (חומת אש) |
מידע נוסף זמין במאמר בנושא החלה סלקטיבית של מדיניות חומת אש בין רשתות ב-GKE. |
דחייה אוטומטית של תנועת נתונים נכנסת מהאינטרנט הציבורי לכל סביבות ההכנה או הבדיקה |
| תגים ברשת |
מידע נוסף זמין במאמר בנושא שימוש בתגי רשת להחלת כללים של חומת אש על צמתים. |
דחייה אוטומטית של תנועת נתונים נכנסת מהאינטרנט הציבורי לכל סביבות ההכנה או הבדיקה |
| תוויות של אשכולות GKE |
מידע נוסף זמין במאמר בנושא תוויות של אשכולות. |
להבחין בין אשכולות שבבעלות מרכזי עלות או צוותים ספציפיים בארגון. |
| תוויות Kubernetes |
מידע נוסף זמין במאמר בנושא תוויות וסלקטורים של Kubernetes. |
הגדרת דרישה לתזמון עומסי עבודה בצמתים עם תוויות ספציפיות. |
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
ודאו שיש לכם את תפקידי ה-IAM הבאים:
roles/resourcemanager.tagAdminroles/resourcemanager.tagUser
מידע על ההרשאות שניתנות על ידי התפקידים האלה מופיע במאמר ההרשאות הנדרשות.
מוודאים שיש אשכול GKE פעיל.
צירוף תגים לאשכול
אם יש לכם את ההרשאות המתאימות, אתם יכולים לצרף תגים לאשכול קיים באמצעות Google Cloud CLI, Google Cloud המסוף, Tags API או Terraform.
gcloud
כדי לצרף תג למשאבי GKE באמצעות ה-CLI של gcloud, צריך ליצור את התג ולהגדיר את הערכים שלו. במאמרים יצירת תג והוספת ערכי תגים מוסבר איך יוצרים מפתחות וערכים של תגים.
כדי ליצור קשירת תגים לצירוף תג לאשכול, מריצים את הפקודה הבאה:
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_ID \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
TAG_VALUE_ID: המזהה הקבוע או השם במרחב השמות של ערך התג לצירוף. לדוגמה,tagValues/4567890123. פרטים על מזהי תגים זמינים במאמר בנושא הגדרות ומזהים של תגים. -
CLUSTER_LOCATION: המיקום של Compute Engine. לגבי אשכולות אזוריים, מציינים את אזור החישוב.
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CLUSTER_NAME: השם של האשכול.
-
המסוף
כדי לצרף תג למשאבי GKE באמצעות מסוףGoogle Cloud , צריך ליצור את התג ולהגדיר את הערכים שלו. במאמרים יצירת תג והוספת ערכי תגים מוסבר איך יוצרים מפתחות וערכים של תגים.
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
בקטע Metadata, לצד Tags, לוחצים על Edit tags.
אם הארגון שלכם לא מופיע בחלונית תגים, לוחצים על בחירת היקף. בוחרים את הארגון ולוחצים על פתיחה.
בחלונית Tags (תגים), לוחצים על Add tag (הוספת תג).
בוחרים מהרשימה את המקש של התג שרוצים לצרף. אפשר לסנן את הרשימה באמצעות הקלדה של מילות מפתח.
בוחרים מהרשימה את הערך של התג שרוצים לצרף. אפשר להקליד מילות מפתח כדי לסנן את הרשימה.
לוחצים על Save.
בתיבת הדו-שיח אישור, לוחצים על אישור כדי לצרף את התג.
התראה מאשרת שהתגים עודכנו.
API
כדי לצרף תג למשאב, קודם צריך ליצור ייצוג JSON של קישור תג שכולל את המזהים הקבועים של ערך התג והמשאב. בדף העזר בנושא TagBinding תוכלו לקרוא על הפורמטים של TagBinding.
משתמשים בשיטה tagBindings.create עם נקודת הקצה האזורית או האזורית שבה נמצא האשכול.
POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings
מחליפים את LOCATION באזור או בתחום שבו נמצא האשכול.
תוכן בקשת JSON:
{
"parent": "RESOURCE_ID",
"tagValue": "TAG_VALUE_ID"
}
מחליפים את מה שכתוב בשדות הבאים:
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CLUSTER_NAME: השם של האשכול.
-
TAG_VALUE_ID: המזהה הקבוע או השם במרחב השמות של ערך התג לצירוף. לדוגמה,tagValues/4567890123. פרטים על מזהי תגים זמינים במאמר בנושא הגדרות ומזהים של תגים.
הפלט אמור להיראות כך:
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding",
"name": "tagBindings///container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/tagValues/TAG_VALUE_ID",
"parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
"tagValue": "TAG_VALUE_ID"
}
}
Terraform
כדי ליצור תג, להגדיר את הערכים שלו ולצרף תג למשאב באמצעות Terraform, אפשר להיעזר בדוגמה הבאה:
מידע נוסף על שימוש ב-Terraform זמין במאמר תמיכה ב-Terraform ל-GKE.
הצגת רשימת תגים שמצורפים לאשכול
אפשר להציג את רשימת התגים שמצורפים לאשכול באמצעות ה-CLI של gcloud, Google Cloud המסוף או Tags API.
gcloud
כדי לקבל רשימה של קישורי תגים שמצורפים לאשכול, מריצים את הפקודה הבאה:
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
CLUSTER_LOCATION: באשכולות אזוריים, מציינים את אזור המחשוב. במקרה של אשכולות אזוריים, מציינים את אזור החישוב.
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
CLUSTER_NAME: השם של האשכול.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לראות.
בקטע Metadata (מטא נתונים), לצד Tags (תגים), מחפשים את ערכי התגים המצורפים.
API
כדי לקבל רשימה של קישורי תגים לאשכול, משתמשים בשיטה tagBindings.list עם נקודת הקצה האזורית או האזורית שבה האשכול ממוקם.
GET https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings
תוכן בקשת JSON:
{
"parent": RESOURCE_ID,
}
מחליפים את מה שכתוב בשדות הבאים:
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CLUSTER_NAME: השם של האשכול.
-
הפלט אמור להיראות כך:
"tagBindings": [
{
"name": "tagBindings/%2F%2Fcontainer.googleapis.com%2Fprojects%2Ftags-bugbash-project%2Flocations%2LOCATION%2Fclusters%2Ftestcluster/tagValues/758072120217",
"parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
"tagValue": "TAG_VALUE_ID"
}
]
ניתוק תגים מאשכול
כדי לבטל את הקישור של תג לאשכול, צריך למחוק את משאב הקישור של התג שמצורף לאשכול באמצעות ה-CLI של gcloud, Google Cloud המסוף או Tags API. אם אתם צריכים למחוק תג, קודם צריך לנתק אותו מכל המשאבים שהוא מצורף אליהם.
gcloud
כדי לבטל את הקישור של תג שמשויך לאשכול, מריצים את הפקודה הבאה:
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_ID \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
TAG_VALUE_ID: המזהה הקבוע או השם ממרחב השמות של ערך התג לניתוק. לדוגמה,tagValues/4567890123. פרטים על מזהי תגים זמינים במאמר הגדרות ומזהים של תגים.
CLUSTER_LOCATION: באשכולות אזוריים, מציינים את אזור המחשוב. לגבי אשכולות אזוריים, מציינים את אזור החישוב.
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
CLUSTER_NAME: השם של האשכול.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
בקטע Metadata, לצד Tags, לוחצים על Edit tags.
בחלונית תגים, לצד התג שרוצים לבטל את הקישור שלו, לוחצים על מחיקת הפריט.
לוחצים על Save.
בתיבת הדו-שיח אישור, לוחצים על אישור כדי לנתק את התג.
התראה מאשרת שהתגים עודכנו.
API
כדי למחוק את הקישורים של תגים לאשכול, משתמשים בשיטה tagBindings.delete עם נקודת הקצה האזורית או האזורית שבה האשכול ממוקם.
DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAG_BINDING_NAME
מחליפים את TAG_BINDING_NAME בשם המשאב המלא של אובייקט tagBinding שרוצים לנתק. לדוגמה, tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID.
מחיקה של מפתחות תגים וערכי תגים
לפני שמוחקים מפתחות וערכים של תגים, צריך לוודא שהתגים לא מוצמדים למשאבים. אחר כך, קוראים את המאמר בנושא מחיקת תגים כדי למחוק את המפתחות והערכים.
תנאים ותגים בניהול זהויות והרשאות גישה (IAM)
אתם יכולים להשתמש בתגים ובתנאי IAM כדי להעניק למשתמשים בהיררכיית הפרויקט שלכם תפקידים באופן מותנה. כשמשנים או מוחקים את התג שמצורף לאשכול, GKE יכול להסיר את גישת המשתמש לאשכול הזה אם הוחלה מדיניות הרשאה של IAM עם קישורי תפקידים מותנים.
הרשאה להצגת רשימה של אשכולות GKE וליצירת אשכולות נבדקת ברמת הפרויקט, ולא ברמת האשכול הבודד. אם אתם משתמשים בקשירת תפקידי IAM מותנית עם תגים ברמת האשכול כדי להגביל את הגישה לאשכולות ספציפיים, יכול להיות שהמשתמשים האלה ייתקלו בשגיאות כשהם ינסו לרשום או ליצור אשכולות בפרויקט. כדי להימנע מהשגיאות האלה, צריך לצרף תג לפרויקט האב ולהשתמש בקשירת תפקיד מותנית כדי להעניק גישה לרשימה או ליצור אותה. במאמר חומר עזר בנושא תפקידים ב-IAM מוסבר על תפקידים והרשאות.
למידע נוסף על הענקת גישה מותנית ב-IAM, אפשר לעיין במאמר תנאים ותגים בניהול זהויות והרשאות גישה.
המאמרים הבאים
- איך מגדירים מדיניות ארגונית באמצעות תגים
- איך מנהלים את התגים ומצרפים אותם למשאבים
- כאן מפורטים שירותים אחרים שתומכים בתגים.
- איך משתמשים בתגים עם IAM