פריסת ה-API backend

בדף הזה מוסבר איך לפרוס את קוד הקצה העורפי של ה-API ואת Extensible Service Proxy ‏ (ESP) ב-Google Kubernetes Engine וב-Compute Engine.

למרות ששלבי הפריסה משתנים בהתאם לפלטפורמה שמארחת את ה-API, תמיד יש שלב שבו מציינים ל-ESP את שם השירות ואפשרות שמגדירה את ESP להשתמש בהגדרת השירות האחרונה של Cloud Endpoints שנפרסה. בעזרת המידע הזה, ESP יכול לקבל את ההגדרה של נקודות הקצה (endpoints) של ה-API, וכך ESP יכול לשמש כפרוקסי לבקשות ולתשובות כדי ש-Cloud Endpoints יוכל לנהל את ה-API.

דרישות מוקדמות

כנקודת התחלה, בדף הזה מניחים שיש לכם:

הכנות לפריסה

Compute Engine

כדי ש-Endpoints ינהל את ה-API, צריך להתקין ולהגדיר את ESP וגם את קוד שרת הבק-אנד של ה-API. צריך להתקין את Docker במכונה וירטואלית (VM) של Compute Engine כדי להריץ את קובץ האימג' של Docker של ESP שזמין בחינם ב-Container Registry.

לפני שמבצעים פריסה:

לפני שפורסים את ה-API ואת ESP ב-Compute Engine, צריך לבצע את השלבים הבאים:

  1. איך יוצרים, מגדירים ומפעילים את מופע ה-VM
  2. מתקינים את Docker Enterprise Edition (EE)‎ או את Docker Community Edition (CE)‎ במכונה הווירטואלית.
  3. יצירת מאגר Docker לקוד של שרת הקצה העורפי.
  4. דחיפת הקונטיינר אל Artifact Registry} או אל מאגר אחר.
  5. חשוב לוודא שאתם יכולים:

GKE

כשיוצרים אשכול במסוף Google Cloud , כברירת מחדל, היקפי ה-OAuth שמוענקים לחשבון השירות של האשכול כוללים את ההיקפים שנדרשים ל-Endpoints:

  • Service Control: Enabled
  • Service Management: קריאה בלבד

כשיוצרים אשכול באמצעות הפקודה gcloud container clusters create או באמצעות קובץ הגדרה של צד שלישי, צריך לוודא שמציינים את ההיקפים הבאים:

  • "https://www.googleapis.com/auth/servicecontrol"
  • "https://www.googleapis.com/auth/service.management.readonly"

מידע נוסף זמין במאמר בנושא מהן הרשאות גישה?

לפני שמבצעים פריסה:

על ידי הוספת קטע קטן לקובץ המניפסט של הפריסה, אפשר להריץ את קובץ האימג' של ESP Docker באשכולות של קונטיינרים יחד עם האפליקציה בקונטיינר. לפני שפורסים את ה-API באמצעות ESP ב-GKE, צריך לבצע את השלבים הבאים:

  1. פורסים את האפליקציה בקונטיינר לאשכולות של קונטיינרים. השלבים הכלליים שמתוארים בתיעוד של GKE הם:

    1. אורזים את האפליקציה בקובץ אימג' של Docker.
    2. מעלים את התמונה למאגר.
    3. יוצרים אשכול של קונטיינרים.
    4. פורסים את האפליקציה באשכול.
    5. חשיפת האפליקציה לאינטרנט.
  2. חשוב לוודא שאתם יכולים:

    • מפעילים את השרת של ה-API.
    • שליחת בקשות ל-API.

פריסת ה-API וה-ESP

Compute Engine

כדי לפרוס את ה-API באמצעות ESP ב-Compute Engine עם Docker:

  1. מתחברים למופע של מכונת ה-VM. מחליפים את INSTANCE_NAME בשם של מופע המכונה הווירטואלית:

    gcloud compute ssh INSTANCE_NAME
    
  2. יוצרים רשת מאגרי מידע משלכם בשם esp_net:

    sudo docker network create --driver bridge esp_net
    
  3. מריצים מופע של קובץ האימג' של קוד השרת העורפי ומקשרים אותו לרשת הקונטיינר esp_net:

    sudo docker run \
        --detach \
        --name=YOUR_API_CONTAINER_NAME \
        --net=esp_net \
        gcr.io/YOUR_PROJECT_ID/YOUR_IMAGE:1
    
    • מחליפים את YOUR_API_CONTAINER_NAME בשם הקונטיינר.
    • מחליפים את YOUR_PROJECT_ID בGoogle Cloud מזהה הפרויקט שבו השתמשתם כשדחפתם את התמונה.
    • מחליפים את YOUR_IMAGE בשם של קובץ האימג'.
  4. מקבלים את שם השירות של ה-API. זה השם שציינתם בשדה name בקובץ ה-YAML של הגדרות השירות.

  5. מריצים מופע של קובץ האימג' של ESP Docker:

    sudo docker run \
        --detach \
        --name=esp \
        --publish=80:9000 \
        --net=esp_net \
        gcr.io/endpoints-release/endpoints-runtime:1 \
        --service=SERVICE_NAME \
        --rollout_strategy=managed \
        --http2_port=9000 \
        --backend=grpc://YOUR_API_CONTAINER_NAME:8000
    
    • מחליפים את SERVICE_NAME בשם השירות.
    • מחליפים את YOUR_API_CONTAINER_NAME בשם של הקונטיינר של ה-API.

    האפשרות --rollout_strategy=managed מגדירה את ESP כך שישתמש בהגדרת השירות העדכנית ביותר שנפרסה. אם תבחרו באפשרות הזו, עד 5 דקות אחרי שתפרסו הגדרת שירות חדשה, ESP יזהה את השינוי ויתחיל להשתמש בה באופן אוטומטי. אנחנו ממליצים לציין את האפשרות הזו במקום מזהה תצורה ספציפי לשימוש ב-ESP.

