כדי להגדיר את 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, מבצעים את הפעולות הבאות:
בתוך מודול 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: המפתח הסודי שהתקבל מהסוד שמכיל את פרטי הגישה. מידע נוסף על קבלת המפתח הסודי זמין במאמר בנושא קבלת פרטי גישה לדלי.
מאתחלים את קובץ המצב של Terraform בקטגוריית האחסון שציינתם בשלב הקודם:
terraform initיכול להיות ש-Terraform יבקש אזור AWS כקלט חובה, אבל הערך לא ישמש אתכם כי אתם משתמשים באחסון אובייקטים של GDC. כדי לעמוד בדרישה, אפשר להזין כל אזור של AWS.
פורסים את משאב התפקיד
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