יצירה והעלאה של תוכנית

תוכנית ניהול היא הגדרה של Terraform שנארזת כקובץ אימג' של Open Container Initiative‏ (OCI). ההגדרה של Terraform מציינת את התשתית והאפליקציה ש-App Lifecycle Manager פורס עליהן Google Cloud.

בדף הזה נסביר איך ליצור תמונת OCI מהגדרות Terraform קיימות, ואיך להעלות אותן אל App Lifecycle Manager.

פרטים על הגדרות Terraform האלה זמינים במאמר בנושא תוכניות ב-App Lifecycle Manager.

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

  1. מוודאים שהפעלתם את App Lifecycle Manager.
  2. בפרויקט שבו אתם משתמשים ב-App Lifecycle Manager, ודאו שיש לכם מאגר Artifact Registry שמוגדר לפורמט Docker. פרטים נוספים זמינים במאמר יצירת מאגר ל-App Lifecycle Manager.
  3. מזהים את הגדרות Terraform שרוצים לפרוס באמצעות App Lifecycle Manager.

יצירה והעלאה של תוכנית האב

כדי לפרוס את ההגדרות של 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, מבצעים את הפעולות הבאות:

  1. עוברים לספריית הפרויקט של Terraform.
  2. יוצרים ארכיון ZIP שמכיל את התצורה של Terraform.
    • חשוב לוודא:
      • ארכיון ה-ZIP מכיל רק את קובצי Terraform. לדוגמה, main.tf,‏ variables.tf,‏ outputs.tf,‏ versions.tf ומודולים.
      • ארכיון ה-ZIP לא מכיל קבצים מיותרים, למשל ספריות .git או קובץ dockerfile.
    • הפקודה ליצירת ארכיון zip עשויה להיראות כך: zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
  3. מעלים את קובץ ה-ZIP כשיוצרים מהדורה, או כשיוצרים סוג יחידה.

הכלי App Lifecycle Manager משתמש בארכיון ה-ZIP כדי ליצור את קובץ האימג' הנדרש של OCI, ומעביר אותו בדחיפה למאגר Artifact Registry.

חיבור למאגר Git

אם אתם מאחסנים את ההגדרות של Terraform במאגר Git, אתם יכולים לקשר את App Lifecycle Manager למאגר הזה. הכלי App Lifecycle Manager משתמש בקבצים כדי ליצור את תמונת ה-OCI הנדרשת כשיוצרים סוג יחידה או כשיוצרים גרסה.

כדי לספק תוכנית באמצעות מאגר Git:

  1. מוודאים שקובצי Terraform נמצאים בספריית השורש של מאגר Git.
  2. אפשר לקשר את מאגר 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.

בנייה ושליחה של תמונה באופן ידני

השיטה הזו מאפשרת לכם שליטה מדויקת בתהליך יצירת התוכנית.

כדי ליצור תוכנית באופן ידני:

  1. בספריית השורש של קובצי Terraform, יוצרים קובץ בשם Dockerfile עם התוכן הבא:

    # syntax=docker/dockerfile:1-labs
    FROM scratch
    COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /
    

    הפקודה Dockerfile משתמשת בקובץ אימג' בסיסי מינימלי (scratch). כדאי להוסיף את האפשרות dockerignore לפקודה כדי לא לכלול קבצים שלא רלוונטיים, כמו:

    • ה-Dockerfile עצמו
    • הספרייה .git
    • הקובץ .gitignore
  2. אם אין לכם Docker builder, אתם יכולים ליצור docker-container builder באמצעות docker buildx באמצעות הפקודה הבאה:

    docker buildx create --name container --driver=docker-container
    
  3. מריצים את הפקודה 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.

כדי להגדיר את הפעולות האוטומטיות האלה:

  1. בשורש של מאגר 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.
  2. מריצים את עבודת ה-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). בחירת תג תיאורי עוזרת לכם לנהל ביעילות את גרסאות התוכנית.
  3. אתם יכולים להגדיר טריגר כך שבכל פעם שקוד Terraform משתנה, תמונת ה-OCI נוצרת באופן אוטומטי ומועברת אל Artifact Registry. פרטים נוספים זמינים במאמר בנושא יצירה וניהול של טריגרים לבנייה.

תמונת ה-OCI נמצאת עכשיו במאגר של Artifact Registry.

כדי להשתמש באימג' הזה עם App Lifecycle Manager, בוחרים את האימג' הזה כשיוצרים גרסה או כשיוצרים סוג יחידה.

המאמרים הבאים