יצירת אשכול היברידי של Google Distributed Cloud במכונות וירטואליות ב-Compute Engine באמצעות Terraform

במאמר הזה מוסבר איך להגדיר מכונות וירטואליות ב-Compute Engine באמצעות Terraform כדי שתוכלו להתקין את Google Distributed Cloud ולנסות אותו במצב זמינות גבוהה (HA). מידע על שימוש ב-Google Cloud CLI לצורך זה מופיע במאמר התנסות ב-Google Distributed Cloud במכונות וירטואליות של Compute Engine.

אתם יכולים להתנסות ב-Google Distributed Cloud במהירות ובלי שתצטרכו להכין חומרה כלשהי. סקריפטים של Terraform שמופיעים במאמר הזה יוצרים רשת של מכונות וירטואליות ב-Compute Engine, שאפשר להשתמש בהן כדי להפעיל את Google Distributed Cloud. במדריך הזה אנחנו משתמשים במודל פריסת אשכול היברידי.

כדי להפעיל אשכול לדוגמה:

  1. הפעלת סקריפט Terraform כדי להגדיר רשת של מכונות וירטואליות ב-Compute Engine
  2. פריסת אשכול היברידי
  3. אימות האשכול

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

לפריסה נדרשים המשאבים הבאים:

הגדרת רשת של מכונה וירטואלית ב-Compute Engine

בקטע הזה משתמשים בסקריפטים של Terraform ממאגר anthos-samples. הסקריפטים מגדירים את Compute Engine עם המשאבים הבאים:

  • שש מכונות וירטואליות לפריסת האשכול ההיברידי:
    • מכונה וירטואלית אחת של אדמין שימשה לפריסת האשכול ההיברידי במכונות האחרות.
    • שלוש מכונות וירטואליות לשלושת הצמתים של מישור הבקרה שנדרשים להפעלת מישור הבקרה של האשכול ההיברידי.
    • שתי מכונות וירטואליות לשני צמתי העובדים שנדרשים להפעלת עומסי עבודה באשכול ההיברידי.
  • רשת שכבת-על VxLAN בין כל הצמתים כדי לדמות קישוריות L2.
  • גישת SSH לצמתי control-plane ו-worker ממכונת האדמין.

תשתית Bare metal ב- Google Cloud באמצעות מכונות וירטואליות ב-Compute Engine

אפשר לשנות את מספר הצמתים באשכול על ידי הוספה של שמות צמתים חדשים למשתנה instance_count Terraform:

###################################################################################
# The recommended instance count for High Availability (HA) is 3 for Control plane
# and 2 for Worker nodes.
###################################################################################
variable "instance_count" {
  description = "Number of instances to provision per layer (Control plane and Worker nodes) of the cluster"
  type        = map(any)
  default = {
    "controlplane" : 3
    "worker" : 2
  }
}

  1. מורידים את סקריפטים של Terraform לדוגמה anthos-bm-gcp-terraform:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-terraform
    
  2. מעדכנים את הקובץ terraform.tfvars.sample כדי לכלול משתנים שספציפיים לסביבה שלכם:

    project_id       = "PROJECT_ID"
    region           = "GOOGLE_CLOUD_REGION"
    zone             = "GOOGLE_CLOUD_ZONE"
    credentials_file = "PATH_TO_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY_FILE"
    
  3. משנים את השם של הקובץ terraform.tfvars.sample לשם ברירת המחדל שמשמש את Terraform לקובץ המשתנים:

    mv terraform.tfvars.sample terraform.tfvars
    
  4. מאתחלים את ספריית הדוגמה כספריית עבודה של Terraform. הפעולה הזו מגדירה את ההגדרות הנדרשות לניהול מצב Terraform, בדומה ל-git init:

    terraform init
    
  5. יוצרים תוכנית הרצה של Terraform. בשלב הזה מתבצעת השוואה בין מצב המשאבים, אימות של הסקריפטים ויצירה של תוכנית הפעלה:

    terraform plan
    
  6. מחילים את השינויים שמתוארים בסקריפט Terraform. בשלב הזה, התוכנית מופעלת אצל הספק שצוין (במקרה הזה Google Cloud) כדי להגיע למצב המשאבים הרצוי:

    terraform apply  # when prompted to confirm the Terraform plan, type 'Yes' and enter
    

