פריסת אפליקציות לאשכולות GKE
במדריך הזה לתחילת העבודה, תפרסו אפליקציה בקונטיינר של שרת אינטרנט לדוגמה באשכול Google Kubernetes Engine (GKE). תלמדו איך ליצור אשכול ואיך לפרוס את האפליקציה באשכול כדי שהמשתמשים יוכלו לגשת אליה.
הדף הזה מיועד לאנשי תפעול ולמפתחים שמקצים ומגדירים משאבי ענן ופורסים אפליקציות ושירותים. מידע נוסף על תפקידים נפוצים ודוגמאות למשימות שאנחנו מתייחסים אליהן ב Cloud de Confiance by S3NSתוכן זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.
לפני שקוראים את הדף הזה, חשוב לוודא שמכירים את Kubernetes.
לפני שמתחילים
כדי להפעיל את Kubernetes Engine API, מבצעים את השלבים הבאים:-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
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 Cloud de Confiance project.
Enable the Artifact Registry and Google Kubernetes Engine 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.
התפקידים הנדרשים
מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
roles/container.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
USER_IDENTIFIER: המזהה של חשבון המשתמש חשבון. דוגמאות מופיעות במאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM. -
ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
הפעלת Cloud Shell
במדריך הזה תשתמשו ב-Cloud Shell, שהיא סביבת מעטפת לניהול משאבים שמתארחים ב-Cloud de Confiance by S3NS.
ב-Cloud Shell מותקנים מראש Google Cloud CLI וכלי שורת הפקודה kubectl. ה-CLI של gcloud הוא ממשק שורת הפקודה העיקרי ל- Cloud de Confiance, ו-kubectl הוא ממשק שורת הפקודה העיקרי להרצת פקודות מול אשכולות Kubernetes.
מפעילים את Cloud Shell:
נכנסים למסוף Cloud de Confiance .
לוחצים על Activate Cloud Shell
בפינה הימנית העליונה של המסוף.
בחלק התחתון של המסוף ייפתח סשן של Cloud Shell בתוך מסגרת.
משתמשים בשורת הפקודה הזו כדי להריץ פקודות gcloud ו-kubectl.
לפני שמריצים פקודות, מגדירים את פרויקט ברירת המחדל ב-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud config set project PROJECT_ID
מחליפים את PROJECT_ID במזהה הפרויקט.
יצירת אשכול GKE
אשכול מורכב לפחות ממכונה אחת של מישור הבקרה של האשכול ומכמה מכונות של worker שנקראות צמתים. צמתים הם מכונות וירטואליות (VM) של Compute Engine שמריצות את תהליכי Kubernetes שנדרשים כדי להפוך אותן לחלק מהאשכול. פורסים אפליקציות באשכולות, והאפליקציות פועלות בצמתים.
בקטע הזה נסביר איך ליצור אשכול במצב Autopilot, שהוא מצב האשכול המומלץ לרוב תרחישי השימוש בסביבת ייצור. אפשר גם להשתמש באשכול במצב Standard של GKE כדי לבצע את השלבים האלה.
יוצרים אשכול Autopilot בשם hello-cluster:
gcloud container clusters create-auto hello-cluster \
--location=us-central1
יכול להיות שיחלפו כמה דקות עד שהאשכול ייווצר.
קבלת פרטי כניסה לאימות עבור האשכול
אחרי שיוצרים את האשכול, צריך לקבל פרטי אימות כדי ליצור אינטראקציה עם האשכול:
gcloud container clusters get-credentials hello-cluster \
--location us-central1
הפקודה הזו מגדירה את kubectl לשימוש באשכול שיצרתם.
פריסת אפליקציה באשכול
אחרי שיוצרים אשכול, אפשר לפרוס בו אפליקציה מבוססת-קונטיינר. במדריך למתחילים הזה, אפשר לפרוס את אפליקציית האינטרנט לדוגמה שלנו, hello-app.
GKE משתמש באובייקטים של Kubernetes כדי ליצור ולנהל את המשאבים של האשכול. Kubernetes מספק אובייקט Deployment לפריסה של אפליקציות ללא מצב (stateless) כמו שרתי אינטרנט. אובייקטים של Service מגדירים כללים ואיזון עומסים לגישה לאפליקציה שלכם מהאינטרנט.
יצירת הפריסה
כדי להריץ את hello-app באשכול, צריך לפרוס את האפליקציה על ידי הרצת הפקודה הבאה:
kubectl create deployment hello-server \
--image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
פקודת Kubernetes הזו,
kubectl create deployment,
יוצרת פריסה בשם hello-server. ה-Pod של הפריסה מריץ את קובץ האימג' של הקונטיינר hello-app.
בפקודה הזו:
-
--imageמציין קובץ אימג' של קונטיינר לפריסה. במקרה הזה, הפקודה שולפת את תמונת הדוגמה ממאגר Artifact Registry, us-docker.pkg.dev/google-samples/containers/gke/hello-app. :1.0מציין את הגרסה הספציפית של התמונה שיש לשלוף. אם לא מציינים גרסה, נעשה שימוש בתמונה עם התגlatestשמוגדר כברירת מחדל.
חשיפת הפריסה
אחרי פריסת האפליקציה, צריך לחשוף אותה לאינטרנט כדי שהמשתמשים יוכלו לגשת אליה. אפשר לחשוף את האפליקציה על ידי יצירת Service, שהוא משאב Kubernetes שחושף את האפליקציה לתנועה חיצונית.
כדי לחשוף את האפליקציה, מריצים את הפקודה הבאה של kubectl expose:
kubectl expose deployment hello-server \
--type LoadBalancer \
--port 80 \
--target-port 8080
העברת האפשרות --type LoadBalancer יוצרת מאזן עומסים של Compute Engine עבור הקונטיינר. הדגל --port מאתחל את יציאה 80 הציבורית לאינטרנט, והדגל --target-port מנתב את התנועה ליציאה 8080 של האפליקציה.
מאזני עומסים מחויבים לפי המחירון של מאזני העומסים ב-Compute Engine.
בדיקה והצגה של האפליקציה
בודקים את ה-Pods הפעילים באמצעות
kubectl get pods:kubectl get podsאמור להופיע Pod אחד
hello-serverשפועל באשכול.בודקים את השירות
hello-serverבאמצעותkubectl get service:kubectl get service hello-serverמהפלט של הפקודה הזו, מעתיקים את כתובת ה-IP החיצונית של השירות מהעמודה
EXTERNAL-IP.כדי לראות את האפליקציה בדפדפן האינטרנט, משתמשים בכתובת ה-IP החיצונית עם היציאה שנחשפה:
http://EXTERNAL_IP
הרגע פרסתם אפליקציית אינטרנט בקונטיינר ב-GKE.
כדי לעקוב אחרי משאבי GKE ולארגן אותם בצורה שמתמקדת באפליקציה, אפשר להוסיף את המשאבים כאפליקציות של מרכז האפליקציות, כשהם מוגדרים כשירותים ועומסי עבודה.
מידע נוסף על משאבים שנתמכים ב-מרכז האפליקציות זמין במאמר משאבים נתמכים.
במאמר הגדרת מרכז האפליקציות מוסבר איך להגדיר את מרכז האפליקציות בפרויקט.
הסרת המשאבים
כדי לא לצבור חיובים בחשבון על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט יחד עם המשאבים. Cloud de Confiance Cloud de Confiance
מריצים את הפקודה הבאה כדי למחוק את השירות של האפליקציה:
kubectl delete:kubectl delete service hello-serverהפקודה הזו מוחקת את מאזן העומסים של Compute Engine שיצרתם כשחשפתם את הפריסה.
כדי למחוק את האשכול, מריצים את הפקודה
gcloud container clusters delete:gcloud container clusters delete hello-cluster \ --location us-central1
אופציונלי: hello-app סקר קוד
hello-app היא אפליקציית שרת אינטרנט שמורכבת משני קבצים:
main.go ו-Dockerfile.
hello-app ארוז כקובץ אימג' של קונטיינר Docker. קובצי אימג' של קונטיינרים מאוחסנים בכל מאגר של קובצי אימג' של Docker, כמו Artifact Registry. אנחנו מארחים את hello-app במאגר Artifact Registry בכתובת us-docker.pkg.dev/google-samples/containers/gke/hello-app.
main.go
main.go היא הטמעה של שרת אינטרנט שנכתבה בשפת התכנות Go.
השרת מגיב לכל בקשת HTTP בהודעה 'Hello, world!'.
קובץ Docker
Dockerfile מתאר את קובץ האימג' שרוצים ש-Docker ייצור, כולל כל המשאבים ויחסי התלות שלו, ומציין את יציאת הרשת שהאפליקציה צריכה לחשוף. מידע נוסף על אופן הפעולה של הקובץ הזה זמין במאמר Dockerfile reference (הפניה ל-Dockerfile) במאמרי העזרה של Docker.