אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X. info
מבוא
כאן מוסבר איך להריץ את Edge Microgateway באשכול Kubernetes בתור שרת proxy בצד. יש שתי אפשרויות לפריסה של צדדים נלווים: הזרקה ידנית והזרקה אוטומטית. במאמר הזה מתוארות שתי האפשרויות.
מידע נוסף זמין במאמר מבוא ל-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
מוחקים את הפריסה של שירות הבדיקה. תצטרכו להתקין אותו מחדש מאוחר יותר, אחרי שתפעילו את ההזרקה של Sidecar:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
שימוש בהזרקה ידנית של sidecar
מבין שתי האפשרויות להזרקה של sidecar, הזרקה ידנית של sidecar היא הגישה הפשוטה והישירה יותר, וניתן לבצע אותה באמצעות פקודת kubectl
אחת.
הגדרת Edge Microgateway
הפקודה הבאה מגדירה את Edge Microgateway לארגון Apigee ומפרסת את שרת ה-proxy edgemicro-auth
.
מריצים את הפקודה הבאה:
edgemicro configure -o [org] -e [env] -u [username]
כאשר:
org
: שם הארגון ב-Edge (חובה להיות אדמין ארגוני).env
: סביבה בארגון (למשל test או prod).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 כ-sidecar
כדי להחדיר ידנית את Edge Microgateway ל-service pod בתור שרת 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
– הנתיב לקובץ הפריסה של השירות שאליו יוקצה השירות הנלווה ב-sidecar. לדוגמה: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
עכשיו אתם מוכנים לבדוק את הפריסה של ה-sidecar של Edge Microgateway. לפרטים נוספים, אפשר לעיין במאמר בדיקת שרת ה-proxy.
שימוש בהזרקה אוטומטית של sidecar
בשלבים הבאים מגדירים הזרקה אוטומטית של sidecar לאשכולות Kubernetes. ההגדרה הזו מאפשרת להחדיר את Edge Microgateway כשרתי proxy ב-sidecar ל-Kubernetes.
התקנת הזרקת ה-sidecar
מתקינים את ConfigMap שמאפשר הזרקה של Edge Microgateway בצדדים:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
מריצים את הסקריפט הבא כדי להתקין את שירות webhook. שירות ה-webhook נדרש להזרקה אוטומטית של sidecar:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certs
מוסיפים את חבילת האישורים של CA לקובץ ההתקנה של ה-webhook. שרת ה-api של Kubernetes משתמש בקובץ הזה כדי להפעיל את ה-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 של הזרקת ה-sidecar של Edge Microgateway:
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 של הזרקת הצדדים של 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
מוודאים שה-pod של הזרקת ה-sidecar פועל באשכול. במרחב השמות
edgemicro-system
מותקנים שירותי המערכת, כולל Ingress controller, הקצה העורפי של 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
הגדרה והזרקה של Edge Microgateway
בשלב הבא, מריצים סקריפט אינטראקטיבי כדי ליצור הגדרה של 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]:
מזינים שם לסביבה של הארגון. לדוגמה, 'test'.
Virtual Host [default]:
מקישים על Enter.
Is this Private Cloud ("n","y") [N/y]:
מזינים n אם אתם משתמשים ב-Public Cloud.
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
מחדירה את פרופיל התצורה שנוצר של Edge Microgateway ל-Kubernetes: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 ל-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
פריסה של שירות הבדיקה
עכשיו צריך לפרוס מחדש את שירות הבדיקה. Edge Microgateway יוזרק באופן אוטומטי ל-pod של השירות.
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
מוודאים ש-Edge Microgateway הוטמע ב-pod יחד עם שירות הבדיקה:
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 של השירות נוצר באופן אוטומטי. אין צורך ליצור שרת proxy 'עם תמיכה ב-Edge Microgateway'.
אחזור כתובת ה-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 Product. דף המוצר מופיע.
ממלאים את דף המוצר באופן הבא. בשדות שלא מוזכרים בהמשך, אפשר להשתמש בערכי ברירת המחדל. אין לשמור עד שמקבלים הוראה לעשות זאת.
שם hello-world-product
שם לתצוגה Edge Micro hello product
סביבה test
בקטע Path (נתיב), לוחצים על + Custom Resource (משאב מותאם אישית).
מוסיפים את הנתיב
/
.לוחצים שוב על + Custom Resource ומוסיפים את הנתיב
/**
.בקטע API Proxies, לוחצים על + API Proxy ומוסיפים את edgemicro-auth.
שומרים את מוצר ה-API.
יצירת אפליקציה למפתחים
- בתפריט הניווט הצדדי, בוחרים באפשרות אפליקציות.
- לוחצים על + אפליקציה. יופיע הדף 'פרטי האפליקציה למפתחים'.
ממלאים את דף האפליקציה למפתחים באופן הבא. אין לשמור עד שמקבלים הוראה לעשות זאת.
שם hello-world-app
שם לתצוגה Edge Micro hello app
מפתח/ת בוחרים מפתח מהתפריט הנפתח. בקטע Credentials, לוחצים על + Product ובוחרים את
hello-world-product
שיצרתם.לוחצים על שמירה.
חוזרים לדף שבו מפורטות כל האפליקציות של המפתחים.
בוחרים את האפליקציה שיצרתם,
hello-world-app
.לוחצים על Show לצד Consumer Key.
מעתיקים את הערך של מפתח הצרכן. הערך הזה הוא מפתח ה-API שבו תשתמשו כדי לבצע קריאות מאובטחות ל-API לשירות
helloworld
.ממתינים כמה דקות. השינויים שביצעתם ב-Apigee Edge יסתנכרנו עם המכונה של Edge Microgateway שנפרסה באשכול תוך כמה דקות.
קריאה ל-API
אחרי ששינויי התצורה יישלפו ל-microgateway, תוכלו לבצע את הבדיקות הבאות.
קריאה ל-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
התגובה 'Hello world' מוחזרת על ידי שירות helloworld שנפרס ב-pod. הקריאה לשירות הזה עברה קודם דרך Edge Microgateway, שם בוצע האימות. אם מופיעה התגובה Hello world, סימן שהגדרתם את Edge Microgateway לפעול בתור שרת proxy ב-sidecar ב-pod השירות helloworld.
מה השלב הבא?
בקטע משימות מוסבר איך מוסיפים פלאגינים מותאמים אישית, משנים את קנה המידה של הפריסה, מבצעים שינויים בהגדרות ועוד.