בדף הזה מוסבר איך לפרוס את הכלי ליצירת הגדרות של מדדים (MCG).
גישה לקוד המקור
קוד המקור של MCG מתארח ב-GitHub, ב-aaos-sdv-telemetry-mcg. אתם יכולים להריץ את MCG באופן מקומי לצורכי פיתוח ובדיקה, או לפרוס אותו בסביבת ענן כדי לאפשר גישה לצוות.
הפעלה מקומית
כדי להריץ את MCG מספריית קובצי המקור שלו לפיתוח ולבדיקה מקומיים, משתמשים ב-Bazel. צריך להתקין את Bazel. כשמריצים באופן מקומי, צריך להפעיל את השמירה במטמון בזיכרון באמצעות הגדרת MCG_LOCALCACHE=true. הוא תומך באחסון של קטלוגים של אותות רכב. כדי ליצור ולהריץ את השירות באופן מקומי, משתמשים בפקודות הבאות מספריית קובצי המקור:
# Build and run on default port 8005
MCG_LOCALCACHE=true bazel run //:mcg
# Or, to change the port, use:
MCG_LOCALCACHE=true bazel run //:mcg -- --listen :9000
פריסה ב-Google Cloud
בסיס הקוד של MCG כולל קובצי Terraform ו-Google Cloud Build כדי לפרוס את MCG ב-Google Cloud כשירות של Google Cloud Run. בקטעים הבאים מוסבר איך לפרוס את האפליקציה, כולל יצירת קובץ משתנים, פריסת התשתית, פיתוח ופריסה של האפליקציה, מתן גישה ואימות הפריסה.
Cloud Run היא פלטפורמה בלי שרת (serverless), ולכן היא חוסכת במשאבים ומפעילה קונטיינרים רק בזמן עיבוד הבקשות, במקום להשאיר את השרת פעיל כל הזמן. המשמעות היא שהנתונים בזיכרון אובדים כשמופסקת הפעילות של המכונות בקונטיינר בין הבקשות. לכן, צריך את Redis כדי לספק אחסון מתמיד ל נתוני הקטלוג בין הקריאות לשירות. הגישה הזו מספקת פריסה שניתנת להתאמה ומתאימה לשימוש של צוות או לשימוש בסביבת ייצור.
דרישות מוקדמות
לפני שמתחילים את הפריסה ב-Google Cloud, צריך לוודא שהתנאים המוקדמים הבאים מתקיימים:
- פרויקט בענן של Google עם חיוב מופעל והרשאות מספיקות להקצאת משאבים ותפקידי IAM
- Terraform (גרסה 1.0.0 ואילך) מותקנת
- Google Cloud CLI (
gcloud) מותקן ומאומת
מבנה הקובץ
כדי לפרוס ב-Google Cloud, צריך להריץ פקודות Terraform מספריית המשנה infrastructure/ ופקודות Cloud Build מהספרייה הראשית של המאגר. הקבצים והספריות העיקריים שאתם משתמשים בהם הם:
repository-root/
├── cloudbuild.yaml
└── infrastructure/
└── terraform.tfvars <-- you create this file
יצירת קובץ משתנים של Terraform
בספרייה infrastructure/, יוצרים קובץ בשם terraform.tfvars כדי לספק ערכים למשתנים שמוגדרים ב-variables.tf ולהתאים אישית את הפריסה. צריך להגדיר ערכים ל-project_id ול-region בקובץ הזה. כל שאר המשתנים הם אופציונליים. מוסיפים את הטקסט הבא לקובץ terraform.tfvars:
project_id = "your-gcp-project-id" region = "your-gcp-region" # For example, us-central1 or europe-west1
במאמר variables.tf מפורטים כל המשתנים הזמינים וערכי ברירת המחדל שלהם. אפשר לשנות את ערכי ברירת המחדל באמצעות הגדרה שלהם ב-terraform.tfvars.
פריסת התשתית
אחרי שיוצרים את terraform.tfvars, אפשר להפעיל ולהחיל את ההגדרות של Terraform. בשלב הזה מוקצים כל המשאבים הנדרשים של Google Cloud, כולל Artifact Registry, Redis ו-Cloud Run. בסיום, Terraform יוצר את שירות Google Cloud Run, שמריץ קובץ אימג' של קונטיינר עם פלייסהולדר.
השלב הזה עשוי להימשך כמה דקות.
# Run from the infrastructure/ directory
terraform init
terraform apply
כשמופיעה בקשה מ-terraform apply, בודקים את התוכנית ומקלידים yes כדי לאשר.
פיתוח ופריסה של אפליקציית MCG
אחרי הקצאת התשתית, השלב הבא הוא ליצור את קוד המקור של MCG ולפרוס אותו ב-Google Cloud Run. כדי לעשות את זה, שולחים את קוד המקור ל-Google Cloud Build, שיוצר את קובץ האימג' של Docker, מעביר אותו בדחיפה ל-Artifact Registry ומעדכן את השירות של Google Cloud Run כך שישתמש בקובץ האימג' החדש.
ב-Google Cloud Build נעשה שימוש במשתנה ההחלפה COMMIT_SHA כדי לתייג את קובץ האימג' שנוצר. אפשר להשתמש במספר גרסה (לדוגמה, v1.0.0) או ב-SHA של ה-commit במאגר. התיוג עוזר להבחין בין גרסאות ב-Artifact Registry, לנהל פריסות ולחזור לגרסה קודמת במקרה הצורך.
מריצים את הפקודה הבאה של gcloud כדי להפעיל את ה-build והפריסה:
# Run from the repository root
#
# The command tags the image with the Git commit SHA.
# To tag with a version number, replace '$(git rev-parse --short HEAD)' with the version number.
gcloud builds submit . \
--config=cloudbuild.yaml \
--substitutions=COMMIT_SHA=$(git rev-parse --short HEAD)
הפקודה הזו מבצעת את הפריסה הראשונית של קוד האפליקציה. כדי לפרוס עדכונים בקוד המקור של MCG, מריצים שוב את הפקודה הזו.
מתן גישה ואימות הפריסה
כדי לאפשר למשתמשים או לחשבונות שירות לשלוח קריאות ל-MCG API, צריך להקצות להם את התפקיד Cloud Run Invoker (roles/run.invoker) ב-IAM:
gcloud run services add-iam-policy-binding mcg-service \ --member=MEMBER_TYPE:EMAIL_ADDRESS \ --role=roles/run.invoker \ --region=your-gcp-region
כדי לקבל את כתובת ה-URL של השירות, מריצים את הפקודה הבאה. כתובת ה-URL נשארת יציבה בכל הפריסות.
SERVICE_URL=$(gcloud run services describe mcg-service \ --region your-gcp-region \ --format='value(status.url)')
אחרי שנותנים הרשאות, מוודאים שהשירות פועל ונגיש על ידי קריאה לנקודת הקצה (endpoint) /health שלו. מכיוון ששירותי Google Cloud Run דורשים אימות, צריך לכלול אסימון הרשאה מ-gcloud בכותרת הבקשה כששולחים קריאה לנקודת הקצה:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
$SERVICE_URL/health
אם השירות פועל, הפקודה הזו מחזירה את הערך OK, ועכשיו אתם יכולים להפעיל כל אחת מנקודות הקצה של ה-API, כמו שמתואר בקטע הפעלת ה-API.