תוכנית ניהול היא הגדרה של Terraform שנארזת כקובץ אימג' של Open Container Initiative (OCI). ההגדרה של Terraform מציינת את התשתית והאפליקציה ש-App Lifecycle Manager פורס עליהן Google Cloud.
בדף הזה נסביר איך ליצור תמונת OCI מהגדרות Terraform קיימות, ואיך להעלות אותן אל App Lifecycle Manager.
פרטים על הגדרות Terraform האלה זמינים במאמר בנושא תוכניות ב-App Lifecycle Manager.
לפני שמתחילים
- מוודאים שהפעלתם את App Lifecycle Manager.
- בפרויקט שבו אתם משתמשים ב-App Lifecycle Manager, ודאו שיש לכם מאגר Artifact Registry שמוגדר לפורמט Docker. פרטים נוספים זמינים במאמר יצירת מאגר ל-App Lifecycle Manager.
- מזהים את הגדרות Terraform שרוצים לפרוס באמצעות App Lifecycle Manager.
- לפרטים על האופן שבו מחליטים איך ליצור מודל של מוצר SaaS באמצעות תוכניות, אפשר לעיין במאמר קביעת המודל של מוצר ה-SaaS.
- פרטים על הדרישות להגדרת Terraform מופיעים במאמר דרישות ל-Blueprint.
יצירה והעלאה של תוכנית האב
כדי לפרוס את ההגדרות של Terraform ב- Google Cloud באמצעות App Lifecycle Manager, צריך:
- אורזים את ההגדרות של Terraform בתמונות OCI. תמונות ה-OCI האלה נקראות תוכניות.
- ממקמים את תמונות ה-OCI האלה במאגר Artifact Registry שזיהיתם או הגדרתם.
בהתאם לאופן שבו תבחרו ליצור ולהעלות את תוכנית הפעולה, תוכלו לבצע את כל השלבים באופן ידני, או להשתמש ב-App Lifecycle Manager כדי לבצע חלק מהשלבים.
אפשר ליצור את תמונת ה-OCI ולהעלות אותה למאגר באמצעות אחת מהשיטות הבאות:
מעלים ארכיון ZIP שמכיל את התצורה של Terraform. App Lifecycle Manager משתמש בארכיון ה-ZIP כדי ליצור את קובץ האימג' של OCI.
פרטים נוספים מופיעים בקטע הבא: העלאת ארכיון ZIP.
חיבור למאגר Git שמכיל את קובצי Terraform. הכלי App Lifecycle Manager משתמש בקבצים כדי ליצור את תמונת ה-OCI. לאחר מכן, App Lifecycle Manager משתמש ב-Cloud Build כדי ליצור את תוכנית האב ולהעלות אותה בכל פעם שמעדכנים את המאגר.
פרטים נוספים מופיעים בקטע הבא: חיבור למאגר Git.
יוצרים את קובץ האימג' של OCI באופן מקומי ומעבירים אותו בדחיפה למאגר ב-Artifact Registry.
פרטים נוספים זמינים בקטע הבא: יצירה והעלאה של תמונה באופן ידני.
אוטומציה של יצירת קובץ אימג' של OCI והעברה שלו למאגר ב-Artifact Registry. האוטומציה של התהליך הזה עוזרת לכם לשלב את App Lifecycle Manager בפייפליין של CI/CD.
פרטים נוספים זמינים בקטע הבא: אוטומציה של יצירת תוכניות.
העלאת ארכיון ZIP
אפשר ליצור קובץ zip של קובצי Terraform. מעלים את הארכיון הזה אל App Lifecycle Manager כשיוצרים גרסה או סוג יחידה. הכלי App Lifecycle Manager משתמש בארכיון ה-ZIP כדי ליצור את תמונת ה-OCI הנדרשת.
כדי לספק תוכנית באמצעות ארכיון ZIP, מבצעים את הפעולות הבאות:
- עוברים לספריית הפרויקט של Terraform.
- יוצרים ארכיון ZIP שמכיל את התצורה של Terraform.
- חשוב לוודא:
- ארכיון ה-ZIP מכיל רק את קובצי Terraform. לדוגמה,
main.tf,variables.tf,outputs.tf,versions.tfומודולים. - ארכיון ה-ZIP לא מכיל קבצים מיותרים, למשל ספריות
.gitאו קובץ dockerfile.
- ארכיון ה-ZIP מכיל רק את קובצי Terraform. לדוגמה,
- הפקודה ליצירת ארכיון zip עשויה להיראות כך:
zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
- חשוב לוודא:
- מעלים את קובץ ה-ZIP כשיוצרים מהדורה, או כשיוצרים סוג יחידה.
הכלי App Lifecycle Manager משתמש בארכיון ה-ZIP כדי ליצור את קובץ האימג' הנדרש של OCI, ומעביר אותו בדחיפה למאגר Artifact Registry.
חיבור למאגר Git
אם אתם מאחסנים את ההגדרות של Terraform במאגר Git, אתם יכולים לקשר את App Lifecycle Manager למאגר הזה. הכלי App Lifecycle Manager משתמש בקבצים כדי ליצור את תמונת ה-OCI הנדרשת כשיוצרים סוג יחידה או כשיוצרים גרסה.
כדי לספק תוכנית באמצעות מאגר Git:
- מוודאים שקובצי Terraform נמצאים בספריית השורש של מאגר Git.
- אפשר לקשר את מאגר Git ל-App Lifecycle Manager כשיוצרים גרסת הפצה או כשיוצרים סוג יחידה.
הכלי App Lifecycle Manager משתמש ב-Developer Connect כדי להתחבר למאגר Git. פרטים נוספים על Developer Connect זמינים במסמכי התיעוד של Developer Connect.
הכלי App Lifecycle Manager משתמש בקובצי Terraform ממאגר Git כדי ליצור את קובץ האימג' הנדרש של OCI, ומעביר אותו בדחיפה למאגר Artifact Registry.
השילוב הזה מבצע אוטומציה של תהליך יצירת התוכנית בכל פעם שאתם מעדכנים את קוד Terraform במאגר. כשמתבצעים שינויים במאגר Git המקושר, App Lifecycle Manager משתמש בקבצים ששונו כדי ליצור באופן אוטומטי קובץ אימג' חדש של OCI, ואז מעביר אותו בדחיפה למאגר Artifact Registry.
בנייה ושליחה של תמונה באופן ידני
השיטה הזו מאפשרת לכם שליטה מדויקת בתהליך יצירת התוכנית.
כדי ליצור תוכנית באופן ידני:
בספריית השורש של קובצי Terraform, יוצרים קובץ בשם
Dockerfileעם התוכן הבא:# syntax=docker/dockerfile:1-labs FROM scratch COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /הפקודה
Dockerfileמשתמשת בקובץ אימג' בסיסי מינימלי (scratch). כדאי להוסיף את האפשרותdockerignoreלפקודה כדי לא לכלול קבצים שלא רלוונטיים, כמו:- ה-
Dockerfileעצמו - הספרייה
.git - הקובץ
.gitignore
- ה-
אם אין לכם Docker builder, אתם יכולים ליצור
docker-containerbuilder באמצעותdocker buildxבאמצעות הפקודה הבאה:docker buildx create --name container --driver=docker-containerמריצים את הפקודה
docker buildx buildהבאה מהספרייה של Terraform כדי ליצור את תוכנית הבסיס ולדחוף אותה אל Artifact Registry:IMAGE_NAME=us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG ENGINE_TYPE=inframanager ENGINE_VERSION=TERRAFORM_VERSION docker buildx build -t $IMAGE_NAME \ --builder=container \ --push \ --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \ --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \ --provenance=false .מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
REPOSITORY_NAME: השם של מאגר Artifact Registry. -
IMAGE_NAME: שם לתמונת התוכנית. -
TAG: תג לגרסת התמונה (לדוגמה,latestאוv1.0.0). בחירת תג תיאורי עוזרת לכם לנהל ביעילות את גרסאות התוכנית. -
TERRAFORM_VERSION: הגרסה הנתמכת של Terraform שבה ייעשה שימוש. במאמר גרסאות נתמכות של Terraform מפורטת רשימת הגרסאות שנתמכות ב-Infrastructure Manager.
פקודה יכולה להיראות כמו בדוגמה הבאה:
IMAGE_NAME=us-docker.pkg.dev/saas-docs-testing/blueprints-repo/my-terraform-blueprint:v1.0.0 ENGINE_TYPE=inframanager ENGINE_VERSION=1.5.7 docker buildx build -t $IMAGE_NAME \ --builder=container \ --push \ --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \ --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \ --provenance=false .-
תמונת ה-OCI נמצאת במאגר Artifact Registry.
כדי להשתמש באימג' הזה עם App Lifecycle Manager, בוחרים את האימג' הזה כשיוצרים גרסה או כשיוצרים סוג יחידה.
יצירת שרטוטים באופן אוטומטי
אפשר להשתמש ב-Cloud Build כדי ליצור באופן אוטומטי את קובץ האימג' של OCI ולדחוף אותו ל-Artifact Registry. אתם יכולים להגדיר טריגר כך שכל פעם שקוד Terraform משתנה, תמונת ה-OCI תיבנה אוטומטית ותידחף אל Artifact Registry.
כדי להגדיר את הפעולות האוטומטיות האלה:
בשורש של מאגר Terraform, יוצרים קובץ
cloudbuild.yamlעם ההגדרות הבאות:steps: - id: 'Create Dockerfile' name: 'bash' args: ['-c', 'echo -e "# syntax=docker/dockerfile:1-labs\nFROM scratch\nCOPY --exclude=Dockerfile.Blueprint --exclude=.git --exclude=.gitignore . /" > Dockerfile.Blueprint'] - id: 'Create docker-container driver' name: 'docker' args: ['buildx', 'create', '--name', 'container', '--driver=docker-container'] - id: 'Build and Push docker image' name: 'docker' args: ['buildx', 'build', '-t', '${_IMAGE_NAME}', '--builder=container', '--push', '--annotation', 'com.easysaas.engine.type=${_ENGINE_TYPE}','--annotation', 'com.easysaas.engine.version=${_ENGINE_VERSION}', '--provenance=false','-f', 'Dockerfile.Blueprint', '.'] serviceAccount: '${_SERVICE_ACCOUNT}' substitutions: _SERVICE_ACCOUNT: 'projects/PROJECT_ID/serviceAccounts/CLOUD_BUILD_SERVICE_ACCOUNT' _IMAGE_NAME: 'us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest' _ENGINE_TYPE: 'inframanager' _ENGINE_VERSION: 'TERRAFORM_VERSION' options: logging: CLOUD_LOGGING_ONLYמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
CLOUD_BUILD_SERVICE_ACCOUNT: השם המלא של חשבון השירות של Cloud Build. לפרטים נוספים על App Lifecycle Manager וחשבונות שירות, אפשר לעיין במאמר חשבונות שירות של App Lifecycle Manager. -
REPOSITORY_NAME: השם של מאגר Artifact Registry. -
IMAGE_NAME: שם לתמונת התוכנית. -
TAG: תג לגרסת התמונה (לדוגמה,latestאוv1.0.0). בחירת תג תיאורי עוזרת לכם לנהל ביעילות את גרסאות התוכנית. -
TERRAFORM_VERSION: הגרסה הנתמכת של Terraform שבה ייעשה שימוש. במאמר גרסאות נתמכות של Terraform מפורטת רשימת הגרסאות שנתמכות ב-Infrastructure Manager.
-
מריצים את עבודת ה-Cloud Build באמצעות הפקודה
gcloud builds submitמהספרייה שמכילה את הקובץcloudbuild.yaml:gcloud builds submit --config=cloudbuild.yaml --substitutions=_IMAGE_NAME='us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
REPOSITORY_NAME: השם של מאגר Artifact Registry. -
IMAGE_NAME: שם לתמונת התוכנית -
TAG: תג לגרסת התמונה (לדוגמה,latestאוv1.0.0). בחירת תג תיאורי עוזרת לכם לנהל ביעילות את גרסאות התוכנית.
-
אתם יכולים להגדיר טריגר כך שבכל פעם שקוד Terraform משתנה, תמונת ה-OCI נוצרת באופן אוטומטי ומועברת אל Artifact Registry. פרטים נוספים זמינים במאמר בנושא יצירה וניהול של טריגרים לבנייה.
תמונת ה-OCI נמצאת עכשיו במאגר של Artifact Registry.
כדי להשתמש באימג' הזה עם App Lifecycle Manager, בוחרים את האימג' הזה כשיוצרים גרסה או כשיוצרים סוג יחידה.
המאמרים הבאים
- מידע נוסף על App Lifecycle Manager זמין במאמר סקירה כללית על App Lifecycle Manager.
- מידע נוסף על שרטוטים זמין במאמר שרטוטים ב-App Lifecycle Manager.
- כדי להתחיל להשתמש ב-App Lifecycle Manager, צריך קודם ליצור מוצר SaaS.