הגדרת גבולות הניהול

במאמר הזה מוסבר איך להגדיר ולנהל את גבולות הניהול והגדרות היכולות באמצעות Resource Manager. גבולות הניהול מאפשרים לגלות משאבים בפרויקטים שונים ולנהל אותם ב-Agent Registry.

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

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

התפקידים הנדרשים

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

  • יצירה, עדכון ומחיקה של גבולות והגדרות של יכולות: עריכה של מנהל המשאבים (roles/resourcemanager.editor) בתיקייה או בארגון היעד (ובפרויקט הניהול, אם אתם מספקים פרויקט ניהול שמנוהל על ידי המשתמש)
  • צפייה בגבולות ובהגדרות של היכולות: צפייה במנהל המשאבים (roles/resourcemanager.viewer) בתיקייה או בארגון היעד
  • מוסיפים תגים לפרויקטים של החברים:
    • משתמש בתגים (roles/resourcemanager.tagUser) בתיקיית היעד, בארגון או בפרויקטים החברים
    • Tag Administrator (roles/resourcemanager.tagAdmin) בתיקייה או בארגון היעד

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

הפעלת ה-API

  • כדי להפעיל את Resource Manager API, משתמשים בפקודה gcloud services enable:

    gcloud services enable cloudresourcemanager.googleapis.com \
      --project=PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

הגדרת גבולות ניהול

יש שתי דרכים להגדיר גבולות ניהול בתיקייה או בארגון:

  • גבול ברמת התיקייה או הארגון (ללא מסנן תגים): כולל את כל הפרויקטים הצאצאים בתיקייה או בארגון. מדלגים על שלב 1 ושלב 4, ומבצעים רק את שלב 2: יצירת גבול (בלי --tag-key ו---tag-value) ואת שלב 3: יצירת הגדרת יכולת.
  • גבול מבוסס-תגים: חלוקה של פרויקטים בתיקייה או בארגון לפי ערכי תגים. צריך לבצע את כל ארבעת השלבים הבאים.

שלב 1: מגדירים את מפתח התג לחלוקה למחיצות

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

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

כדי להגדיר את מפתח התג של החלוקה למחיצות, משתמשים בפקודה gcloud resource-manager boundary-configs update:

gcloud resource-manager boundary-configs update \
  --folder=FOLDER_ID \
  --tag-key=TAG_KEY_NAME

כדי להגדיר את מפתח התג בארגון, מציינים את --organization=ORGANIZATION_ID במקום את --folder. אם הגדרתם בעבר מפתח תג ואתם רוצים לעבור לגבול ללא תגים (כשאין גבולות מתחת להורה), הריצו את הפקודה הזו עם --clear-tag-key במקום --tag-key.

מחליפים את מה שכתוב בשדות הבאים:

  • ‫FOLDER_ID: המזהה של תיקיית ההורה
  • ‫TAG_KEY_NAME: השם של מפתח התג, בפורמט ORGANIZATION_ID/TAG_KEY_SHORT_NAME, למשל 123456789012/env

שלב 2: יצירת גבול

יוצרים משאב מסוג Boundary בתיקייה או בארגון.

כדי ליצור גבול ברמת התיקייה בלי מסנן תגים (שכולל באופן אוטומטי את כל הפרויקטים הצאצאים בתיקייה), משתמשים בפקודה gcloud resource-manager boundaries create בלי --tag-key ו---tag-value:

gcloud resource-manager boundaries create BOUNDARY_ID \
  --folder=FOLDER_ID \
  --display-name="Production Boundary"

כדי ליצור גבול מבוסס-תגים אחרי שמגדירים את מפתח התג לחלוקה למחיצות בשלב 1, צריך לכלול את הדגלים --tag-key ו---tag-value:

gcloud resource-manager boundaries create BOUNDARY_ID \
  --folder=FOLDER_ID \
  --display-name="Production Boundary" \
  --tag-key=TAG_KEY_NAME \
  --tag-value=TAG_VALUE_SHORT_NAME

כדי ליצור גבול בארגון, מציינים את --organization=ORGANIZATION_ID במקום את --folder.

מחליפים את מה שכתוב בשדות הבאים:

  • ‫BOUNDARY_ID: מזהה ייחודי של הגבול, למשל prod-boundary
  • ‫FOLDER_ID: המזהה של תיקיית ההורה
  • ‫TAG_KEY_NAME: מפתח התג שהגדרתם, למשל 123456789012/env
  • ‫TAG_VALUE_SHORT_NAME: ערך התג שצריך להיות לפרויקטים כדי להצטרף לגבול, למשל prod

שלב 3: יוצרים הגדרת יכולת

יוצרים משאב CapabilityConfig כדי לקשר את הגבול לפרויקט ניהול ולהצהיר אילו שירותים מנוהלים בגבול.

כדי ליצור הגדרת יכולת, משתמשים בפקודה gcloud resource-manager capability-configs create ומציינים את הערך --types=agent-management בשביל Agent Registry:

gcloud resource-manager capability-configs create \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID \
  --types=agent-management \
  --boundaries=folders/FOLDER_ID/boundaries/BOUNDARY_ID \
  --display-name="DISPLAY_NAME"

כדי ליצור את הגדרת היכולת בארגון, מציינים את --organization=ORGANIZATION_ID במקום את --folder.

מחליפים את מה שכתוב בשדות הבאים:

  • ‫CAPABILITY_CONFIG_ID: מזהה ייחודי להגדרת היכולת, למשל prod-capabilities
  • ‫FOLDER_ID: המזהה של תיקיית ההורה
  • ‫BOUNDARY_ID: המזהה של הגבול שיצרתם
  • DISPLAY_NAME: שם לתצוגה שקריא לאנשים

כדי להפעיל יכולות בפרויקט עצמאי אחד ללא גבולות, מדלגים על שלבים 1, 2 ו-4 ומריצים את הפקודה הזו עם --project=PROJECT_NUMBER ו---management-project=projects/PROJECT_NUMBER במקום --folder ו---boundaries.

כדי להשתמש בפרויקט קיים כפרויקט הניהול, מעבירים את הדגל --management-project=projects/PROJECT_NUMBER. הפרויקט שאתם מציינים חייב לעמוד בדרישות הבאות, אחרת הפקודה תיכשל ותופיע הודעת שגיאה:

  • להיות ממוקמים ישירות מתחת לאותו הורה (folders/FOLDER_ID או organizations/ORGANIZATION_ID) כמו המשאב CapabilityConfig.
  • להיות במצב מחזור החיים ACTIVE.
  • הוא לא מוגדר כבר כפרויקט ניהול.

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

כשיוצרים משאב CapabilityConfig, ממשקי ה-API של השירותים התואמים מופעלים באופן אוטומטי בפרויקט הניהול (למשל agentregistry.googleapis.com כשמציינים את agent-management). אין צורך להפעיל את ממשקי ה-API האלה באופן ידני בפרויקט הניהול.

שלב 4: צירוף תגים לפרויקטים של חברים

אם יצרתם גבול ברמת התיקייה או הארגון בלי מסנן תגים, דלגו על השלב הזה כי כל הפרויקטים הצאצאים נכללים באופן אוטומטי.

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

כדי לצרף את התג לכל פרויקט ששייך לגבול, משתמשים בפקודה gcloud resource-manager tags bindings create:

gcloud resource-manager tags bindings create \
  --tag-value=TAG_VALUE_NAME \
  --parent=//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TAG_VALUE_NAME: השם של ערך התג, למשל 123456789012/env/prod
  • ‫PROJECT_NUMBER: מספר הפרויקט (או מזהה הפרויקט) שרוצים לכלול בגבול

ניהול הגדרות היכולות

אתם יכולים להציג, לתאר, לעדכן ולמחוק הגדרות של יכולות. בדוגמאות שבקטע הזה נעשה שימוש ב---folder=FOLDER_ID. כדי לנהל את הגדרות היכולות בארגון או בפרויקט, צריך לציין את --organization=ORGANIZATION_ID או את --project=PROJECT_NUMBER במקום את --folder (אפשר לצרף גבולות רק להגדרות של יכולות ברמת התיקייה או ברמת הארגון).

הצגת רשימה של הגדרות יכולות

כדי להציג את כל הגדרות היכולות בתיקייה, משתמשים בפקודה gcloud resource-manager capability-configs list:

gcloud resource-manager capability-configs list \
  --folder=FOLDER_ID

תיאור של הגדרת יכולת

כדי לראות את פרטי ההגדרה ואת פרויקט הניהול שהוקצה, מריצים את הפקודה gcloud resource-manager capability-configs describe:

gcloud resource-manager capability-configs describe \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID

עדכון הגבולות המשויכים

כדי לעדכן את הגבולות שמקושרים להגדרת יכולת, משתמשים בפקודה gcloud resource-manager capability-configs update:

gcloud resource-manager capability-configs update \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID \
  --boundaries=folders/FOLDER_ID/boundaries/BOUNDARY_ID_1,folders/FOLDER_ID/boundaries/BOUNDARY_ID_2

הפקודה update מקבלת גם את הדגלים --types ו---display-name כדי לעדכן את סוגי היכולות המופעלות או את השם המוצג.

מחיקת הגדרת יכולת

אי אפשר למחוק משאב מסוג CapabilityConfig אם מצורפים אליו גבולות, ואי אפשר למחוק משאב מסוג Boundary אם הוא מצורף למשאב מסוג CapabilityConfig.

כדי למחוק הגדרת יכולת כשכבר לא צריך ניהול בין פרויקטים:

  1. כדי לנתק את הגבולות המשויכים, משתמשים בפקודה gcloud resource-manager capability-configs update עם הדגל --clear-boundaries:

    gcloud resource-manager capability-configs update \
      CAPABILITY_CONFIG_ID \
      --folder=FOLDER_ID \
      --clear-boundaries
    
  2. כדי למחוק את הגדרת היכולת, מפעילים את הפקודה gcloud resource-manager capability-configs delete:

    gcloud resource-manager capability-configs delete \
      CAPABILITY_CONFIG_ID \
      --folder=FOLDER_ID
    

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