התחברות למאגרי GitLab Enterprise ברשת פרטית

בדף הזה מוסבר איך להתחבר למאגרי GitLab Enterprise שמתארחים ברשת פרטית באמצעות Developer Connect ו-Service Directory. אפשר לבצע את המשימות האלה באמצעות מסוף Google Cloud או Google Cloud CLI.

ההוראות האלה מיועדות למפתחי אפליקציות, לאדמינים של פלטפורמות ולמנהלי אבטחה שרוצים להשתמש במאגרי קוד מקור של GitLab Enterprise עם Google. אתם יכולים להשתמש במאגרי GitLab Enterprise עם Gemini Code Assist.

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

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

  1. נכנסים לחשבון Google.

    אם עדיין אין חשבון, יוצרים חשבון חדש.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Developer Connect, Secret Manager, and Service Directory APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Developer Connect, Secret Manager, and Service Directory APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  8. צריך לוודא שיש לכם גישה לחשבון ב-GitLab Enterprise.

    כדי לשמור על אבטחת העבודה של הצוות, מומלץ לבצע את המשימות במדריך הזה באמצעות חשבון שירות או חשבון משותף של הצוות, ולא באמצעות חשבון אישי.

  9. מוודאים שאתם הבעלים של מאגר GitLab Enterprise או שיש לכם הרשאות אדמין במאגר משותף.
  10. מוודאים שיש לכם משאב שירות של Service Directory לחיבור לרשתות פרטיות, או יוצרים משאב שירות של Service Directory. אפשר ליצור את משאב השירות של Service Directory באותו פרויקט שבו אתם משתמשים ב-Developer Connect, או להשתמש בפרויקט אחר.

    יכול להיות שתצטרכו להגדיר את Service Directory באופן שונה עבור חיבורים לרשתות מחוץ ל- Google Cloud. איך משתמשים ב-Service Directory כדי להגיע למארחים מחוץ ל- Google Cloud

  11. אופציונלי: יוצרים מפתח הצפנה בניהול הלקוח (CMEK) להצפנת סודות האימות שנוצרים ב-Developer Connect.
  12. אופציונלי: כדי להשתמש בהוראות של שורת הפקודה במדריך הזה, מבצעים את השלבים הבאים:
    1. מתקינים את Google Cloud CLI. אם כבר התקנתם את ה-CLI של gcloud בעבר, צריך לוודא שפועלת אצלכם הגרסה העדכנית ביותר של gcloud components update.
    2. יוצרים חשבון שירות של Developer Connect על ידי הרצת הפקודה הבאה, כש-PROJECT_ID הוא Google Cloud מזהה הפרויקט:
              gcloud beta services identity create \
                  --service=developerconnect.googleapis.com \
                  --project=PROJECT_ID
              

דרישות מהמארחים

אם לא התקנתם מופע של GitLab Enterprise Edition Server, תוכלו לקרוא את מדריך ההתקנה של GitLab Enterprise Edition לקבלת הוראות.

כשפועלים לפי ההוראות להתקנת מופע של GitLab Enterprise Edition Server, חשוב לשים לב לנקודות הבאות:

  • חובה להגדיר את המארח לטיפול בפרוטוקול HTTPS. אין תמיכה במארחים שהוגדרו עם פרוטוקול HTTP.

  • אתם צריכים להגדיר את המארח עם אותה כתובת URL שמשמשת להגעה למארח מ- Google Cloud. למידע נוסף, אפשר לעיין במסמכי העזרה של GitLab בנושא הגדרת כתובת URL חיצונית.

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

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

  • אם אתם לא הבעלים של הפרויקט: אדמין של Developer Connect (roles/developerconnect.admin) בחשבון המשתמש שלכם.
  • אם אתם מתכננים להשתמש ב-CMEK כדי להצפין את הסודות שנוצרים על ידי Developer Connect: Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) בחשבון השירות של Secret Manager.
  • אם אתם מתכננים להשתמש ב-CLI של gcloud כדי לבצע את השלבים במדריך הזה: התפקיד 'אדמין של Secret Manager' (roles/secretmanager.admin) בחשבון השירות של Developer Connect.
  • אם אתם מתכננים להשתמש במסוף Google Cloud כדי לבצע את השלבים במדריך הזה: אדמין IAM של פרויקט (roles/resourcemanager.projectIamAdmin) בחשבון המשתמש שלכם.

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

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

הקצאת הרשאות לשימוש בספריית השירותים

כדי לאפשר ל-Developer Connect להשתמש ב-Service Directory, ולאפשר ל-Service Directory לגשת למשאב רשת ה-VPC שלכם, צריך לבצע את השלבים הבאים.

  1. כדי לתת הרשאות לחשבון השירות של Developer Connect להשתמש ב-Service Directory, מריצים את הפקודות הבאות:

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    
    SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-devconnect.iam.gserviceaccount.com"
    
    gcloud projects add-iam-policy-binding SERVICE_DIRECTORY_RESOURCE_PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/servicedirectory.viewer"
    

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

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • ‫SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: מזהה הפרויקט של Google Cloud הפרויקט שמכיל את משאב השירות של Service Directory.
  2. מעניקים הרשאות ל-Service Directory לגשת למשאב של רשת ה-VPC. משאב הרשת יכול להיות בפרויקט אחר.

    gcloud projects add-iam-policy-binding NETWORK_RESOURCE_PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/servicedirectory.pscAuthorizedService"
    

    מחליפים את NETWORK_RESOURCE_PROJECT_ID במזהה הפרויקט שמכיל את משאב רשת ה-VPC.

שימוש בספריית שירותים כדי להגיע למארחים מחוץ ל- Google Cloud

‫Service Directory משתמש בטווח כתובות ה-IP‏ 35.199.192.0/19 כדי לחבר את המארח שלכם מחוץ ל- Google Cloud. צריך להוסיף את הטווח הזה לרשימת ההיתרים בחומת האש. בנוסף, צריך להגדיר את הרשת הפרטית כך שהיא תנתב את הטווח הזה דרך חיבור Cloud VPN או Cloud Interconnect.

אם החיבור שלכם משתמש ב-Cloud Router, אתם יכולים להגדיר את החיבור כך שיעביר את הטווח לרשת הפרטית שלכם.

מידע נוסף זמין במאמר בנושא הגדרת גישה לרשת פרטית.

שימוש ב-Cloud Load Balancing כדי להגיע למארחים מחוץ ל- Google Cloud

אם הגדרת הרשת לא מאפשרת לכם לנתב את טווח כתובות ה-IP של Service Directory‏ 35.199.192.0/19 אל Cloud VPN או אל Cloud Interconnect, אתם יכולים ליצור מאזן עומסים באמצעות Cloud Load Balancing שמנתב את התנועה אל המארח שלכם.

כשיוצרים את נקודת הקצה של Service Directory, חשוב להשתמש בכתובת ה-IP של כלל ההעברה של מאזן העומסים במקום בכתובת ה-IP של המארח. כשיוצרים נקודת קצה (endpoint), אפשר להשתמש במאזן עומסים פנימי מסוג HTTPS או במאזן עומסים פנימי מסוג TCP.

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

  • כדי להגיע למארח, נדרשת רק קבוצת נקודות קצה ברשת (NEG) עם קישוריות היברידית.
  • מאזן העומסים של TCP לא דורש את המפתח הפרטי הלא מוצפן של אישור ה-SSL.
  • בהגדרת Cloud VPN צריך להשתמש ב-Cloud Router עם ניתוב דינמי גלובלי. אם Cloud VPN משתמש בניתוב סטטי, אתם יכולים להשתמש ב-proxy שמשתמש ב-Cloud Service Mesh במקום זאת. מידע נוסף זמין במאמר בנושא הגדרת שירותים של קצה הרשת לפריסות היברידיות.

מידע נוסף על יצירת מאזן עומסים ב-HTTPS זמין במאמר הגדרה של מאזן עומסים פנימי לאפליקציות עם קישוריות היברידית. מידע נוסף על יצירת מאזן עומסים מסוג TCP זמין במאמר בנושא הגדרת מאזן עומסי רשת אזורי פנימי מסוג TCP Proxy עם קישוריות היברידית.

יצירת טוקנים של גישה

כדי ליצור אסימוני גישה ב-GitLab, צריך לבצע את השלבים הבאים:

  1. נכנסים ל-GitLab.

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

    • טוקן אחד עם היקף api לחיבור ולניתוק מאגרים.
    • טוקן אחד עם היקף read_api כדי לאפשר ל-Developer Connect לקרוא קוד מקור במאגרים שלכם.
    • באסימוני גישה לקבוצות ובאסימוני גישה לפרויקטים, האסימונים צריכים להיות ברמת הרשאה Maintainer (תחזוקה) או ברמה גבוהה יותר.

יצירת חיבור

בקטע הזה מוסבר איך ליצור חיבור בין Developer Connect לבין GitLab Enterprise. אם אתם משתמשים במסוף Google Cloud , תוכלו גם להתחיל להוסיף קישורים למאגרי מידע אחרי שתסיימו להגדיר את החיבור.

