שימוש ב-Terraform

כדי להגדיר את Terraform בסביבה מבודדת (air-gapped) של Google Distributed Cloud ‏(GDC), צריך להוריד אותו ולהגדיר אותו לטיפול במשאבי Kubernetes.

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

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

  • מורידים את Terraform לתחנת העבודה לפי התיעוד שסופק על ידי HashiCorp:‏ https://developer.hashicorp.com/terraform/install.

  • מוודאים שיש לכם קטגוריית אחסון קיימת ב-GDC. אם אין לכם קטגוריית אחסון, אתם צריכים ליצור אחת. מידע נוסף זמין במאמר בנושא יצירת קטגוריות אחסון.

  • מתקינים את ה-CLI של gcloud. למידע נוסף, אפשר לעיין במאמר בנושא שימוש ב-CLI של gcloud.

  • יוצרים את קובץ ה-kubeconfig עבור שרת ה-API או האשכול שמארח את המשאבים שרוצים לנהל באמצעות Terraform. מידע נוסף זמין במאמר בנושא קבלת קובץ kubeconfig.

הגדרת Terraform

כדי להגדיר את Terraform בסביבת GDC, מבצעים את הפעולות הבאות:

  1. בתוך מודול Terraform או אוסף קובצי Terraform בתחנת העבודה, יוצרים את הקובץ main.tf ומוסיפים את ההגדרה הבאה:

    terraform {
      backend "s3" {
        bucket = "BUCKET_FQN"
        key = "TF_STATE_PATH"
        endpoint = "BUCKET_ENDPOINT"
        skip_credentials_validation = true
        force_path_style = true
        access_key = "ACCESS_KEY"
        secret_key = "SECRET_KEY"
      }
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • BUCKET_FQN: השם המוגדר במלואו מBucket המשאב המותאם אישית.

    • TF_STATE_PATH: הנתיב של קובץ מצב Terraform שרוצים לאחסן בקטגוריית האחסון.

    • BUCKET_ENDPOINT: נקודת הקצה מBucketהמשאב המותאם אישית.

    • ACCESS_KEY: מפתח הגישה שהתקבל מהסוד שמכיל את פרטי הגישה שלכם. מידע נוסף על קבלת מפתח הגישה זמין במאמר קבלת פרטי כניסה לגישה לקטגוריה.

    • SECRET_KEY: המפתח הסודי שהתקבל מהסוד שמכיל את פרטי הגישה. מידע נוסף על קבלת המפתח הסודי זמין במאמר בנושא קבלת פרטי גישה לדלי.

  2. מאתחלים את קובץ המצב של Terraform בקטגוריית האחסון שציינתם בשלב הקודם:

    terraform init
    

    יכול להיות ש-Terraform יבקש אזור AWS כקלט חובה, אבל הערך לא ישמש אתכם כי אתם משתמשים באחסון אובייקטים של GDC. כדי לעמוד בדרישה, אפשר להזין כל אזור של AWS.

  3. פורסים את משאב התפקיד crd-viewer באשכול ומקשרים אותו לחשבון המשתמש:

    kubectl apply --kubeconfig KUBECONFIG -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: crd-viewer
    rules:
    - apiGroups: ["apiextensions.k8s.io"]
      resources: ["customresourcedefinitions"]
      verbs: ["get", "list", "watch"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: crd-viewer-binding
    subjects:
    - kind: User
      name: USER_EMAIL
    roleRef:
      kind: ClusterRole
      name: crd-viewer
      apiGroup: rbac.authorization.k8s.io
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • KUBECONFIG: קובץ ה-kubeconfig של שרת ה-API או של האשכול שמארח את המשאבים שמנוהלים באמצעות Terraform.

    • USER_EMAIL: כתובת האימייל של המשתמש שאליו רוצים לשייך את התפקיד.

    פורסים את התפקיד crd-viewer לכל שרת API או אשכול שרוצים להשתמש ב-Terraform בשבילו.

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

    terraform {
      required_providers {
        kubernetes = {
          source = "hashicorp/kubernetes"
          version = ">=2.24.0"
        }
      }
    }
    

    ההגדרה הזו מתקינה את ספק Kubernetes כדי להקצות ולנהל משאבי Kubernetes בסביבת GDC.

  5. מאתחלים את ספריית העבודה של Terraform כדי להתקין את הספק:

    terraform init
    

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