המדריך הזה מיועד לאדריכלי ענן ולאדמינים של פעולות שרוצים לפרוס אפליקציית אינטרנט באשכול Google Kubernetes Engine (GKE) ולחשוף אותה באמצעות מאזן עומסים של HTTPS.
מטרות
במדריך הזה תלמדו איך:
- יוצרים אשכול GKE.
- איך יוצרים כתובת IP גלובלית ואזור Cloud DNS באמצעות Terraform.
- הגדרת איזון עומסים ב-HTTPS.
- פריסת אפליקציית אינטרנט לדוגמה.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
הגדרת הפרויקט
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- אתם חייבים להיות הבעלים של שם דומיין. שם הדומיין לא יכול להיות ארוך מ-63 תווים. אתם יכולים להשתמש ב-Google Domains או ברשם אחר.
מגדירים את הסביבה
במדריך הזה משתמשים ב-Cloud Shell כדי לנהל משאבים שמתארחים ב-Google Cloud. ב-Cloud Shell מותקנת מראש התוכנה שדרושה ללימודים האלה, כולל Terraform, kubectl ו-gcloud CLI.
הגדרת משתני סביבה:
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1משכפלים את מאגר המקורות של הקוד:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.gitעוברים לספריית העבודה:
cd kubernetes-engine-samples/autopilot/networking-tutorial
יצירת אשכול GKE
קובץ Terraform הבא יוצר אשכול GKE:
קובץ Terraform הבא יוצר כתובת IP גלובלית ואזור Cloud DNS:
מאתחלים את Terraform:
terraform initהצגת השינויים בתשתית:
terraform planכשמופיעה בקשה, מזינים את הדומיין, למשל
my-domain.net.מחילים את ההגדרות של Terraform:
terraform apply --auto-approveכשמופיעה בקשה, מזינים את הדומיין, למשל
my-domain.net.הפלט אמור להיראות כך:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"
יצירת מאזן עומסים חיצוני של אפליקציות (ALB)
במניפסט הבא מתוארים ManagedCertificate, FrontendConfig, Deployment, Service ו-Ingress:
מחליפים את
DOMAIN_NAMEבשם הדומיין, למשלmy-domain.net.למניפסט הזה יש את המאפיינים הבאים:
-
networking.gke.io/managed-certificates: השם של ManagedCertificate. המשאב הזה מקצה אישור SSL בניהול Google (קלאסי). -
networking.gke.io/v1beta1.FrontendConfig: השם של משאב FrontendConfig. -
kubernetes.io/ingress.global-static-ip-name: השם של כתובת ה-IP. -
kubernetes.io/ingress.class: הנחיה ל-GKE Ingress Controller ליצור מאזן עומסים של אפליקציות חיצוני.
-
מחילים את המניפסט על האשכול:
kubectl apply -f kubernetes-manifests.yamlמוודאים שנוצר Ingress:
kubectl describe ingress frontendהפלט אמור להיראות כך:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...יכול להיות שיחלפו כמה דקות עד שה-Ingress יוקצה.
אפליקציית בדיקה
בודקים את הסטטוס של אישור ה-SSL:
kubectl get managedcertificates.networking.gke.io networking-managed-certיכול להיות שיחלפו עד 30 דקות עד שהקצאת אישור ה-SSL תושלם. הפלט הבא מציין שאישור ה-SSL מוכן:
NAME AGE STATUS networking-managed-cert 28m Activeמריצים פקודה
curl:curl -Lv https://DOMAIN_NAMEהפלט אמור להיראות כך:
* Trying 34.160.115.33:443... * Connected to DOMAIN_NAME (34.160.115.33) port 443 (#0) ... * TLSv1.3 (IN), TLS handshake, Certificate (11): ... * Server certificate: * subject: CN=DOMAIN_NAME ... > Host: DOMAIN_NAME
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
מחיקת משאבים בודדים
מוחקים את משאבי Kubernetes:
kubectl delete -f kubernetes-manifests.yamlמוחקים את משאבי Terraform:
terraform destroy --auto-approveכשמופיעה בקשה, מזינים את הדומיין, למשל
my-domain.net.