במדריך הזה נסביר איך להריץ אפליקציה בסביבה גמישה של App Engine ב-GKE. כדי להפעיל את האפליקציה ב-GKE, צריך ליצור בשבילה קובץ Docker, ליצור קונטיינר באמצעות Cloud Build ואז להפעיל את הקונטיינר הזה ב-GKE. אין צורך לשנות את הקוד.
לפני שמתחילים
לפני שממשיכים לשלבים המפורטים בהמשך, צריך לבצע את הפעולות הבאות:
מוודאים שהאפליקציה נפרסת ופועלת בצורה תקינה בסביבה הגמישה של App Engine.
בהוראות האלה, תשתמשו באותו פרויקט שבו השתמשתם לאפליקציית App Engine. תמיד אפשר ליצור פרויקט חדש ולהשתמש בו.
מפעילים את ממשקי ה-API של GKE ו-Cloud Build.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםמורידים ומתקינים את Google Cloud CLI ואז מאתחלים את כלי gcloud: מורידים את Google Cloud SDK.
אפשר גם להשתמש ב-Cloud Shell, שמגיע עם ה-CLI של gcloud,
gitותכונות מותקנות מראש אחרות, כמו תמיכה בשפות, כלים ועורכים.מתקינים את כלי שורת הפקודה
kubectl:gcloud components install kubectl
יצירת Dockerfile לאפליקציית App Engine
יוצרים קובץ Dockerfile לאפליקציה כמו שמתואר במאמר יצירת קובץ Dockerfile.
יצירת קונטיינר מקובץ Dockerfile
כדי ליצור מאגר תגים:
מוודאים שאתם נמצאים בספריית האפליקציה של App Engine שמכילה את קובץ ה-Dockerfile.
משנים את פרויקט ברירת המחדל שבו משתמש הכלי
gcloudכך שיצביע על הפרויקט שבו אתם משתמשים כדי להריץ את האפליקציה ב-GKE:gcloud config set project [YOUR-PROJECT-ID]מחליפים את
[YOUR-PROJECT-ID]במזהה הפרויקט של GKE.מריצים את הפקודה הבאה כדי לבנות את הקונטיינר:
gcloud builds submit --tag gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] .מחליפים את
[YOUR-PROJECT-ID]במזהה הפרויקט של GKE, ואת[YOUR-CONTAINER-NAME]בשם של מאגר התגים שבו רוצים להשתמש בשביל מאגר התגים של האפליקציה.מחכים שהקונטיינר ייבנה. התהליך הזה עשוי להימשך זמן מה. בסיום מוצגת הודעה כזו:
Created [https://cloudbuild.googleapis.com/v1/projects/YOUR-PROJECT-ID/builds/xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx]. Logs are permanently available at [https://console.developers.google.com/logs/viewer?resource=build&project=YOUR-PROJECT-ID&filters=text:xxxx-xxx-xxx-xxxxxxxxxxxx]]. ID CREATE_TIME DURATION SOURCE IMAGES STATUS xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx 2017-03-04T00:42:10+00:00 1M32S gs://YOUR-PROJECT-ID_cloudbuild/source/xxxxxxx.08.tgz gcr.io/YOUR-PROJECT-ID/YOUR-CONTAINER-NAME SUCCESS<חשוב לשים לב לשם הקונטיינר – תצטרכו לציין אותו כשמפעילים פתרונות חכמים ב-GKE.
הפעלת האפליקציה ב-GKE
כדי להריץ את הקונטיינר שמכיל את האפליקציה:
יוצרים את האשכול (הפעולה עשויה להימשך כמה דקות):
gcloud container clusters create [YOUR-CLUSTER-NAME]מחליפים את
[YOUR-CLUSTER-NAME]בשם שרוצים לתת לאשכול.משורת הפקודה, מגדירים את אזור החישוב:
gcloud config set compute/zone us-central1-bמוודאים שכלי GKE
kubectlמורשה:gcloud container clusters get-credentials [YOUR-CLUSTER-NAME]פועלים לפי ההנחיות כדי לאשר את הכלי.
מריצים את הקונטיינר שמכיל את האפליקציה:
kubectl create deployment [YOUR-DEPLOYMENT-NAME] --image=gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME]מחליפים את
[YOUR-DEPLOYMENT-NAME]בשם שרוצים להשתמש בו לפריסה, מחליפים את[YOUR-PROJECT-ID]במזהה פרויקט GKE, ומחליפים את[YOUR-CONTAINER-NAME]בשם של מאגר התגים שיצרתם לאפליקציה.חשיפת מאגר התגים לגישה ציבורית:
kubectl expose deployment [YOUR-DEPLOYMENT-NAME] --type="LoadBalancer" --port=8080מחליפים את
[YOUR-DEPLOYMENT-NAME]בשם שבו השתמשתם בשלבים הקודמים. יכול להיות שתצטרכו לחכות כמה דקות עד שכתובת ה-IP החיצונית תופיע.כדי לראות את כתובת ה-IP החיצונית של האפליקציה:
kubectl get service [YOUR-DEPLOYMENT-NAME]מחליפים את
[YOUR-DEPLOYMENT-NAME]בשם שבו השתמשתם בשלבים הקודמים. אם השדהEXTERNAL IPריק, מחכים קצת ואז מפעילים מחדש את הפקודה.צפייה באפליקציה שפועלת ב-GKE:
http://EXTERNAL-IP:8080מחליפים את
EXTERNAL-IPבכתובת ה-IP החיצונית שקיבלתם בשלב הקודם.
פרסתם והפעלתם בהצלחה את אפליקציית App Engine ב-GKE.
המאמרים הבאים
מומלץ לקרוא מידע נוסף על Kubernetes ועל הפקודה kubectl.
Google Kubernetes Engine משתמש ב-Kubernetes לניהול, לפריסה ולשינוי גודל של קונטיינרים. מידע נוסף על Kubernetes זמין באתר Kubernetes החיצוני.
במדריך הזה נעשה שימוש ב-kubectl, ממשק שורת הפקודה לניהול אשכולות Kubernetes. מידע נוסף על kubectl זמין במאמר בנושא kubectl.