הפעלת אפליקציות App Engine ב-GKE

במדריך הזה נסביר איך להריץ אפליקציה בסביבה גמישה של App Engine ב-GKE. כדי להפעיל את האפליקציה ב-GKE, צריך ליצור בשבילה קובץ Docker, ליצור קונטיינר באמצעות Cloud Build ואז להפעיל את הקונטיינר הזה ב-GKE. אין צורך לשנות את הקוד.

לפני שמתחילים

לפני שממשיכים לשלבים המפורטים בהמשך, צריך לבצע את הפעולות הבאות:

  1. מוודאים שהפריסה של האפליקציה מתבצעת בהצלחה בסביבה הגמישה של App Engine.

  2. בשלבים הבאים תשתמשו באותו פרויקט שבו השתמשתם לאפליקציית App Engine. תמיד אפשר ליצור פרויקט חדש ולהשתמש בו.

  3. Enable the GKE, Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. מורידים ומתקינים את Google Cloud CLI ואז מפעילים את כלי gcloud: מורידים את Google Cloud SDK.

    אפשר גם להשתמש ב-Cloud Shell, שמגיע עם ה-CLI של gcloud,‏ git ותכונות מותקנות מראש אחרות, כמו תמיכה בשפות, כלים ועורכים.

  5. מתקינים את כלי שורת הפקודה kubectl:

    gcloud components install kubectl
    
  6. מורידים ומתקינים את git.

יצירת Dockerfile לאפליקציית App Engine

יוצרים קובץ Dockerfile לאפליקציה כמו שמתואר במאמר בנושא יצירת קובץ Dockerfile.

יצירת קונטיינר מקובץ Dockerfile

כדי ליצור מאגר תגים:

  1. מוודאים שאתם נמצאים בספריית האפליקציה של App Engine שמכילה את קובץ Dockerfile.

  2. משנים את פרויקט ברירת המחדל שבו משתמש הכלי gcloud כך שיצביע על הפרויקט שבו אתם משתמשים כדי להריץ את האפליקציה ב-GKE:

    gcloud config set project [YOUR-PROJECT-ID]
    

    מחליפים את [YOUR-PROJECT-ID] במזהה הפרויקט של GKE.

  3. מריצים את הפקודה הבאה כדי לבנות את הקונטיינר:

    gcloud builds submit --tag gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] .
    

    מחליפים את [YOUR-PROJECT-ID] במזהה הפרויקט של GKE, ואת [YOUR-CONTAINER-NAME] בשם של מאגר התגים שבו רוצים להשתמש בשביל מאגר התגים של האפליקציה.

  4. מחכים שהקונטיינר ייבנה. התהליך הזה עשוי להימשך זמן מה. בסיום מוצגת הודעה כמו זו:

    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

כדי להריץ את הקונטיינר שמכיל את האפליקציה:

  1. יוצרים את האשכול (הפעולה עשויה להימשך כמה דקות):

    gcloud container clusters create [YOUR-CLUSTER-NAME]
    

    מחליפים את [YOUR-CLUSTER-NAME] בשם שרוצים לתת לאשכול.

  2. משורת הפקודה, מגדירים את אזור החישוב:

    gcloud config set compute/zone us-central1-b
    
  3. מוודאים שכלי GKE kubectl מורשה:

    gcloud container clusters get-credentials [YOUR-CLUSTER-NAME]
    

    פועלים לפי ההנחיות כדי לאשר את הכלי.

  4. מריצים את הקונטיינר שמכיל את האפליקציה:

    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] בשם של מאגר התגים שיצרתם לאפליקציה.

  5. חשיפת מאגר התגים לגישה ציבורית:

    kubectl expose deployment [YOUR-DEPLOYMENT-NAME] --type="LoadBalancer" --port=8080
    

    מחליפים את [YOUR-DEPLOYMENT-NAME] בשם שבו השתמשתם בשלבים הקודמים. יכול להיות שתצטרכו להמתין כמה דקות עד שכתובת ה-IP החיצונית תופיע.

  6. כדי לראות את כתובת ה-IP החיצונית של האפליקציה:

    kubectl get service [YOUR-DEPLOYMENT-NAME]
    

    מחליפים את [YOUR-DEPLOYMENT-NAME] בשם שבו השתמשתם בשלבים הקודמים. אם השדה EXTERNAL IP ריק, מחכים קצת ואז מפעילים מחדש את הפקודה.

  7. צופים באפליקציה שפועלת ב-GKE:

    http://EXTERNAL-IP:8080
    

    מחליפים את EXTERNAL-IP בכתובת ה-IP החיצונית שקיבלתם בשלב הקודם.

הצלחתם לפרוס ולהפעיל את אפליקציית App Engine ב-GKE.

המאמרים הבאים

מומלץ לקרוא מידע נוסף על Kubernetes ועל הפקודה kubectl. ‫Google Kubernetes Engine משתמש ב-Kubernetes לניהול, לפריסה ולשינוי גודל של קונטיינרים. מידע נוסף על Kubernetes זמין באתר Kubernetes החיצוני.

במדריך הזה נעשה שימוש ב-kubectl, ממשק שורת הפקודה לניהול אשכולות Kubernetes. מידע נוסף על kubectl זמין במאמר בנושא kubectl.