כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
הוספת פלאגין מותאם אישית
על ידי כתיבת יישומי פלאגין מותאמים אישית תוכלו להוסיף תכונות ויכולות חדשות למיקרו-שער. יישומי פלאגין מותאמים אישית מאפשרים לכם לקיים אינטראקציה פרוגרמטית עם הבקשות והתגובות שזורמות דרך המיקרו-שער.
בקטע הזה נסביר איך לארוז ולפרוס יישומי פלאגין במכונה של 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
- יוצרים קובץ חדש בשם
Dockerfile
באותה ספרייה שבה נמצא קובץ ה-ZIP. מוסיפים את הקוד הבא אל
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. אתם יכולים להשתמש בכל מרשם שרוצים, למשל
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 תשלוף את התמונה החדשה עם קוד הפלאגין שדחפתם לרשם הקונטיינרים, והיא תשתמש בו עבור כל pod חדש שייווצר.
אם פרסתם את 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'
מבצעים שינויים ב-kubernets במרחב השמות שבו השירות פועל.
kubectl apply -f secret.yaml -n
השינויים החדשים לא נאספים באופן אוטומטי על ידי רצפי Microgateway קיימים, אבל ה-pods החדשים יקבלו את השינויים. אפשר למחוק את יחידת ה-pod הקיים כדי שהפריסה תיצור 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
למחוק את רצף המודעות
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
פלט לדוגמה:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
צריך להחזיר את המשבצות. רצף מודעות חדש מתחיל לפעול ומקבל את שינויי התצורה שלכם.
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 לרפליקות רבות ככל שרוצים. בדוגמה הזו, השירות
edge-microgateway
מותאם.kubectl scale deployment edge-microgateway --replicas=2
(אופציונלי) אם רוצים להשתמש בשינוי גודל אוטומטי, משתמשים בפקודה הבאה:
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. התרחיש לדוגמה הזה מאפשר לכם להגדיר לכל מכונה מיקרו-שערה קבוצה של יישומי פלאגין ופרמטרים משלה. לדוגמה:
- שירות Edge Microgateway A דורש רק את הפלאגין של מעצר שיא.
- שירות Edge Microgateway 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