הגדרת Cloud Endpoints OpenAPI ל-Knative serving עם ESPv2
בדף הזה מוסבר איך להגדיר Cloud Endpoints ל-Knative serving. Endpoints משתמש ב-Extensible Service Proxy V2 (ESPv2) כשער API. כדי לספק ניהול API ל-Knative serving, פורסים את קובץ ה-ESPv2 המובנה מראש אל Knative serving שפועל באשכול GKE.
במסגרת ההגדרה הזו, ESPv2 מיירט את כל הבקשות לשירותים שלכם ומבצע את כל הבדיקות הנדרשות (כמו אימות) לפני הפעלת השירות. כשהשירות מגיב, ESPv2 אוסף ומדווח על טלמטריה.
סקירה כללית של Endpoints זמינה במאמרים מידע על Endpoints וארכיטקטורה של Endpoints.
רשימת משימות
אפשר להשתמש ברשימת המשימות הבאה במהלך העבודה עם המדריך. חובה להשלים את כל המשימות כדי לסיים את המדריך הזה.
יוצרים Google Cloud פרויקט, ואם לא פרסתם שירות משלכם ב-Knative serving, פורסים שירות לדוגמה. לפני שמתחילים
יוצרים אשכול GKE עם Knative serving מופעל.
פריסת דוגמה של שירות Knative serving.
יוצרים מסמך OpenAPI שמתאר את Endpoints API ומגדירים את המסלולים לשירות Knative serving. איך מגדירים נקודות קצה
פורסים את מסמך ה-OpenAPI כדי ליצור שירות מנוהל. איך פורסים את ההגדרה של נקודות הקצה
יוצרים קובץ אימג' חדש של ESPv2 Docker עם הגדרת שירות Endpoints. אפשר לעיין במאמר בנושא יצירת תמונה חדשה של ESPv2.
פורסים את תמונת ה-ESPv2 Knative serving החדשה. מידע נוסף זמין במאמר בנושא פריסת אימג' של ESPv2 ב-Cloud Run.
יוצרים מיפוי דומיין לשירות ESPv2 Knative serving.
כדי לבדוק את ההגדרה, שולחים בקשה אל ה-API.
מעקב אחר הפעילות בשירותים שלכם. מידע נוסף זמין במאמר בנושא מעקב אחר פעילות של API.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
- חשוב לרשום את מזהה הפרויקט כי תצטרכו אותו בהמשך. בהמשך הדף הזה, מזהה הפרויקט הזה יופיע כ-ESPv2_PROJECT_ID.
- הורדה והתקנה של Google Cloud SDK
- מתקינים את curl אם רוצים לשלוח בקשה לשירות לדוגמה שנפרס.
הגדרת שורת הפקודה gcloud
כדי להגדיר את ה-CLI של gcloud ל-Knative serving for Anthos:
מוודאים ש-Google Cloud SDK מורשה לגשת לנתונים ולשירותים שלכם.
נכנסים לחשבון.
gcloud auth login
בכרטיסייה החדשה בדפדפן שנפתחת, בוחרים חשבון עם התפקיד עורך או בעלים בפרויקט Google Cloud שיצרתם כדי לפרוס את ESPv2 ב-Knative serving.
עדכון של רכיבי
gcloudמותקנים:gcloud components update
מגדירים את הפלטפורמה ל-
gkeומגדירים את הגדרת ברירת המחדל של הפרויקט ל-gcloudלפרויקט שיצרתם:gcloud config set run/platform gke
gcloud config set project ESPv2_PROJECT_IDמחליפים את ESPv2_PROJECT_ID במזהה הפרויקט שיצרתם.
מגדירים את האזור עבור האשכול החדש. אפשר להשתמש בכל אזור שבו יש תמיכה ב-GKE, לדוגמה:
gcloud config set compute/zone ZONE
מחליפים את ZONE באזור שלכם. לדוגמה, משתמשים ב-
us-central1-a. אפשר להשתמש בכל אזור שנתמך על ידי GKE.מפעילים את ממשקי ה-API הבאים בפרויקט, שנדרשים כדי ליצור אשכול, לבנות ולפרסם קונטיינר ב-Artifact Registry:
gcloud services enable container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
יצירת אשכול GKE עם הפעלת Knative serving
כדי ליצור אשכול ולהפעיל אותו עבור Knative Serving ב-Google Cloud:
יוצרים אשכול חדש באמצעות הפקודה:
gcloud container clusters create CLUSTER_NAME \ --addons=HttpLoadBalancing,CloudRun \ --machine-type=n1-standard-4 \ --num-nodes=3 \ --enable-stackdriver-kubernetes
מחליפים את CLUSTER_NAME בשם שרוצים לתת לאשכול.
למרות שההוראות האלה לא מפעילות התאמה אוטומטית לעומס באשכול כדי לשנות את גודל האשכולות בהתאם לביקוש, Knative serving ב-Google Cloud משנה את גודל המופעים באשכול באופן אוטומטי.
ממתינים לסיום יצירת האשכול. במהלך תהליך היצירה, אמורות להופיע הודעות דומות לאלה:
Creating cluster CLUSTER_NAME...done. Created [https://container.googleapis.com/v1/projects/ESPv2_PROJECT_ID/zones/ZONE/clusters/CLUSTER_NAME].
בפלט מוצגת גם גרסת האשכול בעמודה
NODE_VERSIONשל הפלט. לדוגמה,1.15.11-gke.1או1.14.10-gke.27. חשוב לשים לב לגרסת האשכול כדי להשתמש בה בהמשך המסמך.כדי שלא תצטרכו לציין את האשכול החדש ואת המיקום שלו כשאתם משתמשים ב-CLI של gcloud, אתם יכולים להגדיר את ברירות המחדל של
gcloudכך שישתמשו באשכול החדש ובמיקום שלו:gcloud config set run/cluster CLUSTER_NAME
gcloud config set run/cluster_location ZONEכדי לראות פרטים על האשכול החדש, משתמשים בפקודה הבאה:
gcloud container clusters describe CLUSTER_NAME
כדי לאחזר את פרטי הכניסה של האשכול, משתמשים בפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME
פריסת קונטיינר לדוגמה של Knative serving
כדי לפרוס את קונטיינר הדוגמה של Knative serving 'hello' לאשכול שיצרתם:
לוחצים על יצירת שירות.
בוחרים באפשרות Knative serving כפלטפורמת הפיתוח.
בתפריט הנפתח של האשכולות הזמינים, בוחרים את האשכול שיצרתם.
משתמשים בשם hello בתור שם השירות. אפשר להשתמש בשם אחר, אבל אם עושים את זה, צריך להשתמש באותו שם בהמשך. בהוראות האלה אנחנו מניחים שאתם משתמשים ב-hello.
בוחרים באפשרות Internal (פנימי) בקטע Connectivity (קישוריות) כדי שהשירות לא יהיה נגיש מבחוץ.
לוחצים על הבא כדי להמשיך לדף השני של טופס יצירת השירות.
מציינים את
gcr.io/cloudrun/helloבתור כתובת ה-URL של קובץ אימג' של קונטיינר.לוחצים על יצירה כדי לפרוס את התמונה ב-Knative serving וממתינים עד שהפריסה תסתיים.
בסיום, מופיע המסך Revisions (גרסאות). שימו לב שכתובת ה-URL של השירות שנפרס היא:
http://hello.default.svc.cluster.localכשיוצרים שירות פנימי, GKE יוצר שם DNS שאפשר להשתמש בו רק לבקשות שמקורן בתוך האשכול עצמו, ולא לבקשות חיצוניות. אין לך אפשרות לגשת לקישור הזה מבחוץ לאשכול. מידע נוסף זמין במאמר בנושא שירותי Cloud Run.
כדי לוודא שהשירות פועל בצורה תקינה באמצעות curl, צריך להגדיר מנהרה משולחן העבודה אל האשכול. כדי לראות את ההוראות האלה, לוחצים על הסמל
משמאל לכתובת ה-URL במסך Revisions:
נפתחת חלונית שבה מוצגות שתי הפקודות שמשמשות לגישה לשירות הפנימי. צריך להריץ את הפקודות האלה בשני חלונות מסוף נפרדים, כי הפקודה הראשונה מגדירה העברת יציאות שמשמשת את הפקודה השנייה.
כשמריצים את פקודת curl, אמור להופיע פלט מהשירות שלכם בפורמט הבא:
<!doctype html> <html lang=en> <head> <meta charset=utf-8> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Congratulations | Cloud Run</title> ...
הגדרת נקודות קצה
צריך ליצור מסמך OpenAPI שמבוסס על OpenAPI 2.0 או על OpenAPI 3.x, ומתאר את הסביבה של האפליקציות ואת דרישות האימות. מידע נוסף זמין במאמר גרסאות נתמכות של OpenAPI.
צריך גם להוסיף שדה ספציפי ל-Google שמכיל את כתובת ה-URL של כל אפליקציה, כדי של-ESPv2 יהיה המידע שהוא צריך כדי להפעיל אפליקציה. אם אתם חדשים ב-OpenAPI, תוכלו לקרוא מידע נוסף בסקירה כללית של OpenAPI.
מידע על הגדרת שדה המארח במפרט OpenAPI
במפרט OpenAPI, מציינים את שם שירות Endpoints שמשמש לגישה לשירות Knative serving. השם של שירות Endpoints הוא בפורמט של שם דומיין. השיטה לציון שם השירות תלויה בגרסה של מפרט OpenAPI שבה אתם משתמשים.
OpenAPI 2.0
משתמשים בשדה host כדי לציין את שם השירות:
host: API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog
OpenAPI 3.x
משתמשים בשדה url באובייקט servers כדי לציין את שם השירות:
servers:
- url: https://API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog
x-google-endpoint: {}מכיוון ששם השירות של Endpoints תואם לשם דומיין, השם צריך לעמוד בכללים הבאים:
- השם יכול להכיל רק אותיות קטנות, מספרים, נקודות או מקפים.
- השם לא יכול להתחיל במקף.
- אסור להכיל קו תחתון.
לדוגמה:
hello-api.endpoints.ESPv2_PROJECT_ID.cloud.goog
יצירת מפרט OpenAPI
- יוצרים קובץ טקסט בשם
openapi-run-anthos.yaml. - שירות הקצה העורפי של Knative serving מוגדר בחלק העליון של הקובץ
openapi-run-anthos.yaml. לדוגמה:OpenAPI 2.0
swagger: '2.0' info: title: Cloud Endpoints + Cloud Run description: Sample API on Cloud Endpoints with a Cloud Run backend version: 1.0.0 host: API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog x-google-endpoints: - name: API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog target: "INGRESS-IP" schemes: - https produces: - application/json x-google-backend: address: http://hello.default.svc.cluster.local disable_auth: true paths: /hello: get: summary: Greet a user operationId: hello responses: '200': description: A successful response schema: type: string
OpenAPI 3.x
openapi: 3.0.4 info: title: Cloud Endpoints + Cloud Run description: Sample API on Cloud Endpoints with a Cloud Run backend version: 1.0.0 servers: - url: https://API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog x-google-endpoint: target: "INGRESS_IP" x-google-api-management: backends: cloudrun_anthos_backend: address: http://hello.default.svc.cluster.local disable_auth: true protocol: "http/1.1" x-google-backend: cloudrun_anthos_backend paths: /hello: get: summary: Greet a user operationId: hello responses: '200': description: A successful response content: application/json: schema: type: string
ההזחה חשובה בפורמט YAML. לדוגמה, השדה
host(ב-OpenAPI 2.0) או האובייקטservers(ב-OpenAPI 3.x) צריכים להיות באותה רמה כמוinfo. - בשדה
host(ב-OpenAPI 2.0) או בשדהserversשל אובייקטurl(ב-OpenAPI 3.x), מציינים את שם הדומיין של Endpoints API שמשמש לגישה לשירות Knative serving, בפורמט:API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog
לדוגמה:
hello-api.endpoints.my-espv2-project-id.cloud.goog
- התוסף
x-google-endpointsרושם רשומת DNS לשירות Endpoints בדומייןcloud.goog, בתבנית הבאה:OpenAPI 2.0
x-google-endpoints: - name: "API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog" target: "IP_ADDRESS"
OpenAPI 3.x
servers: - url: https://API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog x-google-endpoint: target: "IP_ADDRESS"IP_ADDRESS היא כתובת ה-IP של שירות
istio-ingressבאשכול. כדי לזהות את כתובת ה-IP הזו:- נכנסים לדף Google Kubernetes Engine במסוף Google Cloud :
- בחלונית הניווט שמימין, לוחצים על Services & Ingress (שירותים וכניסה) כדי להציג רשימה של שירותים.
- אם גרסת האשכול היא
1.15.3-gke.19ואילך,1.14.3-gke.12ואילך או1.13.10-gke.8ואילך, עוברים לשירותistio-ingress. לכל הגרסאות האחרות של האשכול, אפשר לעבור לשירותistio-ingressgateway - מעתיקים את כתובת ה-IP החיצונית שמוצגת לצד מאזן העומסים, בלי הגדרת היציאה, אם יש כזו. לדוגמה, אם כתובת ה-IP היא
192.0.2.1:15020, לא צריך לציין את:15020. מתעלמים מכתובות ה-IP האחרות שמופיעות ברשימה.
- בקטע
address, מציינים את שם ה-DNS הפנימי של שירות ה-Backend Knative servinghelloומשביתים את האימות לשירות הזה. הדבר נדרש כי הקריאה מ-ESPv2 לשירות Knative serving מתבצעת כקריאה פנימית מתוך האשכול, ולכן אין צורך באימות. -
שימו לב לערך של מאפיין
titleבקובץopenapi-run-anthos.yaml:title: Cloud Endpoints + Cloud Run
הערך של המאפיין
titleהופך לשם של שירות Endpoints אחרי פריסת ההגדרה. -
שומרים את מסמך OpenAPI.
מידע על השדות במסמך OpenAPI שנדרשים ל-Endpoints מופיע במאמר בנושא הגדרת Endpoints.
פריסת ההגדרה של נקודות הקצה
כדי לפרוס את ההגדרה של Endpoints, משתמשים בפקודה gcloud endpoints services deploy. הפקודה הזו משתמשת ב-Service Management כדי ליצור שירות מנוהל.
כדי לפרוס את ההגדרה של Endpoints:
מוודאים שאתם נמצאים בספרייה שמכילה את מסמך OpenAPI.
מעלים את ההגדרה ויוצרים שירות מנוהל.
gcloud endpoints services deploy openapi-run-anthos.yaml \ --project ESPv2_PROJECT_ID
כך נוצר שירות Endpoints חדש עם השם שציינתם כשם המארח במסמך OpenAPI. שירות ה-Endpoints מוגדר בהתאם למסמך ה-OpenAPI שלכם.
במהלך היצירה וההגדרה של שירות Endpoints, Service Management מציג מידע במסוף. בסיום הפריסה, תוצג הודעה שדומה להודעה הבאה:
Service Configuration [CONFIG_ID] uploaded for service [API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog]
CONFIG_ID הוא מזהה ייחודי של הגדרת שירות Endpoints שנוצר על ידי הפריסה. לדוגמה:
Service Configuration [2019-02-01r0] uploaded for service [hello-api.endpoints.ESPv2_PROJECT_ID.cloud.goog]
מזהה הגדרות השירות מורכב מחותמת זמן של התאריך וממספר הגרסה. אם פורסים את
openapi-run-anthos.yamlשוב באותו יום, מספר הגרסה גדל במזהה הגדרת השירות. אפשר לראות את הגדרות השירות ואת היסטוריית הפריסה בדף Endpoints > Services במסוף Google Cloud .אם מופיעה הודעת שגיאה, אפשר להיעזר בפתרון בעיות בהטמעה של הגדרות Endpoints.
בדיקת השירותים הנדרשים
לפחות, צריך להפעיל את שירותי Google הבאים כדי להשתמש ב-Endpoints וב-ESP:| שם | כותרת |
|---|---|
servicemanagement.googleapis.com |
Service Management API |
servicecontrol.googleapis.com |
Service Control API |
ברוב המקרים, הפקודה gcloud endpoints services deploy מפעילה את השירותים הנדרשים האלה. עם זאת, הפקודה gcloud מסתיימת בהצלחה אבל לא מפעילה את השירותים הנדרשים בנסיבות הבאות:
אם השתמשתם באפליקציה של צד שלישי כמו Terraform ולא כללתם את השירותים האלה.
הפריסה של הגדרת ה-Endpoints בוצעה בפרויקטGoogle Cloud קיים שבו השירותים האלה הושבתו באופן מפורש.
כדי לוודא שהשירותים הנדרשים מופעלים, משתמשים בפקודה הבאה:
gcloud services list
אם השירותים הנדרשים לא מופיעים ברשימה, צריך להפעיל אותם:
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.comצריך גם להפעיל את שירות Endpoints:
gcloud services enable ENDPOINTS_SERVICE_NAME
כדי לדעת מהו ENDPOINTS_SERVICE_NAME, אפשר:
אחרי פריסת ההגדרה של Endpoints, נכנסים לדף Endpoints במסוף Cloud. רשימת האפשרויות האפשריות של ENDPOINTS_SERVICE_NAME מוצגת בעמודה שם השירות.
ב-OpenAPI, ENDPOINTS_SERVICE_NAME הוא הערך שציינתם בשדה
hostבמפרט OpenAPI. ב-gRPC, ENDPOINTS_SERVICE_NAME הוא הערך שציינתם בשדהnameבהגדרות של נקודות הקצה של gRPC.
מידע נוסף על פקודות gcloud זמין במאמר שירותי gcloud.
יצירת תמונה חדשה של ESPv2 Knative serving
יוצרים קובץ אימג' חדש של ESPv2 Docker מהגדרות השירות של Endpoints. אחרי שיוצרים את התמונה, אפשר לפרוס אותה באשכול.
כדי ליצור את קובץ ההגדרות של השירות בקובץ אימג' חדש של ESPv2 Docker:
מורידים את הסקריפט הזה למחשב המקומי שבו מותקן ה-CLI של gcloud ומריצים אותו כך:
chmod +x gcloud_build_image
./gcloud_build_image -s API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog \ -c CONFIG_ID -p ESPv2_PROJECT_IDהסקריפט משתמש בפקודה
gcloudכדי להוריד את הגדרות השירות, ליצור את הגדרות השירות בקובץ אימג' חדש של ESPv2 ולהעלות את קובץ האימג' החדש למאגר הקונטיינרים של הפרויקט. הסקריפט משתמש אוטומטית בגרסה האחרונה של ESPv2, שמסומנת ב-ESPv2_VERSION בשם של תמונת הפלט. התמונה שנוצרה מועלית אל:gcr.io/ESPv2_PROJECT_ID/endpoints-runtime-serverless:ESPv2_VERSION-API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog-CONFIG_ID
פריסת קובץ האימג' של ESPv2 Knative serving
פורסים את תמונת השירות של ESPv2 Knative serving באשכול:
פורסים את שירות ESPv2 Knative serving עם קובץ האימג' החדש:
gcloud run deploy ESPv2_SERVICE_NAME \ --image="gcr.io/ESPv2_PROJECT_ID/endpoints-runtime-serverless:ESPv2_VERSION-API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog-CONFIG_ID" \ --platform gke \ --project=ESPv2_PROJECT_ID
ב-ESPv2_PROJECT_ID מציינים את השם שרוצים להשתמש בו בשירות ESPv2. בדוגמה הזו, מגדירים את ESPv2_SERVICE_NAME ל-
espv2.אם רוצים להגדיר את Endpoints כך שישתמש באפשרויות נוספות להפעלה של ESPv2, כמו הפעלת CORS, אפשר להעביר את הארגומנטים במשתנה הסביבה
ESPv2_ARGS:gcloud run deploy ESPv2_SERVICE_NAME \ --image="gcr.io/ESPv2_PROJECT_ID/endpoints-runtime-serverless:ESPv2_VERSION-API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog-CONFIG_ID" \ --set-env-vars=ESPv2_ARGS=--cors_preset=basic \ --platform gke \ --project ESPv2_PROJECT_ID
למידע נוסף ודוגמאות להגדרת משתנה הסביבה ESPv2_ARGS, כולל רשימת האפשרויות הזמינות ומידע על ציון כמה אפשרויות, אפשר לעיין במאמר Extensible Service Proxy V2 flags.
נותנים ל-ESPv2 הרשאה לבצע קריאה ל-Service Management ול-Service Control.
נכנסים לדף Cloud Run במסוף Google Cloud .
מוצאים את מופע Cloud Run שפרסתם ואת חשבון השירות שמשויך אליו.
מקצים לחשבון השירות את ההרשאות הנדרשות:
gcloud projects add-iam-policy-binding PROJECT_NAME
--member "serviceAccount:SERVICE_ACCOUNT"
--role roles/servicemanagement.serviceController
מידע נוסף זמין במאמר מהם תפקידים והרשאות?
שירות ESPv2 נפרס כשירות חיצוני, כלומר אפשר לגשת אליו באמצעות פקודת curl בצורה הבאה:
curl -H "Host: espv2.default.example.com" http://IP_ADDRESS
כאשר IP_ADDRESS היא כתובת ה-IP של שירות istio-ingress עבור האשכול שלכם.
כדי לראות את פקודת ה-curl הזו, לוחצים על סמל התמונה משמאל לכתובת ה-URL של ESPv2 במסך Revisions של שירות ESPv2 Knative serving שנפרס.
עכשיו אפשר לבצע קריאות ל-API לשירות Endpoints דרך שירות ESPv2. לדוגמה, כדי לשלוח בקשה לשירות Endpoints עם נתיב של /hello, אפשר לשלוח בקשה בפורמט הבא:
curl -H "Host: espv2.default.example.com" http://IP_ADDRESS/hello
עם זאת, לא נוח לציין כותרת host בכל בקשה לשירות Endpoints. בקטע הבא מוגדרת מפת דומיין כדי להקל על ביצוע קריאה לשירות Endpoint באמצעות ESPv2.
יצירת מיפוי דומיין לשירות ESPv2 Knative serving
כדי להשמיט את הכותרת host כששולחים בקשה, צריך להוסיף מיפוי דומיין לשירות ESPv2:
בוחרים באפשרות ניהול דומיינים מותאמים אישית.
לוחצים על הוספת מיפוי.
בתפריט הנפתח, בוחרים באפשרות הוספת מיפוי של דומיין שירות.
בשדה Select a service to map to (בחירת שירות למיפוי) בתיבת הדו-שיח Add mapping (הוספת מיפוי), בוחרים את שירות ESPv2.
בשדה Enter domain name (הזנת שם הדומיין), מציינים את שם הדומיין שבו רוצים להשתמש כדי לגשת לשירות Knative serving דרך Endpoints. לדוגמה, מציינים:
API_NAME.endpoints.ESPv2_PROJECT_ID.cloud.goog
כאשר API_NAME הוא שם ה-API של Endpoints. בדוגמה הזו, אפשר להשתמש ב-hello-api:
hello-api.endpoints.ESPv2_PROJECT_ID.cloud.goog
לוחצים על Continue. יופיע סיכום של המיפוי.
כדי לשמור את המיפוי, לוחצים על סיום.
שליחת בקשות אל ה-API
משתמשים ב-curl כדי לשלוח בקשת HTTP ל-API:
curl -X GET "http://hello-api.endpoints.ESPv2_PROJECT_ID.cloud.goog/hello"
אם לא קיבלתם תשובה, אפשר להיעזר במאמר בנושא פתרון בעיות שקשורות לתשובות.
הגדרת Endpoints API לשימוש ב-HTTPS
התמיכה האוטומטית ב-TLS מושבתת כברירת מחדל ב-Knative serving ב-Google Cloud. לכן, בדוגמה הזו, כשניגשים ל-Endpoints API דרך ESPv2, הקריאה מתבצעת באמצעות HTTP.
אפשר להגדיר את ESPv2 כך שיתמוך בבקשות באמצעות HTTPS. שימו לב: מגדירים תמיכה ב-HTTPS ב-ESPv2, השירות החיצוני, ולא ב-hello, שירות הקצה העורפי הפנימי.
כדי לתמוך ב-HTTPS באמצעות ESPv2, צריך:
להיות בעלים של דומיין. אם אין לכם דומיין, אתם יכולים לקבל אותו מ-Cloud Domains או מספק דומיינים אחר.
יצירת מיפוי דומיין לשירות ESPv2 ועדכון רשומת ה-DNS בהתאם להוראות בדף מיפוי הדומיינים.
אם קיבלתם את הדומיין מ-Cloud Domains, אתם יכולים להשתמש ב-Cloud DNS או בשרת DNS לבחירתכם. האפשרות הכי קלה היא להשתמש בדומיין מ-Cloud Domains.
OpenAPI 2.0
במפרט OpenAPI של נקודות הקצה:
- מגדירים את השדה
hostכך שיפנה לדומיין שלכם במקום ל-*.cloud.goog. - מסירים את התג
x-google-endpointsואת שני מאפייני הצאצא שלו.
OpenAPI 3.x
מוסיפים את הקטע הבא למפרט OpenAPI של Endpoints:
servers:
- url: YOUR_DOMAIN
x-google-endpoint: {}הוראות מלאות ומדריך זמינים במאמר בנושא הפעלת HTTPS ואישורי TLS אוטומטיים.
מעקב אחר פעילות ב-API
אפשר לראות את הגרפים של הפעילות ב-API בדף Endpoints > Service במסוף Google Cloud .
הצגת גרפים של פעילות ב-Endpoints
יכול להיות שיעברו כמה רגעים עד שהבקשה תשתקף בתרשימים.
מעיינים ביומני הבקשות של ה-API בדף Logs Explorer. הצגת יומני הבקשות של Endpoints
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
במאמר מחיקת API ומופעי API מוסבר איך להפסיק את השירותים שבהם נעשה שימוש במדריך הזה.