שיתוף סוגים בין פרויקטים

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

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

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

מגבלות

ההגבלות הבאות חלות על השימוש בתכונה הזו:

  • הענקת התפקיד deploymentmanager.typeViewer מעניקה הרשאות לכל הסוגים בפרויקט הספציפי. אי אפשר להגביל את השיתוף לסוגים ספציפיים.
  • אי אפשר להעניק את התפקיד הזה לallAuthenticatedUsers או לallUsers.

הענקת גישה לפרויקט לשימוש בסוגים

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

  1. נכנסים לדף IAM במסוף Google Cloud של הפרויקט שבו ייעשה שימוש בסוגים.

    כניסה לדף IAM

  2. אם מתבקשים, בוחרים את הפרויקט מהרשימה.
  3. מחפשים את חשבון השירות של Google APIs, עם כתובת אימייל בפורמט הבא:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. חשוב לרשום את כתובת האימייל שמופיעה למעלה. לאחר מכן, בעלי הפרויקט שבו נמצאים הסוגים הרצויים יכולים להעניק לחשבון השירות של Google APIs את התפקיד roles/deploymentmanager.typeViewer.

    המסוף

    1. במסוף Google Cloud , עוברים לדף IAM של הפרויקט שמכיל את הסוגים שרוצים לשתף.

      כניסה לדף IAM

    2. בוחרים את הפרויקט מרשימת הפרויקטים.
    3. לוחצים על הלחצן הוספה כדי להוסיף חבר חדש.
    4. בתיבה Members (חברים), מזינים את כתובת האימייל של חשבון השירות.
    5. מרחיבים את התפריט הנפתח Roles ובוחרים באפשרות Other > Deployment Manager Types Viewer (beta).
    6. לוחצים על הוספה כדי להוסיף את החשבון.

    gcloud

    בעזרת Google Cloud CLI, מוסיפים קשר למדיניות IAM של הפרויקט:

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/deploymentmanager.typeViewer

    where:

    • [PROJECT_ID] הוא מזהה הפרויקט שמכיל את התמונות שרוצים לשתף.
    • [SERVICE_ACCOUNT_EMAIL] היא כתובת האימייל של חשבון השירות בפרויקט שאיתו רוצים לשתף סוגים.

    לדוגמה:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/deploymentmanager.typeViewer

    API

    ב-API, שולחים בקשת POST לכתובת ה-URL הבאה, כאשר [PROJECT_ID] הוא מזהה הפרויקט שמכיל את הסוגים שרוצים לשתף.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    גוף הבקשה צריך להכיל את רשימת ההתאמות שרוצים להחיל על הפרויקט הזה. התפקיד roles/deploymentmanager.typeViewer צריך להיות חלק מהקישור. לדוגמה:

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/deploymentmanager.typeViewer",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gserviceaccount.com"
               ]
           }
           ]
       }
    

    }

שימוש בסוגים מפרויקטים אחרים בהגדרה

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

type: [PROJECT_ID]/composite:[TYPE]

לספקי סוגים:

type: [PROJECT_ID]/[TYPE]:[COLLECTION]

כאשר:

  • [PROJECT_ID] הוא מזהה הפרויקט שבבעלותו נמצא הסוג.
  • [TYPE] הוא השם של ספק הסוג או הסוג המורכב.
  • [COLLECTION] הוא המשאב הספציפי שאתם יוצרים. ההגדרה הזו רלוונטית רק לסוגים בסיסיים. מידע נוסף על הגדרת סוגי בסיס זמין במאמר קריאה לספק סוגים בהגדרה.

לדוגמה, אם מזהה הפרויקט הוא my-type-repository, יכול להיות שתציינו את סוג המפרט הבא:

resources:
- name: a-special-vm
  type: my-type-repository/composite:autoscaled-igm
  properties:
    ...

הענקת הרשאה למשתמשים להציג סוגים

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

לדוגמה, כדי שג'יין תוכל להריץ את הפקודה gcloud beta deployment-manager types list --project another-project בפרויקט שלא שייך לה, הבעלים של another-project צריך להקצות לג'יין את התפקיד deploymentmanager.typeViewer.

כדי להעניק לג'יין את התפקיד באמצעות ה-CLI של gcloud, מריצים את הפקודה הבאה:

 gcloud projects add-iam-policy-binding another-project \
        --member user:jane@gmail.com --role deploymentmanager.typeViewer

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

מה השלב הבא?