תוכנית היא הגדרה של 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.
- במאמר החלטה על המודל של האפליקציה מוסבר איך להחליט על המודל של האפליקציה באמצעות תוכניות.
- פרטים על הדרישות בנוגע להגדרת Terraform מופיעים במאמר דרישות לתוכניות Blueprint.
יצירה והעלאה של קובץ ה-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או קובץ Docker.
- ארכיון ה-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 זמינה במאמר גרסאות נתמכות של Terraform.
פקודה יכולה להיראות כמו בדוגמה הבאה:
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 זמינה במאמר גרסאות נתמכות של Terraform.
-
מריצים את עבודת ה-build ב-Cloud באמצעות הפקודה
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. פרטים נוספים זמינים במאמר יצירה וניהול של טריגרים לפיתוח גרסת build.
תמונת ה-OCI נמצאת עכשיו במאגר של Artifact Registry.
כדי להשתמש באימג' הזה עם App Lifecycle Manager, בוחרים את האימג' הזה כשיוצרים גרסת הפצה או כשיוצרים סוג יחידה.
המאמרים הבאים
- מידע נוסף על App Lifecycle Manager זמין במאמר סקירה כללית על App Lifecycle Manager.
- מידע נוסף על תוכניות זמין במאמר תוכניות ב-App Lifecycle Manager.
- כדי להתחיל להשתמש ב-App Lifecycle Manager, כדאי להתחיל עם יצירת מוצר אפליקציה.