מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
הוספת פלאגין מותאם אישית
כדי להוסיף תכונות ויכולות חדשות ל-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
, צריך לדחוס את כל התיקייה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 יאחזר את התמונה החדשה עם קוד הפלאגין שהעברתם למרשם הקונטיינרים וישתמש בה שנוצרו Pods.
אם פרסתם את 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
השינויים החדשים האלה לא קולטים באופן אוטומטי על ידי רצפי Microsoftgate קיימים; עם זאת, הקבוצות החדשות יקבלו את השינויים. תוכלו למחוק את הקבוצה הקיימת, יוצר רצף חדש שלוקח את השינוי.
דוגמה לשירות
הדוגמה הבאה ממחישה איך לעדכן פריסת שירות לפריסת שירות חדשה
קנו את ה-Pods.
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
מוחקים את הרצף
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
הרחבת הפריסה
בקטע הזה מוסבר איך משתמשים בעקרונות ההתאמה לעומס (scaling) של Kubernetes כדי להתאים את הפריסות לעומס (scaling).
הרחבה של פריסת שירות
בודקים את הפריסות:
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 למספר רפליקציות שתרצו. בדוגמה הזו, השירות
edge-microgateway
מותאם לעומס.kubectl scale deployment edge-microgateway --replicas=2
(אופציונלי) אם רוצים להשתמש בהתאמה לעומס (autoscaling), משתמשים בפקודה הבאה:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
צריך לבדוק את הפריסות כדי לוודא שההתאמה לעומס (scaling) מופעלת:
kubectl get deployments
פלט לדוגמה:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1d
המצב השתנה כך שיכלול שני רפליקות.
כדאי לבדוק את רצפי המודעות:
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
הפלט מראה ששתי הרפליקות נמצאות במצב פעיל.
שימוש במרחבי שמות בכמה הגדרות של Edge Microgateway
אפשר לפרוס ולהגדיר כמה מופעים של שירותי Edge Microgateway אשכול Kubernetes. התרחיש לדוגמה הזה מאפשר להגדיר כל מכונה של microgateway עם קבוצה משלו של יישומי פלאגין ופרמטרים. לדוגמה:
- כדי להשתמש ב-Edge Microgateway Service A, נדרש רק הפלאגין לעצירת נקודות שיא.
- כדי להשתמש ב-Edge Microgateway Service B, יש צורך בפלאגין של מכסה ו-oauth, אבל לא בעצירה חדה.
כדי לטפל בתרחיש לדוגמה הזה, משתמשים במרחבי שמות של Kubernetes. לדוגמה, אפשר לפרוס
Edge Service Microgateway 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