כדי ליצור חיבור חדש ל-GitLab Enterprise, בוחרים באחת מהאפשרויות הבאות:

המסוף

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

  1. פותחים את Developer Connect במסוף Google Cloud .

    מעבר אל Developer Connect

    בדף Git repositories (מאגרי Git) ב-Developer Connect.

    • אם מוצגת רשימה של ספקי ניהול קוד מקור: בוחרים ספק ניהול קוד מקור כדי להתחיל להגדיר את החיבור הראשון. לוחצים על Connect (חיבור) בכרטיס GitLab Enterprise.
    • אם מוצגת טבלה עם רשימה של קישורים קיימים: כדי להגדיר את ספק ניהול קוד המקור, לוחצים על יצירת קישור > GitLab Enterprise.

      ייפתח הדף Create Connection.

  2. בשדה Region, בוחרים אזור למשאבי החיבור.

    1. בשדה Name (שם), מזינים שם לחיבור החדש.
  3. בקטע Access Tokens, מזינים את הטוקנים של החשבון:

    • טוקן גישה ל-API: מזינים את טוקן הגישה עם היקף api.
    • קריאת טוקן גישה ל-API: מזינים את טוקן הגישה עם היקף read_api.

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

  4. בשדה כתובת ה-URL של המארח, מזינים את כתובת ה-URL של המארח שאליו רוצים להתחבר.

  5. לוחצים על הצגת עוד כדי לראות הגדרות אופציונליות.

    1. תיבת הסימון Enable Developer Connect proxy (הפעלת שרת proxy של Developer Connect) מסומנת כברירת מחדל, כדי ש-Developer Connect יוכל לשמש כשרת proxy לקריאות Git אל GitLab Enterprise.

    2. בקטע Networking, עבור סוג הרשת, בוחרים באפשרות Private network.

    3. בקטע CA Certificate (אישור CA), לוחצים על Browse (עיון) כדי להעלות את האישור בחתימה עצמית.

      גודל האישור לא יכול להיות יותר מ-10KB והוא צריך להיות בפורמט PEM ‏(‎.pem, ‏‎.cer או ‎ .crt). אם הקטע הזה יישאר ריק, המערכת תשתמש במקום זאת בקבוצת אישורים שמוגדרת כברירת מחדל.

    4. בקטע Service Directory service בוחרים את המיקום של השירות:

      • בפרויקט your-project
      • בפרויקט אחר
      • הזנה ידנית

      אם בוחרים באפשרות בפרויקט אחר או באפשרות הזנה ידנית, מציינים את מזהה הפרויקט Google Cloud . בוחרים את הפרויקט מהתפריט הנפתח או מזינים את מזהה הפרויקט באופן ידני.

    5. אזור: בוחרים את האזור של שירות מדריך השירותים. האזור שצוין לשירות חייב להיות זהה לאזור שמשויך לחיבור.

    6. מרחב שמות: בוחרים את מרחב השמות של שירות Service Directory.

    7. שירות: בוחרים את שם השירות של Service Directory במרחב השמות.

    8. אופציונלי: בקטע Encryption, בוחרים מפתח CMEK כדי להצפין סודות של Secret Manager שנוצרו על ידי Developer Connect.

  6. לוחצים על Continue.

אחרי שיוצרים את הקישור, מופיע הדף Link repositories (קישור למאגרי מידע).

כדי לקשר מאגרי מידע לחיבור:

  1. ברשימת המאגרים הזמינים, בוחרים את המאגרים שבהם רוצים להשתמש.

  2. לוחצים על OK.

  3. לוחצים על קישור.

החיבור שלכם נוסף לדף חיבורים והקישורים למאגר נוספים לדף מאגרים במסוף Google Cloud . תמיד אפשר להוסיף עוד קישורים לחיבורים קיימים.

אם אתם מגדירים את Gemini Code Assist, ממשיכים בתהליך לפי השלבים במאמר הגדרה ושימוש ב-Gemini Code Assist עיגון בקוד של הארגון.