אם אתם צריכים להגדיר את ESP כך שישתמש במזהה הגדרה ספציפי:

  1. כוללים את האפשרות --version ומגדירים אותה למזהה הגדרה ספציפי.

  2. מסירים את האפשרות --rollout_strategy=managed או מגדירים את --rollout_strategy לערך fixed. האפשרות fixed מגדירה את ESP כך שישתמש בהגדרת השירות שציינתם ב---version.

  3. מריצים שוב את הפקודה docker run.

אם מציינים גם את --rollout_strategy=managed וגם את האפשרות --version, ה-ESP מתחיל עם ההגדרה שצוינה ב---version, אבל אחר כך הוא פועל במצב מנוהל ומקבל את ההגדרה העדכנית.

מומלץ לא להגדיר את ESP לשימוש במזהה הגדרה ספציפי למשך זמן רב מדי, כי אם תפעילו הגדרת שירות מעודכנת, תצטרכו להפעיל מחדש את ESP כדי להשתמש בהגדרה החדשה.

כדי להסיר את מזהה ההגדרה הספציפי:

  1. בדגלי ה-ESP של docker run, מסירים את האפשרות --version.

  2. מוסיפים את האפשרות --rollout_strategy=managed.

  3. כדי להפעיל מחדש את ESP, מריצים את הפקודה docker run.

רשימת האפשרויות המלאה שאפשר לציין כשמפעילים את ESP מופיעה במאמר אפשרויות ההפעלה של ESP.

GKE

כדי לפרוס את ESP ב-GKE:

  1. מקבלים את שם השירות של ה-API.

  2. פותחים את קובץ המניפסט של הפריסה (שנקרא deployment.yaml) ומוסיפים את השורות הבאות לקטע containers:

          containers:
          - name: esp
            image: gcr.io/endpoints-release/endpoints-runtime:1
            args: [
              "--http2_port=9000",
              "--service=SERVICE_NAME",
              "--rollout_strategy=managed",
              "--backend=grpc://127.0.0.1:8000"
            ]
            ports:
              - containerPort: 9000
    

    מחליפים את SERVICE_NAME בשם השירות של ה-API.

  3. מפעילים את שירות Kubernetes באמצעות הפקודה kubectl create:

        kubectl create -f deployment.yaml
    

אם אתם צריכים להגדיר את ESP כך שישתמש במזהה הגדרה ספציפי:

  1. בקובץ המניפסט של הפריסה, מוסיפים את האפשרות --version ומגדירים אותה למזהה הגדרה ספציפי.

  2. מסירים את --rollout_strategy=managed או מגדירים את --rollout_strategy לערך fixed. האפשרות fixed מגדירה את ESP להשתמש בהגדרת השירות שציינתם ב---version.

  3. מפעילים את שירות Kubernetes: ‏ kubectl create -f deployment.yaml

אם מציינים גם את --rollout_strategy=managed וגם את האפשרות --version, ה-ESP מתחיל עם ההגדרה שצוינה ב---version, אבל אחר כך הוא פועל במצב מנוהל ומקבל את ההגדרה העדכנית.

מומלץ לא להגדיר את ESP לשימוש במזהה הגדרה ספציפי למשך זמן רב מדי, כי אם תפעילו הגדרת שירות מעודכנת, תצטרכו להפעיל מחדש את ESP כדי להשתמש בהגדרה החדשה.

כדי להסיר את מזהה ההגדרה הספציפי:

  1. מסירים את האפשרות --version מקובץ המניפסט של הפריסה.

  2. מוסיפים --rollout_strategy=managed.

  3. מפעילים את שירות Kubernetes: ‏ kubectl create -f deployment.yaml

הרשימה המלאה של האפשרויות שאפשר לציין כשמפעילים את ESP מופיעה במאמר אפשרויות הפעלה של ESP.

מעקב אחר פעילות ב-API

אחרי שפורסים את ESP ואת קצה העורפי של ה-API, אפשר להשתמש בכלים כמו curl או Postman כדי לשלוח בקשות ל-API. אם לא מקבלים תשובה, אפשר להיעזר במאמר בנושא פתרון בעיות שקשורות לתשובות.

אחרי ששולחים כמה בקשות, אפשר:

  • כדי לראות את הגרפים של הפעילות ב-API, עוברים אל Endpoints ‏ > Services. יכול להיות שיעברו כמה רגעים עד שהבקשה תשתקף בתרשימים.

    לדף Endpoints Services

  • מעיינים ביומני הבקשות של ה-API בדף Cloud Logging.

    כניסה לדף Logs Explorer

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