פריסת האשכול ההיברידי

אחרי שההפעלה של Terraform מסתיימת, אפשר לפרוס את האשכול ההיברידי.

  1. משתמשים ב-SSH כדי להתחבר למארח האדמין:

    gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
    

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

  2. מריצים את בלוק הקוד הבא כדי ליצור את cluster1 hybrid cluster במכונות הווירטואליות שהוגדרו ב-Compute Engine:

    sudo ./run_initialization_checks.sh && \
    sudo bmctl create config -c cluster1 && \
    sudo cp ~/cluster1.yaml bmctl-workspace/cluster1 && \
    sudo bmctl create cluster -c cluster1
    

הפעלת הפקודה bmctl מתחילה את ההגדרה של אשכול היברידי חדש. הפעולות האלה כוללות ביצוע בדיקות קדם-הפעלה בצמתים, יצירה של אשכולות אדמין ומשתמשים וגם רישום האשכול ב- Google Cloud באמצעות Connect Agent. תהליך ההגדרה כולו יכול להימשך עד 15 דקות. הפלט הבא מוצג בזמן יצירת האשכול:

    Created config: bmctl-workspace/cluster1/cluster1.yaml
    Creating bootstrap cluster... OK
    Installing dependency components... OK
    Waiting for preflight check job to finish... OK
    - Validation Category: machines and network
            - [PASSED] 10.200.0.3
            - [PASSED] 10.200.0.4
            - [PASSED] 10.200.0.5
            - [PASSED] 10.200.0.6
            - [PASSED] 10.200.0.7
            - [PASSED] gcp
            - [PASSED] node-network
    Flushing logs... OK
    Applying resources for new cluster
    Waiting for cluster to become ready OK
    Writing kubeconfig file
    kubeconfig of created cluster is at bmctl-workspace/cluster1/cluster1-kubeconfig, please run
    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig get nodes
    to get cluster node status.
    Please restrict access to this file as it contains authentication credentials of your cluster.
    Waiting for node pools to become ready OK
    Moving admin cluster resources to the created admin cluster
    Flushing logs... OK
    Deleting bootstrap cluster... OK

אימות ואינטראקציה עם האשכול

אפשר למצוא את קובץ kubeconfig של האשכול במכונת האדמין בספרייה bmctl-workspace. כדי לאמת את הפריסה, צריך לבצע את השלבים הבאים.

  1. אם התנתקתם ממארח האדמין, אתם יכולים להשתמש ב-SSH כדי להתחבר למארח:

    # You can copy the command from the output of the Terraform execution above
    gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
    
  2. מגדירים את משתנה הסביבה KUBECONFIG עם הנתיב לקובץ התצורה של האשכול כדי להריץ פקודות kubectl באשכול:

    export CLUSTER_ID=cluster1
    export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
    kubectl get nodes
    

    הצמתים של האשכול יודפסו, והפלט ייראה כך:

    NAME          STATUS   ROLES    AGE   VERSION
    cluster1-abm-cp1-001   Ready    master   17m   v1.18.6-gke.6600
    cluster1-abm-cp2-001   Ready    master   16m   v1.18.6-gke.6600
    cluster1-abm-cp3-001   Ready    master   16m   v1.18.6-gke.6600
    cluster1-abm-w1-001    Ready    <none>   14m   v1.18.6-gke.6600
    cluster1-abm-w2-001    Ready    <none>   14m   v1.18.6-gke.6600
    

התחברות לאשכול מ Google Cloud המסוף

כדי לצפות בעומסי העבודה במסוף Google Cloud , צריך להיכנס לאשכול.

הוראות ומידע נוסף על התחברות לאשכול זמינים במאמר בנושא עבודה עם אשכולות ממסוף Google Cloud .

הסרת המשאבים

יש שתי דרכים לנקות את הגדרת האשכול.

המסוף

Terraform

  • מבטלים את הרישום של האשכול לפני שמוחקים את כל המשאבים שנוצרו על ידי Terraform.
# Use SSH to connect to the admin host
gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE

# Reset the cluster
export CLUSTER_ID=cluster1
export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
sudo bmctl reset --cluster $CLUSTER_ID

# log out of the admin host
exit
  • משתמשים ב-Terraform כדי למחוק את כל המשאבים.
terraform destroy --auto-approve