יצירת אשכול ופריסת עומס עבודה באמצעות Terraform
אשכול של Kubernetes מספק שירותי מחשוב, אחסון, רשת ושירותים אחרים לאפליקציות, בדומה למרכז נתונים וירטואלי. אפליקציות והשירותים המשויכים להן שפועלים ב-Kubernetes נקראים עומסי עבודה.
במדריך הזה תוכלו לראות במהירות אשכול פעיל של Google Kubernetes Engine ועומס עבודה לדוגמה, שמוגדרים באמצעות Terraform. אחרי שתסיימו את ההגדרה, תוכלו לעיין בעומס העבודה במסוף לפני שתמשיכו לתוכנית הלימודים המעמיקה יותר שלנו, או שתתחילו לתכנן וליצור אשכול משלכם שמוכן להפקה. Cloud de Confiance במדריך הזה אנחנו מניחים שאתם כבר מכירים את Terraform.
אם אתם מעדיפים להגדיר את אשכול הדוגמה ואת עומס העבודה במסוף Cloud de Confiance , תוכלו לעיין במאמר יצירת אשכול במסוף Cloud de Confiance .
לפני שמתחילים
כדי להפעיל את Kubernetes Engine API:
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Cloud de Confiance פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Cloud de Confiance פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Cloud de Confiance שיוצרים. -
בוחרים את הפרויקט שיצרתם: Cloud de Confiance
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Cloud de Confiance .
מפעילים את GKE API:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable container.googleapis.com
-
מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUsergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
USER_IDENTIFIER: המזהה של חשבון המשתמש חשבון. דוגמאות מופיעות במאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM. -
ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
-
הכנת הסביבה
במדריך הזה תשתמשו ב-Cloud Shell כדי לנהל משאבים שמתארחים ב-Cloud de Confiance by S3NS. ב-Cloud Shell מותקן מראש התוכנה שדרושה למדריך הזה, כולל Terraform, kubectl ו-Google Cloud CLI.
מפעילים סשן Cloud Shell מהמסוף על ידי לחיצה על סמל ההפעלה של Cloud Shell Activate Cloud Shell
. Cloud de Confiance הפעולה הזו תפעיל סשן בחלונית התחתונה של Cloud de Confiance המסוף.פרטי הכניסה לשירות שמשויכים למכונה הווירטואלית נוצרים אוטומטית, כך שלא צריך ליצור או להוריד מפתח לחשבון שירות.
לפני שמריצים פקודות, מגדירים את פרויקט ברירת המחדל ב-CLI של gcloud באמצעות הפקודה הבאה:
gcloud config set project PROJECT_IDמחליפים את
PROJECT_IDבמזהה הפרויקט.משכפלים את המאגר ב-GitHub:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branchעוברים לספריית העבודה:
cd terraform-docs-samples/gke/quickstart/autopilot
סקירת קובצי Terraform
Cloud de Confiance by S3NS פלאגין שמתממשק עם שירותים חיצוניים הוא פלאגין שמאפשר לכם לנהל ולהקצות Cloud de Confiance משאבים באמצעות Terraform. הוא משמש כגשר בין ההגדרות של Terraform לבין ממשקי API של Cloud de Confiance , ומאפשר להגדיר באופן הצהרתי משאבי תשתית, כמו מכונות וירטואליות ורשתות.
האשכול ואפליקציית הדוגמה במדריך הזה מוגדרים בשני קובצי Terraform שמשתמשים בספקי Cloud de Confiance by S3NS ובספקי Kubernetes.
בודקים את הקובץ
cluster.tf:cat cluster.tfהפלט אמור להיראות כך:
בקובץ הזה מתוארים המשאבים הבאים:
-
google_compute_network: רשת VPC עם IPv6 פנימי מופעל. -
google_compute_subnetwork: רשת משנה עם תמיכה ב-dual-stack. -
google_container_cluster: a dual-stack Autopilot mode cluster located inus-central1. ההגדרהdeletion_protectionקובעת אם אפשר להשתמש ב-Terraform כדי למחוק את האשכול הזה. אם מגדירים את הערך בשדהdeletion_protectionל-false, Terraform יכול למחוק את האשכול. לפרטים נוספים, אפשר לעיין במקור המידעgoogle_container_cluster.
-
בודקים את הקובץ
app.tf:cat app.tfהפלט אמור להיראות כך:
בקובץ הזה מתוארים המשאבים הבאים:
- פריסה עם תמונה לדוגמה של קונטיינר.
- שירות מסוג LoadBalancer. השירות חושף את הפריסה ביציאה 80.
(אופציונלי) חשיפת האפליקציה לאינטרנט
קובצי ה-Terraform לדוגמה מתארים אפליקציה עם כתובת IP פנימית, שאפשר לגשת אליה רק מאותו ענן וירטואלי פרטי (VPC) כמו אפליקציית הדוגמה. אם רוצים לגשת לממשק האינטרנט של אפליקציית ההדגמה הפועלת מהאינטרנט (לדוגמה, מהמחשב הנייד), צריך לשנות את קובצי ה-Terraform כדי ליצור כתובת IP ציבורית לפני שיוצרים את האשכול. אפשר לעשות את זה באמצעות עורך טקסט ישירות ב-Cloud Shell או באמצעות Cloud Shell Editor.
כדי לחשוף את אפליקציית ההדגמה לאינטרנט:
ב-
cluster.tf, משנים אתipv6_access_typeמ-INTERNALל-EXTERNAL.ipv6_access_type = "EXTERNAL"ב-
app.tf, מסירים את ההערהnetworking.gke.io/load-balancer-typeכדי להגדיר מאזן עומסים חיצוני.annotations = { "networking.gke.io/load-balancer-type" = "Internal" # Remove this line }
יצירת אשכול ופריסת אפליקציה
ב-Cloud Shell, מריצים את הפקודה הבאה כדי לוודא ש-Terraform זמין:
terraformהפלט אמור להיראות כך:
Usage: terraform [global options] <subcommand> [args] The available commands for execution are listed below. The primary workflow commands are given first, followed by less common or more advanced commands. Main commands: init Prepare your working directory for other commands validate Check whether the configuration is valid plan Show changes required by the current configuration apply Create or update infrastructure destroy Destroy previously-created infrastructureמאתחלים את Terraform:
terraform initמתכננים את ההגדרות של Terraform:
terraform planהחלת ההגדרות של Terraform
terraform applyכשמופיעה בקשה, מזינים
yesכדי לאשר את הפעולות. יכול להיות שיחלפו כמה דקות עד שהפקודה הזו תושלם. הפלט אמור להיראות כך:Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
אימות הפעולה התקינה של האשכול
כדי לוודא שהאשכול פועל בצורה תקינה:
נכנסים לדף Workloads במסוף Cloud de Confiance :
לוחצים על עומס העבודה
example-hello-app-deployment. יוצג הדף 'פרטי ה-Pod'. בדף הזה מוצג מידע על ה-Pod, כמו הערות, קונטיינרים שפועלים ב-Pod, שירותים שחושפים את ה-Pod ומדדים, כולל שימוש ב-CPU, בזיכרון ובדיסק.נכנסים לדף Services & Ingress במסוף Cloud de Confiance :
לוחצים על
example-hello-app-loadbalancerLoadBalancer Service. יוצג דף הפרטים של השירות. בדף הזה מוצג מידע על השירות, כמו ה-Pods שמשויכים לשירות והיציאות שבהן השירות משתמש.בקטע External endpoints (נקודות קצה חיצוניות), לוחצים על IPv4 link (קישור IPv4) או על IPv6 link (קישור IPv6) כדי להציג את השירות בדפדפן. הפלט אמור להיראות כך:
Hello, world! Version: 2.0.0 Hostname: example-hello-app-deployment-5df979c4fb-kdwgr
הסרת המשאבים
כדי לא לצבור חיובים בחשבון על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט יחד עם המשאבים. Cloud de Confiance Cloud de Confiance
אם אתם מתכננים לעבור מדריכים נוספים או להמשיך לבדוק את הדוגמה, כדאי לחכות עד שתסיימו כדי לבצע את שלב הניקוי הזה.
ב-Cloud Shell, מריצים את הפקודה הבאה כדי למחוק את משאבי Terraform:
terraform destroy --auto-approve
פתרון בעיות בניקוי
אם מופיעה הודעת שגיאה דומה לThe network resource 'projects/PROJECT_ID/global/networks/example-network' is already being used by 'projects/PROJECT_ID/global/firewalls/example-network-yqjlfql57iydmsuzd4ot6n5v', צריך לבצע את הפעולות הבאות:
מוחקים את הכללים של חומת האש:
gcloud compute firewall-rules list --filter="NETWORK:example-network" --format="table[no-heading](name)" | xargs gcloud --quiet compute firewall-rules deleteמריצים מחדש את הפקודה של Terraform:
terraform destroy --auto-approve
המאמרים הבאים
אפשר לעיין באשכול ובעומס העבודה במסוף Cloud de Confiance כדי לקבל מידע על חלק מההגדרות והמשאבים החשובים של עומס העבודה שפרסתם.
מידע נוסף על הגדרה ושימוש ב-Terraform עם GKE זמין במאמר תמיכה ב-Terraform ל-GKE.
כדאי לנסות את תוכנית הלימודים המפורטת יותר: אפליקציות שניתן להרחיב.
בסקירה הכללית בנושא ניהול אשכולות אפשר לקרוא איך מתחילים לנהל אשכולות בחיים האמיתיים.