בדף הזה מוסבר איך לחבר מארח GitLab ל-Cloud Build.
לפני שמתחילים
מפעילים את Cloud Build API ואת Secret Manager API, אם הם עדיין לא מופעלים.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
התחברות למארח GitLab
לפני שיוצרים חיבור מארח למופע GitLab, צריך ליצור אסימוני גישה אישיים ב-GitLab. לשם כך, מבצעים את השלבים הבאים:
מתחברים לחשבון ב-GitLab.
בדף GitLab של המופע, לוחצים על האווטאר בפינה השמאלית העליונה.
לוחצים על עריכת הפרופיל.
בסרגל הצד שמימין, לוחצים על Access tokens (אסימוני גישה).
מוצג הדף Personal Access Tokens (אסימוני גישה אישיים).
כדי להתחבר למאגרי מידע ולנתק אותם, צריך ליצור אסימון גישה עם היקף
api.יוצרים אסימון גישה עם ההיקף
read_apiכדי לוודא שמאגרי Cloud Build יוכלו לגשת לקוד המקור במאגרים.
המסוף
כדי לחבר את המארח שלכם ב-GitLab ל-Cloud Build:
פותחים את הדף Repositories במסוף Google Cloud .
מוצג הדף Repositories (מאגרי מידע).
בחלק העליון של הדף, לוחצים על הכרטיסייה דור שני.
בבורר הפרויקטים בסרגל העליון, בוחרים את Google Cloud הפרויקט.
לוחצים על יצירת חיבור למארח כדי לחבר מארח חדש ל-Cloud Build.
בחלונית הימנית, בוחרים באפשרות GitLab כספק המקור.
בקטע Configure Connection (הגדרת החיבור), מזינים את הפרטים הבאים:
אזור: בוחרים אזור לקישור.
שם: מזינים שם לחיבור.
בקטע Host details, עוברים אל GitLab host ובוחרים באפשרות GitLab.com.
אופציונלי: אם רוצים לנהל את מפתחות ההצפנה שמשמשים להצפנה של אסימוני הגישה למאגרי GitLab, עוברים לקטע הצפנה ובוחרים מפתח של Cloud Key Management Service. מידע נוסף זמין במאמר בנושא הפעלת מפתחות הצפנה בניהול הלקוח ב-Secret Manager.
בקטע Personal access tokens (אסימוני גישה אישיים), מזינים את הפרטים הבאים:
טוקן גישה ל-API: מזינים את הטוקן עם גישת ההיקף
api. הטוקן הזה משמש לחיבור מאגרי מידע ולניתוק שלהם.קריאת טוקן גישה ל-API: מזינים את הטוקן עם גישה בהיקף
read_api. טריגרים של Cloud Build משתמשים באסימון הזה כדי לגשת לקוד המקור במאגרי מידע.
לוחצים על Connect.
אחרי שלוחצים על הלחצן Connect, טוקנים אישיים לגישה מאוחסנים בצורה מאובטחת ב-Secret Manager. אחרי חיבור המארח, Cloud Build יוצר גם סוד של webhook בשמכם. אפשר לראות ולנהל את הסודות בדף Secret Manager.
סיימתם ליצור חיבור ל-GitLab.
gcloud
לפני שמחברים את מארח GitLab ל-Cloud Build, צריך לבצע את השלבים הבאים כדי לאחסן את פרטי הכניסה:
מריצים את הפקודה הבאה כדי ליצור סוד של webhook ב-Secret Manager:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create my-gle-webhook-secret --data-file=-אם אתם מאחסנים את הסודות בפרויקט אחר Google Cloud מזה שבו אתם מתכננים להשתמש כדי ליצור חיבור למארח, מזינים את הפקודה הבאה כדי להעניק לפרויקט גישה לסוכן השירות של Cloud Build:
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.admin"כאשר:
- PROJECT_ID הוא Google Cloud מזהה הפרויקט.
עכשיו אפשר להמשיך ולחבר את מארח GitLab ל-Cloud Build.
כך עושים את זה:
כדי לחבר את המארח שלכם ב-GitLab ל-Cloud Build:
מזינים את הפקודה הבאה כדי ליצור חיבור ל-GitLab:
gcloud builds connections create gitlab CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/API_TOKEN/versions/SECRET_VERSION \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSIONכאשר:
- CONNECTION_NAME הוא שם לחיבור של מארח GitLab ב-Cloud Build.
- HOST_URI הוא ה-URI של מופע GitLab. לדוגמה,
https://my-gle-server.net. - PROJECT_ID הוא Google Cloud מזהה הפרויקט.
- REGION הוא האזור של החיבור.
- API_TOKEN הוא שם האסימון עם
apiההיקף. - READ_TOKEN הוא שם האסימון עם
read_apiההיקף. - SECRET_VERSION היא הגרסה של הסוד.
- WEBHOOK_SECRET הוא הסוד של ה-webhook.
סיימתם ליצור חיבור ל-GitLab.
החלפה של טוקנים ישנים או שפג תוקפם ב-GitLab
מבצעים רוטציה של אסימוני הגישה כדי שחיבור המארח של Cloud Build יוכל להישאר מחובר למאגר GitLab. אם תוקף האסימון שלכם לגישה ל-GitLab פג, החיבור של מארח Cloud Build למאגר GitLab שלו ינותק. במקרה כזה, לא תוכלו להשבית את החיבור או לקשר מאגר עד שתחליפו את האסימון שפג תוקפו. בנוסף, השגיאות יופיעו במקרים הבאים:
בדף פרטי החיבורים של החיבור מופיעה הודעת שגיאה שבה מצוין
Connection is disconnected due to an invalid or expired access token.אם תנסו לקשר מאגר לחיבור עם טוקן גישה שתוקפו פג, תופיע ההודעה Invalid access token. כשלוחצים על View connection (הצגת החיבור), מגיעים לדף Connection details (פרטי החיבור) של החיבור עם האסימון שתוקפו פג.
ב-Cloud Build אפשר להחליף את טוקני הגישה על ידי הזנת ערכי טוקנים חדשים ושמירתם ב-Secret Manager בגרסה העדכנית ביותר של הסודות האלה. כדי לבצע רוטציה של טוקנים לגישה:
מבצעים רוטציה לכל טוקן גישה ב-GitLab:
עוברים למאגר GitLab שמקושר לחיבור המארח של Cloud Build.
פועלים לפי ההוראות במסמכי התיעוד של GitLab כדי להחליף אסימון גישה. כשמבצעים רוטציה של אסימון, GitLab יוצר אסימון חדש עם פרטי כניסה חדשים ומבטל את התוקף של הגרסה הקודמת של האסימון. לאסימון המעודכן יש את אותן הרשאות ואותו היקף כמו לאסימון המקורי.
מעתיקים את המזהים של הטוקנים שהוחלפו.
מעדכנים את טוקן הגישה ב-Cloud Build:
עוברים לדף פרטי החיבור של החיבור.
בוחרים באפשרות עדכון טוקנים לגישה.
בתפריט Token rotation (רוטציה של טוקנים), מזינים את הטוקנים החדשים בשדות API access token (טוקן גישה ל-API) ו-Read access token (טוקן גישת קריאה).
(אופציונלי): אם רוצים שהחיבור ישתמש תמיד בגרסה העדכנית ביותר של הסוד עבור האסימונים, בוחרים באפשרות עדכון החיבור כך שתמיד תהיה בשימוש הגרסה העדכנית ביותר. יכול להיות שיהיה לכם שימושי להשאיר את האפשרות הזו לא מסומנת אם החיבור שלכם משתמש במספר גרסה סודי ספציפי.
כדי לשמור את השינויים, לוחצים על עדכון.
Cloud Build שומר את אסימוני הגישה החדשים כגרסה האחרונה של הסוד ב-Secret Manager.
המאמרים הבאים
- איך מחברים מאגר GitLab
- במאמר הזה מוסבר איך ליצור ולפרוס את עומסי העבודה שלכם ב- Google Cloud באמצעות רכיבי CI/CD מנוהלים על ידי Google בצינור העיבוד של GitLab. מידע נוסף זמין במאמר GitLab ב- Google Cloud.