יצירת תהליך עבודה באמצעות Terraform

במדריך למתחילים הזה נסביר איך ליצור, לפרוס ולהפעיל את זרימת העבודה הראשונה באמצעות Terraform. ‫Terraform הוא כלי מסוג תשתית כקוד (IaC) שמאפשר ליצור, לשנות ולשפר בצורה חזויה את תשתית הענן באמצעות קוד. כאן מוסבר איך משתמשים ב-Terraform כדי לספק תשתית ב- Google Cloud.

במדריך למתחילים הזה, תהליך העבודה לדוגמה שולח בקשה ל-API ציבורי ואז מחזיר את התגובה של ה-API.

תצטרכו לבצע את הפעולות הבאות:

  1. מפעילים את Workflows API באמצעות Terraform.
  2. יוצרים חשבון שירות לתהליך העבודה באמצעות Terraform.
  3. להגדיר ולפרוס תהליך עבודה באמצעות Terraform.
  4. מריצים את תהליך העבודה באמצעות Google Cloud CLI.

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

יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud

שימו לב ש-Terraform כבר משולב ב-Cloud Shell. אם אתם צריכים להתקין את Terraform, תוכלו לעיין במסמכי התיעוד של HashiCorp Terraform.

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. התקינו את ה-CLI של Google Cloud.

  3. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

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

  7. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  8. מפעילים את ממשקי Cloud Resource Manager,‏ Identity and Access Management (IAM) ו-Service Usage:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com serviceusage.googleapis.com
  9. התקינו את ה-CLI של Google Cloud.

  10. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  11. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  12. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

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

  14. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  15. מפעילים את ממשקי Cloud Resource Manager,‏ Identity and Access Management (IAM) ו-Service Usage:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com serviceusage.googleapis.com

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לביצוע ההפעלה המהירה הזו, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

יצירת קובץ תצורה של Terraform

יוצרים קובץ תצורה של Terraform בשם main.tf וכוללים בו את המשאבים של ספק Google ל-Terraform שבהם נעשה שימוש במדריך למתחילים הזה.

שימו לב שאפשר להשתמש באינטרפולציה כדי להחליף משתנים, מאפייני משאבים ופונקציות קריאה.

  1. יצירת ספרייה:

    mkdir terraform
  2. עוברים לספרייה terraform:

    cd terraform
  3. מוסיפים קובץ חדש, main.tf, לספרייה:

    nano main.tf
  4. מוסיפים את המשאבים הבאים לקובץ main.tf:

    1. מקצים את מזהה הפרויקט:

      provider "google" {
      project = "PROJECT_ID"
      }

      מחליפים את PROJECT_ID במזהה הפרויקט.

    2. מפעילים את Workflows API:

      # Enable Workflows API
      resource "google_project_service" "default" {
        service            = "workflows.googleapis.com"
        disable_on_destroy = false
      }

    3. יוצרים חשבון שירות לתהליך העבודה:

      # Create a dedicated service account
      resource "google_service_account" "default" {
        account_id   = "sample-workflows-sa"
        display_name = "Sample Workflows Service Account"
      }

    4. מגדירים את תהליך העבודה באמצעות משאב google_workflows_workflow:

      # Create a workflow
      resource "google_workflows_workflow" "default" {
        name            = "sample-workflow"
        region          = "us-central1"
        description     = "A sample workflow"
        service_account = google_service_account.default.id
      
        deletion_protection = false # set to "true" in production
      
        labels = {
          env = "test"
        }
        user_env_vars = {
          url = "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam"
        }
        source_contents = <<-EOF
        # This is a sample workflow that you can replace with your source code
        #
        # The workflow does the following:
        # - Retrieves the current date from a public API and stores the
        #   response in `currentDate`
        # - Retrieves a list of Wikipedia articles from a public API related
        #   to the day of the week stored in `currentDate`
        # - Returns the list of articles in the workflow output
        #
        # Note that when you define workflows in Terraform, variables must be
        # escaped with two dollar signs ($$) and not a single sign ($)
      
        - getCurrentDate:
            call: http.get
            args:
                url: $${sys.get_env("url")}
            result: currentDate
        - readWikipedia:
            call: http.get
            args:
                url: https://en.wikipedia.org/w/api.php
                query:
                    action: opensearch
                    search: $${currentDate.body.dayOfWeek}
            result: wikiResult
        - returnOutput:
            return: $${wikiResult.body[1]}
      EOF
      
        depends_on = [google_project_service.default]
      }
      

הארגומנטים הבאים משמשים בתהליך העבודה לדוגמה:

  • name: השם של תהליך העבודה.
  • region: המיקום של תהליך העבודה.
  • description: תיאור של תהליך העבודה.
  • service_account: כתובת האימייל או המזהה הייחודי של חשבון השירות שמשויך לגרסה האחרונה של תהליך העבודה. חשבון השירות הזה מייצג את הזהות של תהליך העבודה וקובע אילו הרשאות יש לתהליך העבודה. אם לא מציינים חשבון שירות במהלך יצירת תהליך העבודה, תהליך העבודה משתמש בחשבון השירות שמוגדר כברירת מחדל של Compute Engine לזהות שלו. מידע נוסף זמין במאמר בנושא הענקת הרשאה לזרימת עבודה לגשת למשאבים ב- Google Cloud .
  • labels: רשימה של צמדי מפתח/ערך של תוויות להקצאה לזרימת העבודה הזו, שיעזרו לכם לארגן את המופעים שלכם ב- Google Cloud . מידע נוסף זמין במאמר מהן תוויות?
  • user_env_vars: משתני סביבה שהוגדרו על ידי המשתמש ומשויכים לגרסה הזו של תהליך העבודה. מידע נוסף זמין במאמר בנושא שימוש במשתני סביבה.
  • source_contents: קוד Workflows להרצה. מידע על מגבלת גודל הקובץ מופיע במאמר בנושא מגבלות של משאבים.

ארגומנטים אופציונליים אחרים כוללים את האפשרויות הבאות:

  • crypto_key_name: מזהה המשאב של מפתח Cloud Key Management Service בפורמט הבא:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

    מידע נוסף מופיע במאמר בנושא שימוש במפתחות הצפנה בניהול הלקוח.

  • call_log_level: רמת הרישום ביומן שתחול על שיחות ותגובות לשיחות במהלך ההרצות של תהליך העבודה הזה. הערכים שאפשר לבחור הם:

    • CALL_LOG_LEVEL_UNSPECIFIED
    • LOG_ALL_CALLS
    • LOG_ERRORS_ONLY
    • LOG_NONE

    מידע נוסף זמין במאמר בנושא רישום שיחות ביומן.

  • project: מזהה הפרויקט שאליו שייך המשאב. אם לא מציינים פרויקט, המערכת משתמשת בפרויקט של הספק.

  • name_prefix: יוצר שם ייחודי שמתחיל בקידומת שצוינה. אם לא מציינים ערך למאפיינים האלה, נבחר ערך אקראי לשם.name

יצירה והפעלה של תהליך העבודה

פורסים את משאבי Terraform כדי ליצור את תהליך העבודה, ואז מריצים את תהליך העבודה.

  1. מאתחלים את Terraform בספרייה:

    terraform init
  2. מוודאים שהשינויים שאתם מציעים באמצעות Terraform תואמים לתוכנית הצפויה:

    terraform plan

    אפשר להתעלם מההערה לגבי אי שימוש באפשרות -out.

  3. יוצרים את תהליך העבודה:

    terraform apply
  4. בהנחיה Enter a value (הזנת ערך), מקלידים yes כדי להמשיך ביצירת המשאבים.

  5. בודקים שנוצר תהליך עבודה:

    gcloud workflows list --location us-central1

    הפלט אמור להיראות כך:

    NAME                                                                    STATE   REVISION_ID  UPDATE_TIME
    projects/project-name/locations/us-central1/workflows/sample-workflow   ACTIVE  000001-f9a   2024-02-24T13:38:58.353765906Z
  6. אפשר גם להפעיל את תהליך העבודה:

    gcloud workflows execute sample-workflow

הסרת המשאבים

כדי לא לצבור חיובים בחשבון על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט יחד עם המשאבים. Google Cloud Google Cloud

  1. מוחקים את כל המשאבים שיצרתם באמצעות Terraform:
    terraform destroy
  2. מחיקת תהליך העבודה שיצרתם:
    gcloud workflows delete sample-workflow
    כשמוצגת השאלה אם אתם רוצים להמשיך, מזינים y.
  3. אפשר גם למחוק את הפרויקט Google Cloud כדי להימנע מחיובים. אם מוחקים את הפרויקט ב- Google Cloud , החיוב על כל המשאבים שנעשה בהם שימוש באותו פרויקט יופסק.

      כדי למחוק Google Cloud פרויקט:

      gcloud projects delete PROJECT_ID

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