כדי להגדיר את Terraform בסביבה של Google Distributed Cloud (GDC) עם air gap, צריך להוריד אותו ולהגדיר אותו לטיפול במשאבים ב-Kubernetes.
המסמך הזה מיועד לכל קבוצות הקהלים שצריכות להגדיר את Terraform כדי לנהל את תהליכי העבודה של החומרה והתוכנה שלהן עם air gap. מידע נוסף זמין במאמר קהלי היעד של GDC עם air gap.
לפני שמתחילים
מורידים את Terraform בגרסה 1.6.3 ואילך לתחנת העבודה, לפי המסמכים של HashiCorp: https://developer.hashicorp.com/terraform/install. הגדרת הקצה העורפי במסמך הזה משתמשת בהגדרות שלא נתמכות בגרסאות ישנות יותר של Terraform.
מוודאים שיש לכם קטגוריית אחסון קיימת ב-GDC. אם אין לכם קטגוריית אחסון, אתם צריכים ליצור אחת. מידע נוסף זמין במאמר יצירת קטגוריות אחסון.
מוודאים שהמערכת יכולה לזהות את אישור ה-CA שמשמש את מאגר האובייקטים.
מתקינים את gdcloud CLI. מידע נוסף זמין במאמר שימוש ב-gdcloud CLI.
יוצרים את קובץ ה-kubeconfig לשרת ה-API או לאשכול שמארח את המשאבים שרוצים לנהל באמצעות Terraform. מידע נוסף זמין במאמר קבלת קובץ kubeconfig.
הגדרת Terraform
כדי להגדיר את Terraform בסביבת GDC, מבצעים את הפעולות הבאות:
במודול של Terraform, או באוסף של קובצי Terraform בתחנת העבודה, יוצרים את הקובץ
main.tfומוסיפים את ההגדרות הבאות:terraform { backend "s3" { bucket = "BUCKET_FQN" key = "TF_STATE_PATH" region = "ZONE" endpoints = { s3 = "BUCKET_ENDPOINT" } use_path_style = true access_key = "ACCESS_KEY" secret_key = "SECRET_KEY" skip_credentials_validation = true skip_requesting_account_id = true skip_metadata_api_check = true skip_region_validation = true skip_s3_checksum = true } }מחליפים את מה שכתוב בשדות הבאים:
BUCKET_FQN: הערך שלstatus.fullyQualifiedNameמהמשאב המותאם אישיתBucket. לדוגמה,aabc2z8-platform-terraform-state.
TF_STATE_PATH: הנתיב של קובץ תמונת המצב של Terraform שרוצים לאחסן בקטגוריית האחסון. לדוגמה,main.tfstate.
ZONE: האזור של המשאב בהתאמה אישית שלBucket(status.region). לדוגמה,zone1. ב-Terraform נדרש ערך של אזור, אבל הוא לא נבדק במאגר האובייקטים של GDC.
BUCKET_ENDPOINT: הערך שלstatus.endpointמהמשאב המותאם אישיתBucket. לדוגמה,https://objectstorage.org-1.zone1.google.gdch.test.
ACCESS_KEY: מפתח הגישה שנרכש מהסוד שמכיל את פרטי הכניסה שלכם. למידע נוסף על קבלת מפתח הגישה, ראו קבלת פרטי כניסה לגישה לקטגוריה. הערך בסוד מקודד ב-base64. צריך לפענח אותו לפני שמשתמשים בו.
SECRET_KEY: המפתח הסודי שנרכש מהסוד שמכיל את פרטי הכניסה שלכם. למידע נוסף על קבלת המפתח הסודי, ראו קבלת פרטי כניסה לגישה לקטגוריה. הערך בסוד מקודד ב-base64. צריך לפענח אותו לפני שמשתמשים בו.
מאגר האובייקטים של GDC תואם ל-S3, אבל הוא לא AWS. שאר ההגדרות קובעות את הקצה העורפי לאחסון ב-S3 שאינו של AWS:
use_path_style: משתמש בכתובת קטגוריה בסגנון נתיב למאגר אובייקטים ב-GDC.
skip_credentials_validationו-skip_requesting_account_id: מונעים מ-Terraform לשלוח קריאות ל-AWS STS ול-AWS IAM. GDC לא מספק את השירותים האלה.
skip_metadata_api_check: מונע מ-Terraform לשלוח שאילתות לשירות המטא-נתונים של AWS EC2.
skip_region_validation: מאפשר להשתמש בשם האזור כ-region.
skip_s3_checksum: מונע מ-Terraform לבקש סיכום ביקורת (checksum) של SHA-256 כשהוא מעלה את קובץ תמונת המצב.
מאתחלים את קובץ תמונת המצב של Terraform בקטגוריית האחסון שציינתם בשלב הקודם:
terraform initפורסים את המשאב של תפקיד האשכול
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.בקובץ
main.tf, מוסיפים את הבלוק הבא שלrequired_providers:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }ההגדרה הזו מתקינה את ספק Kubernetes כדי להקצות ולנהל משאבי Kubernetes בסביבת GDC.
מאתחלים את ספריית העבודה ב-Terraform כדי להתקין את הספק:
terraform init