אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X. info
הוספת פלאגין מותאם אישית
אפשר להוסיף תכונות ויכולות חדשות ל-microgateway על ידי כתיבת יישומי פלאגין מותאמים אישית. באמצעות יישומי פלאגין מותאמים אישית אפשר לבצע אינטראקציה פרוגרמטית עם הבקשות והתשובות שעוברות דרך המיקרו-שער.
בקטע הזה מוסבר איך לארוז ולפרוס פלאגינים למכונה של Edge Microgateway שפועלת באשכול Kubernetes.
בהמשך הקטע הזה נניח שאתם יודעים לכתוב ולהגדיר יישומי פלאגין להגדרה רגילה של Edge Microgateway. אם לא, אפשר לעיין במאמר פיתוח יישומי פלאגין בהתאמה אישית.
אריזה של יישומי הפלאגין
כדי לארוז יישומי פלאגין מותאמים אישית:
כותבים את הפלאגין ובודקים אותו לפי ההוראות במאמר כתיבה של פלאגין פשוט.
מניחים את קוד הפלאגין במבנה התיקיות המתאים. ספריות הפלאגינים חייבות לפעול לפי מבנה מוגדר. בדוגמה הבאה מוצג המבנה שצריך לפעול לפיו, כאשר
response-uppercase
ו-request-headers
הם שמות של תיקיות שמכילות קוד של פלאגין בהתאמה אישית (השמות האלה הם דוגמאות בלבד, שמות התיקיות שלכם עשויים להיות שונים):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
לתיקייהplugin
.בתיקייה
plugin
, יוצרים קובץ zip של כל התיקייהplugins
:zip -r plugins.zip plugins/
יצירת קובץ אימג' של Docker
- באותה ספרייה שבה נמצא קובץ ה-zip, יוצרים קובץ חדש בשם
Dockerfile
. מוסיפים את הקוד הבא לקובץ
Dockerfile
ושומרים אותו:FROM gcr.io/apigee-microgateway/edgemicro:latest RUN apt-get install unzip COPY plugins.zip /opt/apigee/ RUN chown apigee:apigee /opt/apigee/plugins.zip RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee" EXPOSE 8000 EXPOSE 8443 ENTRYPOINT ["entrypoint"]
יוצרים קובץ אימג' חדש של Docker ל-Edge Microgateway עם הפלאגינים שלכם ומעבירים את הקובץ למרשם של Docker. אפשר להשתמש במרשם הרצוי, למשל
docker.io
אוgcr.io
:docker build -t edgemicroplugins .
docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
לדוגמה:
docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker push gcr.io/my-project/edgemicroplugins
עדכון ההגדרה של Edge Microgateway
מוסיפים את הפלאגינים לקובץ התצורה של Edge Microgateway. קובץ התצורה נמצא כאן:
$HOME/.edgemicro/org-env-config.yaml
לדוגמה:
$HOME/.edgemicro/myorg-test-config.yaml
בהגדרה לדוגמה הבאה, נוספה הפלאגין בהתאמה אישית response-uppercase
.
הפלאגין oauth
כבר היה שם כברירת מחדל.
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
עדכון של אשכול Kubernetes
השלב האחרון הוא החלת שינוי התצורה על אשכול Kubernetes. Kubernetes ימשוך את התמונה החדשה עם קוד הפלאגין ששלחתם למרשם הקונטיינרים, וישתמש בה בכל מודולים חדשים שייווצרו.
אם פרסתם את Edge Microgateway כשירות
משתמשים בפקודה edgemicroctl
כדי להחדיר את ההגדרות המעודכנות של Edge Microgateway:
מעדכנים את הפריסה של Edge Microgateway באמצעות התמונה החדשה. לדוגמה:
kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)
כאשר:
your_organization
– הארגון ב-Apigee שציינתם בפקודהedgemicro configure
.your_environment
– הסביבה שציינתם בפקודהedgemicro configure
.configuration_key
– המפתח שהוחזר מהפקודהedgemicro configure
.configuration_secret
– הסוד שהוחזר מהפקודהedgemicro configure
.config_file_path
– הנתיב לקובץ התצורה של Edge Micro שהוחזר מהפקודהedgemicro configure
.container-registry
– המרשם של Docker שאליו דחפתם את קובץ האימג'. לדוגמה,gcr.io
אוdocker.io
.your_project_name
– שם הפרויקט במאגר Docker שאליו דחפתם את קובץ האימג' של Docker.image_name
– השם של קובץ האימג' של Docker ששלחתם.
דוגמה:
kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
בודקים את הפלאגין. קוראים ל-API כדי לראות אם מתקבלת ההתנהגות הצפויה. לדוגמה, בפלאגין 'תגובה באותיות רישיות', טקסט התגובה מומר לכל אות רישית, כפי שמוצג בהמשך:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
פלט:
HELLO WORLD
הזרקת ההגדרות החדשות באופן ידני
הזרקה ידנית היא גישה פשוטה, שבה מזריקים את ההגדרות החדשות משורת הפקודה.
מריצים את הפקודה הבאה:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)
כאשר:
your_org
– הארגון ב-Apigee שציינתם בפקודהedgemicro configure
.your_env
– הסביבה שציינתם בפקודהedgemicro configure
.your_key
– המפתח שהוחזר מהפקודהedgemicro configure
.your_secret
– הסוד שהוחזר מהפקודהedgemicro configure
.config_file_path
– הנתיב לקובץ התצורה של Edge Micro שהוחזר מהפקודהedgemicro configure
.container-registry
– המרשם של Docker שאליו דחפתם את קובץ האימג'. לדוגמה,gcr.io
אוdocker.io
.your_project_name
– שם הפרויקט במאגר Docker שאליו דחפתם את קובץ האימג' של Docker.image_name
– השם של קובץ האימג' של Docker ששלחתם.service_deployment_file
– הנתיב לקובץ הפריסה של השירות שאליו יתווספו הפלאגינים. לדוגמה:samples/helloworld/helloworld.yaml
.
לדוגמה:
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
בודקים את הפלאגין. קוראים ל-API של השירות כדי לראות אם מתקבלת ההתנהגות הצפויה. לדוגמה, בפלאגין 'תגובה באותיות רישיות', הטקסט של התגובה מומר לאותיות רישיות בלבד, כפי שמוצג בהמשך:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
פלט:
HELLO WORLD
ביצוע שינויים בהגדרות של Edge Microgateway
במקרים מסוימים, יכול להיות שתצטרכו לשנות את הגדרות Edge Microgateway. לדוגמה, יכול להיות שתרצו להוסיף פלאגין חדש ל-Edge Microgateway או לשנות פרמטר תצורה. בקטע הזה מוסבר איך לבצע שינויים בהגדרות של Edge Microgateway שפועל ב-Kubernetes ולהחיל אותם.
יוצרים קובץ תצורה
secret.yaml
לפי הדוגמה הבאה:apiVersion: v1 kind: Secret metadata: name: mgwsecret type: Opaque data: mgorg: EDGEMICRO_ORG mgenv: EDGEMICRO_ENV mgkey: EDGEMICRO_KEY mgsecret: EDGEMICRO_SECRET mgconfig: EDGEMICRO_CONFIG
מציינים את הערך המקודד ב-base64 של
EDGEMICRO_ORG
, EDGEMICRO_ENV
, EDGEMICRO_KEY
, EDGEMICRO_SECRET
:echo -n "your-org" | base64 | tr -d '\n'
echo -n "your-org-env" | base64 | tr -d '\n'
echo -n "your-mg-key" | base64 | tr -d '\n'
echo -n "your-mg-secret" | base64 | tr -d '\n'
מבצעים את השינויים בקובץ התצורה של Edge Microgateway לארגון ולסביבה:
$HOME/.edgemicro/your_org-your_env-config.yaml
מקודדים פעמיים את תוכן קובץ התצורה בקידוד Base64:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
מחילים את השינויים ב-Kubernetes במרחב השמות שבו פועל השירות.
kubectl apply -f secret.yaml -n
אלו שינויים חדשים שלא מתבצעים באופן אוטומטי ב-pods קיימים של microgateway, אבל הם יתבצעו ב-pods החדשים. אפשר למחוק את ה-pod הקיים כדי שהפריסה תיצור pod חדש שיכלול את השינוי.
דוגמה לשירות
הדוגמה הבאה ממחישה איך לעדכן פריסה של שירות באמצעות
מקבלים את הפקדים.
kubectl get pods
פלט לדוגמה:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1d
מוחקים את ה-pod
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
פלט לדוגמה:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
מקבלים שוב את ה-pods. ייוצר אשכול חדש עם השינויים בהגדרות.
kubectl get pods
פלט לדוגמה:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
התאמת היקף הפריסה
בקטע הזה נסביר איך משתמשים בעיקרון התאמת הקיבולת של Kubernetes כדי להתאים את היקף הפריסות.
התאמת התפוקה של פריסה של שירות
בודקים את הפריסות:
kubectl get deployments
פלט לדוגמה:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1d
הפלט מציין שפרוסה רפליקה אחת.
אפשר להרחיב את הפריסה מ-1 ל-n עותקים כפי שרוצים. בדוגמה הזו, השירות
edge-microgateway
עבר התאמה לעומס.kubectl scale deployment edge-microgateway --replicas=2
(אופציונלי) אם רוצים להשתמש בהתאמה אוטומטית לעומס, משתמשים בפקודה הבאה:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
בודקים את הפריסות כדי לוודא שהתכונת 'שינוי קנה המידה' מופעלת:
kubectl get deployments
פלט לדוגמה:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1d
המצב השתנה כך שיכלול שתי רפליקות.
בודקים את ה-pods:
kubectl get pods
פלט לדוגמה:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 18h edge-microgateway-57ccc7776b-rvfz4 1/1 Running 0 41s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
בפלט מוצג ששתי הרפליקות נמצאות בסטטוס 'פעיל'.
שימוש במרחבי שמות (namespaces) למספר הגדרות של Edge Microgateway
אפשר לפרוס ולהגדיר כמה מכונות של שירותי Edge Microgateway באשכול Kubernetes. תרחיש השימוש הזה מאפשר להגדיר לכל מכונה של מיקרו-שער קבוצה משלה של יישומי פלאגין ופרמטרים. לדוגמה:
- ב-Edge Microgateway Service A נדרש רק הפלאגין לטיפול בתנודות חדות בביקוש.
- ב-Edge Microgateway Service B נדרשים הפלאגין של המכסה והפלאגין של OAuth, אבל לא מניעת התקפות פסגה.
כדי לטפל בתרחיש לדוגמה הזה, צריך להשתמש במרחבי שמות של Kubernetes. לדוגמה, אפשר לפרוס את Edge Microgateway Service A למרחב השמות foo
ואת Edge Microgateway Service B למרחב השמות bar
.
בדוגמה הבאה, Edge Microgateway שהוגדר בארגון OrgA
נפרס כשירות למרחב השמות foo
באמצעות האפשרות -n
:
kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo
באופן דומה, בדוגמה הבאה, Edge Microgateway שהוגדר בארגון OrgB
פורס כשירות למרחב השמות bar
באמצעות האפשרות -n
:
kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar