ניהול משאבי GKE באמצעות תגים

במאמר הזה נסביר איך להשתמש בתגים כדי לנהל את האשכולות של 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 יש כמה שיטות להוספת הערות למשאבים, כמו שמתואר בטבלה הבאה:

סוג הערה תיאור דוגמה
תגים (לא חומת אש)
  • הגשת בקשה למשאב של אשכול באמצעות Tags API
  • ארגון משאבים למעקב אחר השימוש והחיוב
  • החלה של מדיניות IAM בתנאי
  • שליטה בגישה לתגים ספציפיים באמצעות IAM

מידע נוסף זמין במאמר סקירה כללית על תגים.

התניית מתן תפקידים ב-IAM כדי לשלוט בגישה למשאבים עם תגים ספציפיים
תגים (חומת אש)
  • הגשת בקשה לאשכול או למאגר צמתים באמצעות GKE API
  • החלה מותנית של מדיניות חומת אש בין רשתות Cloud Next Generation Firewall.
  • שליטה בגישה לתגים ספציפיים באמצעות IAM
  • ‫GKE מצרף את צמדי המפתח/ערך למכונות הווירטואליות הבסיסיות של Compute Engine.

מידע נוסף זמין במאמר בנושא החלה סלקטיבית של מדיניות חומת אש בין רשתות ב-GKE.

דחייה אוטומטית של תנועת נתונים נכנסת מהאינטרנט הציבורי לכל סביבות ההכנה או הבדיקה
תגים ברשת
  • הגשת בקשה לאשכול או למאגר צמתים באמצעות GKE API
  • מחרוזות פשוטות ללא בקרת גישה ב-IAM
  • משמש להחלת כללים של חומת אש ב-VPC באופן מותנה
  • ‫GKE מצרף את צמדי המפתח/ערך למכונות הווירטואליות הבסיסיות של Compute Engine

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

דחייה אוטומטית של תנועת נתונים נכנסת מהאינטרנט הציבורי לכל סביבות ההכנה או הבדיקה
תוויות של אשכולות GKE
  • הגשת בקשה לאשכול או למאגר צמתים באמצעות GKE API
  • ארגון משאבים למעקב אחר השימוש והחיוב

מידע נוסף זמין במאמר בנושא תוויות של אשכולות.

להבחין בין אשכולות שבבעלות מרכזי עלות או צוותים ספציפיים בארגון.
תוויות Kubernetes
  • החלת תווית על אובייקטים ב-Kubernetes API
  • לשייך רכיבים ומשאבים של אשכול זה לזה ולנהל את מחזורי החיים של המשאבים.

מידע נוסף זמין במאמר בנושא תוויות וסלקטורים של Kubernetes.

הגדרת דרישה לתזמון עומסי עבודה בצמתים עם תוויות ספציפיות.

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

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק ה-API של Google Kubernetes Engine.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

צירוף תגים לאשכול

אם יש לכם את ההרשאות המתאימות, אתם יכולים לצרף תגים לאשכול קיים באמצעות 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 , צריך ליצור את התג ולהגדיר את הערכים שלו. במאמרים יצירת תג והוספת ערכי תגים מוסבר איך יוצרים מפתחות וערכים של תגים.

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

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

  3. בקטע Metadata, לצד Tags, לוחצים על Edit tags.

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

  5. בחלונית Tags (תגים), לוחצים על Add tag (הוספת תג).

  6. בוחרים מהרשימה את המקש של התג שרוצים לצרף. אפשר לסנן את הרשימה באמצעות הקלדה של מילות מפתח.

  7. בוחרים מהרשימה את הערך של התג שרוצים לצרף. אפשר להקליד מילות מפתח כדי לסנן את הרשימה.

  8. לוחצים על Save.

  9. בתיבת הדו-שיח אישור, לוחצים על אישור כדי לצרף את התג.

    התראה מאשרת שהתגים עודכנו.

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, אפשר להיעזר בדוגמה הבאה:

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-tag"
  location = "us-central1"

  enable_autopilot = true
}

data "google_project" "default" {}

resource "google_tags_tag_key" "default" {
  parent      = "projects/${data.google_project.default.project_id}"
  short_name  = "env"
  description = "Environment tag key"
}

resource "google_tags_tag_value" "default" {
  parent      = "tagKeys/${google_tags_tag_key.default.name}"
  short_name  = "dev"
  description = "Development environment tag value."
}

resource "google_tags_location_tag_binding" "default" {
  parent    = "//container.googleapis.com/${google_container_cluster.default.id}"
  location  = google_container_cluster.default.location
  tag_value = "tagValues/${google_tags_tag_value.default.name}"
}

מידע נוסף על שימוש ב-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: השם של האשכול.

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    עוברים אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לראות.

  3. בקטע 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: השם של האשכול.

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

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

  3. בקטע Metadata, לצד Tags, לוחצים על Edit tags.

  4. בחלונית תגים, לצד התג שרוצים לבטל את הקישור שלו, לוחצים על מחיקת הפריט.

  5. לוחצים על Save.

  6. בתיבת הדו-שיח אישור, לוחצים על אישור כדי לנתק את התג.

    התראה מאשרת שהתגים עודכנו.

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, אפשר לעיין במאמר תנאים ותגים בניהול זהויות והרשאות גישה.

המאמרים הבאים