במאמר הזה מוסבר איך להגדיר מכונות וירטואליות ב-Compute Engine באמצעות Terraform כדי שתוכלו להתקין את Google Distributed Cloud ולנסות אותו במצב זמינות גבוהה (HA). מידע על שימוש ב-Google Cloud CLI לצורך זה מופיע במאמר התנסות ב-Google Distributed Cloud במכונות וירטואליות של Compute Engine.
אתם יכולים להתנסות ב-Google Distributed Cloud במהירות ובלי שתצטרכו להכין חומרה כלשהי. סקריפטים של Terraform שמופיעים במאמר הזה יוצרים רשת של מכונות וירטואליות ב-Compute Engine, שאפשר להשתמש בהן כדי להפעיל את Google Distributed Cloud. במדריך הזה אנחנו משתמשים במודל פריסת אשכול היברידי.
כדי להפעיל אשכול לדוגמה:
- הפעלת סקריפט Terraform כדי להגדיר רשת של מכונות וירטואליות ב-Compute Engine
- פריסת אשכול היברידי
- אימות האשכול
לפני שמתחילים
לפריסה נדרשים המשאבים הבאים:
- תחנת עבודה אחת עם גישה לאינטרנט והכלים הבאים מותקנים בה: Git, Google Cloud CLI ו-Terraform (גרסה >= v0.15.5, < 1.2).
פרויקט Google Cloud .
חשבון שירות בפרויקט שעומד באחת מהדרישות הבאות, וקובץ המפתח שלו הורד לתחנת העבודה:
- לחשבון השירות יש הרשאות בעלים
- לחשבון השירות יש הרשאות אדמין של IAM בפרויקט וגם הרשאות עריכה.
הגדרת רשת של מכונה וירטואלית ב-Compute Engine
בקטע הזה משתמשים בסקריפטים של Terraform ממאגר anthos-samples. הסקריפטים מגדירים את Compute Engine עם המשאבים הבאים:
- שש מכונות וירטואליות לפריסת האשכול ההיברידי:
- מכונה וירטואלית אחת של אדמין שימשה לפריסת האשכול ההיברידי במכונות האחרות.
- שלוש מכונות וירטואליות לשלושת הצמתים של מישור הבקרה שנדרשים להפעלת מישור הבקרה של האשכול ההיברידי.
- שתי מכונות וירטואליות לשני צמתי העובדים שנדרשים להפעלת עומסי עבודה באשכול ההיברידי.
- רשת שכבת-על
VxLANבין כל הצמתים כדי לדמות קישוריות L2. - גישת SSH לצמתי control-plane ו-worker ממכונת האדמין.
אפשר לשנות את מספר הצמתים באשכול על ידי הוספה של שמות צמתים חדשים למשתנה instance_count Terraform:
מורידים את סקריפטים של Terraform לדוגמה
anthos-bm-gcp-terraform:git clone https://github.com/GoogleCloudPlatform/anthos-samples cd anthos-samples/anthos-bm-gcp-terraformמעדכנים את הקובץ
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"משנים את השם של הקובץ
terraform.tfvars.sampleלשם ברירת המחדל שמשמש את Terraform לקובץ המשתנים:mv terraform.tfvars.sample terraform.tfvarsמאתחלים את ספריית הדוגמה כספריית עבודה של Terraform. הפעולה הזו מגדירה את ההגדרות הנדרשות לניהול מצב Terraform, בדומה ל-
git init:terraform initיוצרים תוכנית הרצה של Terraform. בשלב הזה מתבצעת השוואה בין מצב המשאבים, אימות של הסקריפטים ויצירה של תוכנית הפעלה:
terraform planמחילים את השינויים שמתוארים בסקריפט Terraform. בשלב הזה, התוכנית מופעלת אצל הספק שצוין (במקרה הזה Google Cloud) כדי להגיע למצב המשאבים הרצוי:
terraform apply # when prompted to confirm the Terraform plan, type 'Yes' and enter
פריסת האשכול ההיברידי
אחרי שההפעלה של Terraform מסתיימת, אפשר לפרוס את האשכול ההיברידי.
משתמשים ב-SSH כדי להתחבר למארח האדמין:
gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONEאפשר להתעלם מהודעות לגבי עדכון המכונה הווירטואלית ולהשלים את המדריך הזה. אם אתם מתכננים להשתמש במכונות הווירטואליות כסביבת בדיקה, כדאי לעדכן את מערכת ההפעלה או לשדרג לגרסה הבאה, כמו שמתואר ב מסמכי Ubuntu.
מריצים את בלוק הקוד הבא כדי ליצור את
cluster1hybrid 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. כדי לאמת את הפריסה, צריך לבצע את השלבים הבאים.
אם התנתקתם ממארח האדמין, אתם יכולים להשתמש ב-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מגדירים את משתנה הסביבה
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