מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
מבוא
בנושא הזה נסביר איך להריץ את Edge Microgateway באשכול Kubernetes בתור שרת proxy לצד המכשיר. יש שתי אפשרויות לפריסה בכלי רכב משני: ידנית ואוטומטית הזרקה. נושא זה מתאר את שתי האפשרויות.
מידע נוסף זמין במאמר Introduction to Edge Microgateway ב-Kubernetes.
לפני שמתחילים
מבצעים את השלבים שמתוארים בקטע דרישות מוקדמות.
פריסת שירות בדיקה
פריסה של פקודת "hello" פשוטה ומאמתים את הפריסה:
פורסים את הדוגמה:
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
מוודאים שהשירות פועל. ייתכן שיהיה צורך להמתין כמה דקות עד ה-pod חוזר למצב פעיל:
kubectl get pods --namespace=default
פלט לדוגמה:
NAME READY STATUS RESTARTS AGE helloworld-569d6565f9-lwrrv 1/1 Running 0 17m
מחיקת הפריסה של שירות הבדיקה. ניתן יהיה להתקין אותה מחדש מאוחר יותר, לאחר ההפעלה הזרקה פנימית:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
שימוש בהחדרה ידנית למכונית משנית
מבין שתי האפשרויות להחדרה למכונית משנית, הזרקה ידנית למכונית היא פשוטה וישירה יותר
גישה, ואפשר לבצע אותה באמצעות פקודת kubectl
אחת.
הגדרת Microsoft Edge Microgateway
הפקודה הבאה מגדירה את Edge Microgateway לארגון שלכם ב-Apigee
ופורס את שרת ה-proxy edgemicro-auth
.
מריצים את הפקודה הבאה:
edgemicro configure -o [org] -e [env] -u [username]
כאשר:
org
: שם הארגון ב-Edge (צריך להיות מנהלי חשבון ארגוני).env
: סביבה בארגון שלך (כמו בדיקה או ייצור).username
: כתובת האימייל שמשויכת לחשבון Apigee שלכם.
דוגמה
edgemicro configure -o myorg -e test -u jdoe@example.com
הפלט (ראו דוגמה למטה) נשמר בקובץ:
.$HOME/.edgemicro/org_name-env_name-config.yaml
current nodejs version is v6.9.1 current edgemicro version is 2.5.25 password: file doesn't exist, setting up Give me a minute or two... this can take a while... App edgemicro-auth deployed. checking org for existing KVM KVM already exists in your org configuring host edgemicroservices.apigee.net for region us-west1 saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml vault info: -----BEGIN CERTIFICATE----- MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8 1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH 6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn 8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4 w+e3Z3F7IKI= -----END CERTIFICATE----- The following credentials are required to start edge micro key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4 secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef edgemicro configuration complete!
החדרת Edge Microgateway כמכונית צד
כדי להחדיר את Edge Microgateway באופן ידני לרצף שירות כשרת proxy של צדדית, צריך להפעיל הפקודה הזו:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -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
.service_deployment_file
– הנתיב לקובץ הפריסה של השירות שה-Pod שלו מקבלים את שירותי הרכב הנלווים. לדוגמה:samples/helloworld/helloworld.yaml
.
לדוגמה:
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)
בדיקת ההגדרות האישיות
בדיקה של פריסות השירות:
kubectl get services -n default
פלט לדוגמה:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloworld NodePort 10.15.254.163 <none> 8081:32401/TCP 56s kubernetes ClusterIP 10.15.240.1 <none> 443/TCP 41m
עכשיו אתם מוכנים לבדוק את הפריסה של הרכב המשני של Edge Microgateway. מעבר אל לקבלת שלבים מפורטים, בודקים את שרת ה-proxy.
שימוש בהחדרה אוטומטית לרכב משני
בשלבים הבאים תגדיר הזרקה אוטומטית לרכב צידי עבור אשכול Kubernetes. ההגדרה הזו מאפשרת להחדיר את Edge Microgateway כחיבור צדדי לשרת proxy ב-Kubernetes.
התקנת המזריק הראשי
מתקינים את ConfigMap שמאפשרת החדרה לרכב משני של Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
מריצים את הסקריפט הבא כדי להתקין את שירות webhook. שירות webhook נדרש כדי הזרקה אוטומטית לרכב צידי:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certs
צריך להוסיף את חבילת ה-CA לקובץ התקנת ה-webhook. רשת Kubernetes ה-api-server משתמש בקובץ הזה כדי להפעיל את ה-webhook:
cat install/kubernetes/edgemicro-sidecar-injector.yaml | \ ./install/kubernetes/webhook-patch-ca-bundle.sh > \ install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
מתקינים את ה-webhook של Edge Microgateway injector injector:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
פלט לדוגמה:
service "edgemicro-sidecar-injector" created serviceaccount "edgemicro-sidecar-injector-service-account" created deployment "edgemicro-sidecar-injector" created mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
איך מוודאים שה-webhook של ה-webhook של המזרק ב-Edge Microgateway פועל:
kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
פלט לדוגמה:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edgemicro-sidecar-injector 1 1 1 1 12m
עליכם לוודא שרצף ההזרקה לרכב המשני פועל באשכול. מרחב השמות
edgemicro-system
הוא המקום שבו מותקנים שירותי המערכת, כולל בקר תעבורת נתונים נכנסת (ingress), קצה עורפי המוגדר כברירת מחדל ב-HTTP ומזרק מכונית משנית:kubectl get pods -n edgemicro-system
פלט לדוגמה:
NAME READY STATUS RESTARTS AGE default-http-backend-55c6c69b88-gfnfd 1/1 Running 0 1h edgemicro-ingress-controller-64444469bf-jhn8b 1/1 Running 3 1h edgemicro-sidecar-injector-7d95698fbf-cq84q 1/1 Running 0 3m
הגדרה והחדרה של Microsoft Edge Microgateway
בשלב הבא, נריץ סקריפט אינטראקטיבי כדי ליצור Microsoft Edge Microgateway שמשויכים למרחב שמות של Kubernetes. לאחר מכן אפשר להחדיר את את ההגדרות האישיות באשכול Kubernetes.
מריצים את הסקריפט האינטראקטיבי הבא ומציינים את הפרמטרים הנדרשים. הפקודה יוצרת פרופיל תצורה שישמש אותך בשלב הבא.
./install/kubernetes/webhook-edgemicro-patch.sh
מידע נוסף על הפרמטרים של הקלט זמין במאמר קובץ עזר.
נתוני קלט לדוגמה:
Namespace to deploy application [default]:
מקישים על Enter.
Authenticate with OAuth Token ("n","Y") [N/y]
מזינים n.
Apigee username [required]:
מזינים את שם המשתמש (כתובת האימייל) שלכם ב-Apigee. לדוגמה:
jdoe@google.com
.Apigee password [required]:
מזינים את הסיסמה ל-Apigee.
Apigee organization [required]:
צריך להזין את שם הארגון ב-Apigee.
Apigee environment [required]:
נותנים שם לסביבה עבור הארגון. לדוגמה, 'בדיקה'.
Virtual Host [default]:
מקישים על Enter.
Is this Private Cloud ("n","y") [N/y]:
אם אתם משתמשים ב-Public Cloud, מזינים n.
Edgemicro Key. Press Enter to generate:
מקישים על Enter.
Edgemicro Secret. Press Enter to generate:
מקישים על Enter.
Edgemicro org-env-config.yaml. Press Enter to generate:
מקישים על Enter.
פלט לדוגמה:
current nodejs version is v6.9.1 current edgemicro version is 2.5.25 config initialized to /Users/jdoe/.edgemicro/default.yaml Configure for Cloud ****************************************************************************************** Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory. Please make changes as desired. *****************************************************************************************
Do you agree to proceed("n","y") [N/y]:
מזינים y.
פלט לדוגמה:
Configuring Microgateway with key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84 secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0 config:~/.edgemicro/jdoe-test-config.yaml ******************************************************************************************************** kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml ********************************************************************************************************
מריצים את הפקודה שצוינה בשורה האחרונה של הפלט. פקודת
kubectl
הזו מחדירה ל-Kubernetes את פרופיל תצורת Edge Microgateway שנוצר:kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
הצגת הסטטוס של החדרת webhook. שימו לב שהיא לא מופעלת כרגע:
kubectl get namespace -L edgemicro-injection
פלט לדוגמה:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
מריצים את הפקודה הבאה כדי להפעיל החדרת תגובה לפעולה מאתר אחר (webhook):
kubectl label namespace default edgemicro-injection=enabled
הצגת הסטטוס של החדרת תגובה לפעולה מאתר אחר (webhook) שוב. שימו לב שהיא מופעלת עכשיו:
kubectl get namespace -L edgemicro-injection
פלט לדוגמה:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d enabled edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
פריסת שירות הבדיקה
עכשיו צריך לפרוס מחדש את שירות הבדיקה. Microgateway של Edge יוחדר באופן אוטומטי לרצף של השירות.
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
מוודאים ש-Edge Microgateway הוחדר ל-pod יחד עם הבדיקה. service:
kubectl get pods --namespace=default --watch
פלט לדוגמה:
NAME READY STATUS RESTARTS AGE
helloworld-6987878fc4-pkw8h 0/2 PodInitializing 0 12s
helloworld-6987878fc4-pkw8h 2/2 Running 0 26s
כשהסטטוס ישתנה ל-Running
, מקישים על ctrl-c
כדי לצאת מהפקודה.
עכשיו הכול מוכן לבדיקה של הפריסה האוטומטית של הרכב המשני של Edge Microgateway. מעבר אל לקבלת שלבים מפורטים, בודקים את שרת ה-proxy.
בדיקת שרת ה-proxy
בפריסה של צד לרכב, נוצר בשבילכם באופן אוטומטי שרת proxy ל-API. עליך לא צריך ליצור רכיב מודעות עם ארכיטקטורת קצה ל-Edge Microgateway שרת proxy.
איך מוצאים את כתובת ה-IP של תעבורת הנתונים הנכנסת (ingress)
באמצעות כתובת ה-IP החיצונית לתעבורת הנתונים הנכנסת (ingress), אפשר לקרוא לשירות מחוץ לאשכול.
מאתרים את כתובת ה-IP החיצונית של בקר תעבורת הנתונים הנכנסת (ingress):
kubectl get ing -o wide
פלט לדוגמה:
NAME HOSTS ADDRESS PORTS AGE gateway * 35.238.13.54 80 1m
מעתיקים את הערך של
EXTERNAL-IP
לתעבורת הנתונים היוצאת (ingress) ומייצאים אותו למשתנה. שלך הם יכולים להגדיר את המשתנה באופן ידני:export GATEWAY_IP=external_ip
לדוגמה:
export GATEWAY_IP=35.238.249.62
לחלופין, משתמשים בפקודה הזו כדי להגדיר אותה:
export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
מוודאים שבוצע ייצוא של המשתנה. לדוגמה:
echo $GATEWAY_IP
פלט לדוגמה:
35.238.249.62
התקשרות לשירות:
curl $GATEWAY_IP
פלט:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
בשלב הבא צריך לטפל בשגיאת ההרשאה החסרה באמצעות הגדרה של מוצר API ואפליקציה למפתחים ב-Edge כדי לקבל מפתח API תקף. כשמוסיפים את המפתח להרשאה עבור הקריאה ל-API, הקריאה תבוצע בהצלחה והשגיאה הזו לא תוצג.
יצירת רכיבים ב-Apigee Edge
לאחר מכן, יוצרים מוצר API ואפליקציית מפתחים ב-Apigee Edge.
יצירת מוצר של API
- מתחברים ל-Apigee Edge.
- בוחרים באפשרות פרסום > מוצרי API בתפריט הניווט הצדדי.
- לוחצים על + מוצר API. דף המוצר יופיע.
ממלאים את דף המוצר באופן הבא. בשדות שלא מוזכרים למטה, יכול להשתמש בערכי ברירת המחדל. אין לשמור עד לקבלת הוראה לעשות זאת.
שם hello-world-product
השם המוצג Edge Micro hello product
סביבה test
בקטע 'נתיב', לוחצים על + משאב מותאם אישית.
מוסיפים את הנתיב
/
.לוחצים שוב על + משאב מותאם אישית ומוסיפים את הנתיב
/**
בקטע 'שרתי proxy ל-API', לוחצים על + שרת proxy ל-API ומוסיפים dgemicro-auth.
שומרים את מוצר ה-API.
יצירת אפליקציה למפתחים
- בתפריט הניווט הצדדי, בוחרים באפשרות Apps (אפליקציות).
- לוחצים על + אפליקציה. הדף 'פרטי האפליקציה למפתחים' יופיע.
ממלאים את דף האפליקציה למפתחים באופן הבא. אין לשמור עד לקבלת הוראה לעשות זאת.
שם hello-world-app
השם המוצג Edge Micro hello app
למפתחים בוחרים מפתח מהתפריט הנפתח. בקטע 'פרטי כניסה', לוחצים על + מוצר ובוחרים את
hello-world-product
שיצרת עכשיו.לוחצים על שמירה.
חזרת לדף שבו מפורטות כל האפליקציות למפתחים.
בוחרים את האפליקציה שיצרתם,
hello-world-app
.לוחצים על הצגה לצד מפתח צרכן.
מעתיקים את הערך של מפתח הצרכן. הערך הזה הוא מפתח API שבו משתמשים כדי לבצע קריאות מאובטחות ל-API אל השירות
helloworld
.עליך להמתין מספר דקות. השינויים שביצעתם ב-Apigee מתעדכנים תוך כמה דקות Edge להסתנכרן עם המכונה של Edge Microgateway שנפרסה אשכול.
שליחת קריאה ל-API
אחרי ששינויי ההגדרות נשלפים אל המיקרו-שער, ניתן: מבצעים את הבדיקות הבאות.
לשלוח קריאה ל-API ללא מפתח API. תופיע הודעת שגיאה כפי שמוצג למטה:
curl $GATEWAY_IP
הפלט אמור להיראות כך:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
כדי לבצע קריאות מוצלחות ל-API, אתם זקוקים למפתח ה-API.
מקבלים את מפתח הצרכן מאפליקציית המפתחים שיצרתם. הערך הזה הוא מפתח ה-API שנדרש כדי להפעיל את שרת ה-proxy לבדיקה:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP
לדוגמה:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP
פלט:
Hello world
"העולם הזה" מוחזרת על ידי שירות helloworld שנפרס לרצף המודעות. הקריאה לשירות הזה עברה קודם דרך Edge Microgateway, שבו בוצע האימות. אם מופיע הכיתוב 'שלום עולם' אז הגדרת בהצלחה את Edge Microgateway לשמש כ-Sidecar Proxy ב-Podcast של helloworld.
מה השלב הבא?
מידע נוסף זמין בקטע משימות הוספת יישומי פלאגין מותאמים אישית, הרחבת הפריסה, ביצוע שינויים בתצורה ומשימות אחרות שאולי תרצו לבצע.