אתם צופים במסמכי התיעוד של 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.jsoncdלתיקייה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"]יוצרים קובץ אימג' חדש של Edge Microgateway Docker עם התוספים שלכם ומעבירים בדחיפה את קובץ האימג' למאגר Docker. אתם יכולים להשתמש בכל מאגר שתרצו, כמו
docker.ioאוgcr.io:docker build -t edgemicroplugins .docker tag edgemicroplugins container-registry/your-project/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsלדוגמה:
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker 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 ישלוף את האימג' החדש עם קוד הפלאגין שדחפתם ל-Container Registry וישתמש בו לכל הפודים החדשים שנוצרו.
אם פרסתם את 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)
where:
-
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 כדי לבדוק אם מתקבלת ההתנהגות הצפויה. לדוגמה, בתוסף response uppercase, טקסט התגובה מומר לאותיות רישיות, כמו שמוצג בהמשך:
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)
where:
-
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 של השירות כדי לבדוק אם מתקבלת ההתנהגות הצפויה. לדוגמה, בתוסף response uppercase, הטקסט של התגובה מומר לאותיות רישיות, כמו שמוצג בהמשך:
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
השינויים החדשים האלה לא נקלטים באופן אוטומטי על ידי פודים קיימים של מיקרו-שערים, אבל הפודים החדשים יקבלו את השינויים. אפשר למחוק את ה-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מקבלים שוב את התרמילים. יחידת אירוח חדשה מופעלת ומקבלת את השינויים בהגדרות.
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
בודקים את הפריסות כדי לוודא שהרחבת קנה המידה מופעלת:
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בפלט מוצג ששני העותקים נמצאים במצב פעיל.
שימוש במרחבי שמות לכמה הגדרות של Edge Microgateway
אתם יכולים לפרוס ולהגדיר כמה מופעים של שירותי Edge Microgateway באשכול Kubernetes. תרחיש השימוש הזה מאפשר לכם להגדיר כל מופע של מיקרו-שער עם קבוצה משלו של תוספים ופרמטרים. לדוגמה:
- שירות Edge Microgateway A דורש רק את הפלאגין spike arrest.
- שירות B של Edge Microgateway מחייב את מכסת השימוש ואת התוסף oauth, אבל לא את התוסף spike arrest.
כדי לטפל בתרחיש השימוש הזה, צריך להשתמש במרחבי שמות ב-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