בדף הזה מוסבר איך לפרוס את קוד הקצה העורפי של ה-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, צריך לבצע את השלבים הבאים:
- איך יוצרים, מגדירים ומפעילים את מופע ה-VM
- מתקינים את Docker Enterprise Edition (EE) או את Docker Community Edition (CE) במכונה הווירטואלית.
- יצירת מאגר Docker לקוד של שרת הקצה העורפי.
- דחיפת הקונטיינר אל Artifact Registry} או אל מאגר אחר.
חשוב לוודא שאתם יכולים:
- מתחברים למופע ה-VM.
- מריצים את קובץ האימג' של Docker כדי להפעיל את שרת הקצה העורפי במכונת ה-VM. מידע נוסף על הפקודה Docker run
- שליחת בקשות ל-API.
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, צריך לבצע את השלבים הבאים:
פורסים את האפליקציה בקונטיינר לאשכולות של קונטיינרים. השלבים הכלליים שמתוארים בתיעוד של GKE הם:
- אורזים את האפליקציה בקובץ אימג' של Docker.
- מעלים את התמונה למאגר.
- יוצרים אשכול של קונטיינרים.
- פורסים את האפליקציה באשכול.
- חשיפת האפליקציה לאינטרנט.
חשוב לוודא שאתם יכולים:
- מפעילים את השרת של ה-API.
- שליחת בקשות ל-API.
פריסת ה-API וה-ESP
Compute Engine
כדי לפרוס את ה-API באמצעות ESP ב-Compute Engine עם Docker:
מתחברים למופע של מכונת ה-VM. מחליפים את
INSTANCE_NAMEבשם של מופע המכונה הווירטואלית:gcloud compute ssh INSTANCE_NAME
יוצרים רשת מאגרי מידע משלכם בשם
esp_net:sudo docker network create --driver bridge esp_netמריצים מופע של קובץ האימג' של קוד השרת העורפי ומקשרים אותו לרשת הקונטיינר
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בשם של קובץ האימג'.
- מחליפים את
מקבלים את שם השירות של ה-API. זה השם שציינתם בשדה
nameבקובץ ה-YAML של הגדרות השירות.מריצים מופע של קובץ האימג' של 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 כך שישתמש במזהה הגדרה ספציפי:
כוללים את האפשרות
--versionומגדירים אותה למזהה הגדרה ספציפי.מסירים את האפשרות
--rollout_strategy=managedאו מגדירים את--rollout_strategyלערךfixed. האפשרותfixedמגדירה את ESP כך שישתמש בהגדרת השירות שציינתם ב---version.מריצים שוב את הפקודה
docker run.
אם מציינים גם את --rollout_strategy=managed וגם את האפשרות --version, ה-ESP מתחיל עם ההגדרה שצוינה ב---version, אבל אחר כך הוא פועל במצב מנוהל ומקבל את ההגדרה העדכנית.
מומלץ לא להגדיר את ESP לשימוש במזהה הגדרה ספציפי למשך זמן רב מדי, כי אם תפעילו הגדרת שירות מעודכנת, תצטרכו להפעיל מחדש את ESP כדי להשתמש בהגדרה החדשה.
כדי להסיר את מזהה ההגדרה הספציפי:
בדגלי ה-ESP של
docker run, מסירים את האפשרות--version.מוסיפים את האפשרות
--rollout_strategy=managed.כדי להפעיל מחדש את ESP, מריצים את הפקודה
docker run.
רשימת האפשרויות המלאה שאפשר לציין כשמפעילים את ESP מופיעה במאמר אפשרויות ההפעלה של ESP.
GKE
כדי לפרוס את ESP ב-GKE:
מקבלים את שם השירות של ה-API.
פותחים את קובץ המניפסט של הפריסה (שנקרא
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.מפעילים את שירות Kubernetes באמצעות הפקודה
kubectl create:kubectl create -f deployment.yaml
אם אתם צריכים להגדיר את ESP כך שישתמש במזהה הגדרה ספציפי:
בקובץ המניפסט של הפריסה, מוסיפים את האפשרות
--versionומגדירים אותה למזהה הגדרה ספציפי.מסירים את
--rollout_strategy=managedאו מגדירים את--rollout_strategyלערךfixed. האפשרותfixedמגדירה את ESP להשתמש בהגדרת השירות שציינתם ב---version.מפעילים את שירות Kubernetes:
kubectl create -f deployment.yaml
אם מציינים גם את --rollout_strategy=managed וגם את האפשרות --version, ה-ESP מתחיל עם ההגדרה שצוינה ב---version, אבל אחר כך הוא פועל במצב מנוהל ומקבל את ההגדרה העדכנית.
מומלץ לא להגדיר את ESP לשימוש במזהה הגדרה ספציפי למשך זמן רב מדי, כי אם תפעילו הגדרת שירות מעודכנת, תצטרכו להפעיל מחדש את ESP כדי להשתמש בהגדרה החדשה.
כדי להסיר את מזהה ההגדרה הספציפי:
מסירים את האפשרות
--versionמקובץ המניפסט של הפריסה.מוסיפים
--rollout_strategy=managed.מפעילים את שירות Kubernetes:
kubectl create -f deployment.yaml
הרשימה המלאה של האפשרויות שאפשר לציין כשמפעילים את ESP מופיעה במאמר אפשרויות הפעלה של ESP.
מעקב אחר פעילות ב-API
אחרי שפורסים את ESP ואת קצה העורפי של ה-API, אפשר להשתמש בכלים כמו curl או Postman כדי לשלוח בקשות ל-API. אם לא מקבלים תשובה, אפשר להיעזר במאמר בנושא פתרון בעיות שקשורות לתשובות.
אחרי ששולחים כמה בקשות, אפשר:
כדי לראות את הגרפים של הפעילות ב-API, עוברים אל Endpoints > Services. יכול להיות שיעברו כמה רגעים עד שהבקשה תשתקף בתרשימים.
מעיינים ביומני הבקשות של ה-API בדף Cloud Logging.