אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
מבוא
בנושא הזה מוסבר איך להריץ את Edge Microgateway באשכול Kubernetes כפרוקסי sidecar. יש שתי אפשרויות לפריסת sidecar: הוספה ידנית והוספה אוטומטית. במאמר הזה מתוארות שתי האפשרויות.
מידע נוסף זמין במאמר מבוא ל-Edge Microgateway ב-Kubernetes.
לפני שמתחילים
מבצעים את השלבים שמתוארים במאמר דרישות מוקדמות.
פריסת שירות לבדיקה
פורסים שירות פשוט של 'שלום' ומאמתים את הפריסה:
פורסים את הדוגמה:
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 injection:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
שימוש בהזרקה ידנית של קובץ sidecar
מבין שתי האפשרויות להוספת sidecar, הוספה ידנית היא הגישה הפשוטה והישירה יותר, ואפשר לבצע אותה באמצעות פקודה אחת של kubectl.
הגדרת 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 כ-sidecar
כדי להחדיר ידנית את Edge Microgateway ל-pod של שירות כ-proxy של sidecar, מריצים את הפקודה הזו:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -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. -
service_deployment_file– הנתיב לקובץ הפריסה של השירות שה-pod שלו יקבל את שירות ה-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עכשיו אפשר לבדוק את הפריסה של Edge Microgateway ב-Sidecar. הוראות מפורטות מופיעות במאמר בנושא בדיקת השרת הפרוקסי.
שימוש בהוספה אוטומטית של קובץ sidecar
בשלבים הבאים תגדירו הוספה אוטומטית של sidecar לאשכול Kubernetes. ההגדרה הזו מאפשרת להחדיר את Edge Microgateway כפרוקסי sidecar ל-Kubernetes.
התקנת sidecar injector
מתקינים את ConfigMap שמאפשר הוספה של Edge Microgateway כ-sidecar:
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 של Edge Microgateway sidecar 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) להזרקת Edge Microgateway sidecar פועל:
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, בק-אנד HTTP כברירת מחדל ומנגנון הזרקת sidecar: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 אם אתם משתמשים בענן ציבורי.
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 ב-sidecar. הוראות מפורטות מופיעות במאמר בנושא בדיקת השרת הפרוקסי.
בדיקת ה-Proxy
כשמשתמשים בפריסת sidecar, נוצר בשבילכם באופן אוטומטי שרת 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. דף המוצר מופיע.
ממלאים את דף המוצר באופן הבא. בשדות שלא מוזכרים בהמשך, אפשר להשתמש בערכי ברירת המחדל. אל תשמרו את השינויים עד שתקבלו הוראה לעשות זאת.
שם hello-world-productשם לתצוגה Edge Micro hello productסביבה testבקטע 'נתיב', לוחצים על + משאב בהתאמה אישית.
מוסיפים את הנתיב
/.לוחצים שוב על + מקור מידע בהתאמה אישית ומוסיפים את הנתיב
/**בקטע API Proxies (שרתי proxy ל-API), לוחצים על + API Proxy (הוספת שרת proxy ל-API) ומוסיפים את edgemicro-auth.
שומרים את מוצר ה-API.
יצירת אפליקציית מפתח
- בתפריט הניווט הצדדי, בוחרים באפשרות אפליקציות.
- לוחצים על + אפליקציה. מופיע הדף 'פרטי אפליקציה למפתחים'.
ממלאים את הדף Developer App (אפליקציה למפתחים) באופן הבא. אל תשמרו את הקובץ עד שתקבלו הוראה לעשות זאת.
שם hello-world-appשם לתצוגה Edge Micro hello appמפתח בוחרים מפתח מהתפריט הנפתח. בקטע Credentials (פרטי כניסה), לוחצים על + Product (הוספת מוצר) ובוחרים את
hello-world-productשיצרתם.לוחצים על שמירה.
חוזרים לדף שבו מופיעה רשימה של כל האפליקציות למפתחים.
בוחרים את האפליקציה שיצרתם,
hello-world-app.לצד Consumer Key (מפתח צרכן), לוחצים על Show (הצגה).
מעתיקים את הערך של מפתח הצרכן. הערך הזה הוא מפתח ה-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התגובה 'Hello world' מוחזרת על ידי שירות helloworld שנפרס בתא. הקריאה לשירות הזה עברה קודם דרך Edge Microgateway, שבו בוצע האימות. אם אתם רואים את התגובה 'Hello world', סימן שהגדרתם בהצלחה את Edge Microgateway כך שיפעל כפרוקסי sidecar בתרמיל השירות helloworld.
מה השלב הבא?
בקטע משימות מוסבר איך להוסיף פלאגינים בהתאמה אישית, לשנות את התצורה, להרחיב את הפריסה ולבצע משימות אחרות.