איך בונים מאגרים מ-GitHub Enterprise ברשת פרטית

ב-Cloud Build אפשר ליצור טריגרים במכונה של GitHub Enterprise. בדף הזה מוסבר איך משתמשים בטריגרים של GitHub Enterprise כדי להפעיל גרסאות build בתגובה ל-commit או לבקשות משיכה ממכונה של GitHub Enterprise, ואיך יוצרים מאגרים מ-GitHub Enterprise אם המכונה שלכם מתארחת ברשת פרטית.

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

  • מפעילים את Cloud Build API ואת Service Directory API, אם הם עדיין לא מופעלים.

    התפקידים שנדרשים כדי להפעיל ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

    הפעלת ממשקי ה-API

יצירת מאגרים מ-GitHub Enterprise ברשת פרטית

כדי לקשר את המכונה של GitHub Enterprise ל-Cloud Build מרשת פרטית:

  1. נותנים לסוכן השירות של Cloud Build גישה ל-Service Directory:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild."
    gcloud projects add-iam-policy-binding  PROJECT_ID_CONTAINING_SERVICE_DIRECTORY \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.viewer"
    

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

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

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild."
    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.pscAuthorizedService"
    

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

    • ‫PROJECT_ID הוא מזהה הפרויקט ב-Cloud Build.
    • ‫PROJECT_ID_CONTAINING_NETWORK_RESOURCE הוא המזהה של הפרויקט ב-Google Cloud שמכיל את משאב הרשת.
  3. כדי להגדיר שירות ב-Service Directory:

    1. מגדירים מרחב שמות לשירות:

       gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
      

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

      • ‫NAMESPACE הוא השם של מרחב השמות של Service Directory.
      • ‫LOCATION הוא האזור שבו יוצרים חיבורים ומקשרים מאגרים.
      • ‫PROJECT_ID_CONTAINING_SERVICE_DIRECTORY הוא המזהה של הפרויקט ב-Google Cloud שמכיל את Service Directory.
    2. מגדירים שירות למרחב השמות:

       gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
      

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

      • ‫SERVICE הוא השם של המשאב ב-Service Directory.
      • ‫NAMESPACE הוא השם של מרחב השמות של Service Directory.
      • ‫LOCATION הוא האזור שבו יוצרים חיבורים ומקשרים מאגרים.
    3. מגדירים נקודת קצה (endpoint) לשירות:

       gcloud service-directory endpoints create ENDPOINT_NAME \
         --namespace=NAMESPACE \
         --service=SERVICE \
         --location=LOCATION \
         --address=INSTANCE_IP_ADDRESS \
         --port=PORT \
         --network=projects/PROJECT_ID_CONTAINING_NETWORK/locations/global/networks/NETWORK
      

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

      • ‫ENDPOINT_NAME הוא השם של נקודת הקצה.
      • ‫NAMESPACE הוא השם של מרחב השמות של Service Directory.
      • ‫SERVICE הוא השם של המשאב ב-Service Directory.
      • ‫LOCATION הוא האזור שבו יוצרים חיבורים ומקשרים מאגרים.
      • ‫INSTANCE_IP_ADDRESS היא כתובת ה-IP של המכונה של GitHub Enterprise ברשת שלכם. לדוגמה, 123.45.67.89. מידע נוסף זמין במאמר שימוש ב-Service Directory כדי להגיע למארחים מחוץ ל- Google Cloud.
      • ‫PORT הוא שם היציאה ל-HTTPS.
      • ‫PROJECT_ID_CONTAINING_NETWORK הוא מזהה הפרויקט ב- Google Cloud שמכיל את רשת ה-VPC.
      • ‫NETWORK הוא השם של רשת ה-VPC.

    עכשיו אפשר להשתמש במשאב השירות (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) כדי ליצור את החיבור בשלבים הבאים.

  4. קישור למארח של GitHub Enterprise.

  5. קישור מאגר של GitHub Enterprise

  6. יוצרים טריגר של GitHub Enterprise כדי ליצור מאגרים שמתארחים במכונה של GitHub Enterprise.

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

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

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

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

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

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

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

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

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

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

השלבים הבאים