gcloud

  1. כדי ליצור סוד של webhook ב-Secret Manager, מריצים את הפקודה הבאה, שבה WEBHOOK_SECRET_NAME הוא שם הסוד של ה-webhook:

         cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET_NAME
    
  2. כדי לאחסן את אסימוני הגישה ב-Secret Manager, מריצים את הפקודות הבאות:

    gcloud secrets create API_SECRET_NAME
    
    echo -n API_SECRET_DATA | gcloud secrets versions add API_SECRET_NAME --data-file=-
    
    gcloud secrets create READ_SECRET_NAME
    
    echo -n READ_SECRET_DATA | gcloud secrets versions add READ_SECRET_NAME --data-file=-
    

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

    • ‫API_SECRET_NAME: שם לסוד שבו מאוחסן האסימון עם ההיקף api.
    • ‫API_SECRET_DATA: האסימון עם ההיקף api, בדומה ל-glpat-XXXXXXXXXXXXXXXX.
    • ‫READ_SECRET_NAME: שם לסוד שבו מאוחסן האסימון עם ההיקף read_api.
    • ‫READ_SECRET_DATA: האסימון עם ההיקף read_api, בדומה ל-glpat-XXXXXXXXXXXXXXXX.
  3. מריצים את הפקודה gcloud developer-connect connections create כדי ליצור חיבור ל-GitLab Enterprise:

    gcloud beta developer-connect connections create CONNECTION_NAME \
        --location=REGION \
        --gitlab-config-read-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/VERSION \
        --gitlab-config-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/API_SECRET_NAME/versions/VERSION \
        --gitlab-enterprise-config-host-uri=HOST_URI \
        --gitlab-enterprise-config-webhook-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/VERSION \
        --git-proxy-config-enabled
    

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

    • ‫CONNECTION_NAME: השם של החיבור.
    • ‫REGION: האזור של החיבור.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
    • ‫READ_SECRET_NAME: השם של הסוד ב-Secret Manager שמכיל את האסימון עם ההיקף read_api.
    • ‫API_SECRET_NAME: השם של הסוד ב-Secret Manager שמכיל את האסימון עם ההיקף api.
    • ‫VERSION: מספר הגרסה של כל סוד. אפשר להשתמש ב-latest כדי להשתמש במספר הגרסה העדכני ביותר.
    • ‫HOST_URI: ה-URI של המארח שאליו רוצים להתחבר.
    • ‫WEBHOOK_SECRET_NAME: השם של הסוד ב-Secret Manager שמכיל את הסוד של ה-webhook.
    • ‫--git-proxy-config-enabled הוא דגל אופציונלי שמאפשר ל-Developer Connect לשמש כשרת proxy לקריאות Git אל GitLab Enterprise. עליך להפעיל את התכונה הזו כשמריצים עיגון בקוד של הארגון ב-Gemini Code Assist במאגרי המקורות של הקוד של GitLab Enterprise שמתארחים ברשתות פרטיות.
    • ‫--gitlab-enterprise-config-ssl-ca-certificate הוא דגל אופציונלי להוספת אישור SSL, בפורמט $HOME/my-ssl-ca.txt.

    ‫Developer Connect משלים את החיבור ל-GitLab. בשלב הבא, מקשרים למאגרי קוד.

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

כדי ליצור קישורים למאגר בחיבור קיים של GitLab Enterprise, בוחרים באחת מהאפשרויות הבאות:

המסוף

כדי ליצור קישורים למאגרי מידע, מבצעים את השלבים הבאים:

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פותחים את הדף Repositories

  2. לוחצים על קישור המאגר.

    נפתחת החלונית Link Git repositories (קישור מאגרי Git).

  3. ברשימת החיבורים, בוחרים חיבור.

  4. לוחצים על Continue.

  5. ברשימת המאגרים, בוחרים את המאגרים שרוצים לקשר.

    ב-Developer Connect מוצגים שמות מוצעים למשאבי המאגר שלכם.

  6. בוחרים אפשרות למתן שמות למשאבי מאגר:

    • נוצר: שימוש בשמות של משאבי המאגר שנוצרו.
    • ידני: מזינים שמות משלכם.
  7. לוחצים על יצירה.

‫Developer Connect יוצר את הקישורים למאגר ומציג אותם במסוף Google Cloud .

gcloud

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

gcloud beta developer-connect connections git-repository-links create REPO_NAME \
    --clone-uri=REPO_URI \
    --connection=CONNECTION_NAME \
    --location=REGION

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

  • ‫REPO_NAME: השם של קישור המאגר.
  • ‫REPO_URI: הקישור למאגר, בדומה ל-https://gitlab.com/my-project/test-repo.git.
  • ‫CONNECTION_NAME: השם של החיבור.
  • ‫REGION: האזור של החיבור.

קישורי המאגר נוצרים על ידי Developer Connect.

כדי לכלול ברשימה את המאגרים המקושרים, מריצים את הפקודה developer-connect connections git-repository-links list.

אם אתם מגדירים את Gemini Code Assist, ממשיכים בתהליך לפי השלבים במאמר הגדרה ושימוש ב-Gemini Code Assist עיגון בקוד של הארגון.

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