צריך לארוז את הקוד המותאם אישית שיוצרים עבור תוספים של Service Extensions ולהעלות אותו ל-Artifact Registry לפני ששירותים אחרים יוכלו לגשת אליו. בדף הזה מוסבר איך ליצור קוד של פלאגין, לארוז את הקוד ולהעלות אותו למאגר של Artifact Registry.
התכונה הזו נמצאת בגרסת טרום-השקה ב-Media CDN.
מידע על Service Extensions זמין במאמר סקירה כללית על Service Extensions.
לפני שמתחילים, מומלץ לעיין בשיטות המומלצות לכתיבת קוד של תוסף.
דוגמאות נוספות זמינות במאמר דוגמאות קוד לתוספים.
לפני שמתחילים
- נכנסים לחשבון 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.
Enable the Network Services, Network Actions, Artifact Registry, Cloud Build, Cloud Logging, and Cloud Monitoring APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
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.
Enable the Network Services, Network Actions, Artifact Registry, Cloud Build, Cloud Logging, and Cloud Monitoring APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init
הגדרת שרשרת הכלים
C++
Proxy-Wasm C++ SDK מאפשר למפתחים להשתמש ב-C++ כדי להטמיע תוספים של WebAssembly (Wasm) עבור Service Extensions. ה-SDK משתמש בערכת הכלים של C++ WebAssembly Emscripten, וגם בספריות אחרות, כמו protobuf, ובאופן אופציונלי, Abseil.
בגלל שבניית פלאגינים שנכתבו ב-C++ תלויה בגרסאות ספציפיות של הכלים והספריות האלה, אנחנו ממליצים להשתמש בקובץ אימג' של Docker שסופק על ידי Proxy-Wasm C++ SDK. ההוראות ל-C++ בדף הזה מתייחסות לשיטה של Docker. כדי ליצור תוספי C++ בלי להשתמש ב-Docker, אפשר לעיין במסמכי ה-SDK של Proxy-Wasm C++.
מתקינים את Docker אם הוא עדיין לא מותקן. Docker כלול ב-Cloud Shell, סביבת המעטפת האינטראקטיבית של Google Cloud .
מורידים עותק של Proxy-Wasm C++ SDK. הדרך הכי פשוטה לעשות את זה היא לשכפל את מאגר Git:
git clone https://github.com/proxy-wasm/proxy-wasm-cpp-sdk.gitיוצרים את קובץ האימג' של Docker של Proxy-Wasm C++ SDK מקובץ Dockerfile שסופק על ידי ה-SDK:
cd proxy-wasm-cpp-sdk docker build -t wasmsdk:v3 -f Dockerfile-sdk .כשהפקודה מסיימת ליצור ספריות ותלויות של SDK, קובץ האימג' של Docker שמתקבל משויך לתג שצוין, שהוא
wasmsdk:v3בדוגמה הזו.
המשך
Proxy-Wasm Go SDK מספק ערכת SDK מלאה של Go. Go מספקת ביצועים טובים ותמיכה עשירה בספריות של צד שלישי שנכתבו ב-Go טהורה.
חלודה
היכולת להתאים אישית את Service Extensions ניתנת באמצעות WebAssembly ו-Proxy-Wasm. WebAssembly תומך במספר שפות תכנות. Google ממליצה על Rust כי היא מספקת תמיכה מצוינת ב-WebAssembly, ו-Proxy-Wasm מספקת ערכת SDK מלאה של Rust. בנוסף, Rust מספקת ביצועים טובים ובטיחות חזקה של טיפוסים.
מתקינים את ערכת הכלים של Rust.
בסיום תהליך ההתקנה, פועלים לפי ההוראות שמופיעות במסוף כדי לסיים את תהליך ההגדרה.
הוספת תמיכה ב-Wasm לשרשרת הכלים של Rust:
rustup target add wasm32-wasip1
יצירת חבילת הפלאגין
C++
יצירת ספרייה חדשה, נפרדת מ-
proxy-wasm-cpp-sdk:mkdir myprojectבספרייה, יוצרים קובץ Makefile עם התוכן הבא:
# Express any dependencies PROTOBUF= # full / lite / none WASM_DEPS= # absl_base re2 ... # Include the SDK Makefile PROXY_WASM_CPP_SDK=/sdk include ${PROXY_WASM_CPP_SDK}/Makefileמוסיפים קובץ מקור C++ לתוסף באותה ספרייה. השמות של קובצי המקור של C++ חייבים להיות זהים לקובצי ה-Wasm שהיעדים של קובץ ה-Makefile, עם הסיומת
.wasmשהוחלפה ב-.cc. בדוגמה הזו, שם קובץ המקור צריך להיותmyproject.cc.מוסיפים את קוד הפלאגין לקובץ המקור.
דוגמת קוד המקור הבאה היא תוסף שכותב מחדש את מארח הבקשה, ופולט כותרת תגובה:
השיטה
onRequestHeadersהיא קריאה חוזרת (callback) שמופעלת על ידי Service Extensions.
המשך
יוצרים ספרייה חדשה לתוסף:
mkdir go-pluginבספרייה, יוצרים קובץ
go.modבאמצעות הכלי Go:go mod init go-pluginבאותה תיקייה, יוצרים קובץ מקור בשם
main.goומוסיפים לקובץ את קוד הפלאגין.דוגמת קוד המקור הבאה היא תוסף שכותב מחדש את מארח הבקשה, ופולט כותרת תגובה: