פריסת Edge Microgateway בתור שרת proxy לסביבת צד שלישי

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

מבוא

בנושא הזה נסביר איך להריץ את Edge Microgateway באשכול Kubernetes בתור שרת proxy לצד המכשיר. יש שתי אפשרויות לפריסה בכלי רכב משני: ידנית ואוטומטית הזרקה. נושא זה מתאר את שתי האפשרויות.

מידע נוסף זמין במאמר Introduction to Edge Microgateway ב-Kubernetes.

לפני שמתחילים

מבצעים את השלבים שמתוארים בקטע דרישות מוקדמות.

פריסת שירות בדיקה

פריסה של פקודת "hello" פשוטה ומאמתים את הפריסה:

  1. פורסים את הדוגמה:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. מוודאים שהשירות פועל. ייתכן שיהיה צורך להמתין כמה דקות עד ה-pod חוזר למצב פעיל:

    kubectl get pods --namespace=default

    פלט לדוגמה:

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. מחיקת הפריסה של שירות הבדיקה. ניתן יהיה להתקין אותה מחדש מאוחר יותר, לאחר ההפעלה הזרקה פנימית:

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

שימוש בהחדרה ידנית למכונית משנית

מבין שתי האפשרויות להחדרה למכונית משנית, הזרקה ידנית למכונית היא פשוטה וישירה יותר גישה, ואפשר לבצע אותה באמצעות פקודת kubectl אחת.

הגדרת Microsoft Edge Microgateway

הפקודה הבאה מגדירה את Edge Microgateway לארגון שלכם ב-Apigee ופורס את שרת ה-proxy edgemicro-auth.

  1. מריצים את הפקודה הבאה:

    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)

בדיקת ההגדרות האישיות

  1. בדיקה של פריסות השירות:

    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
    
  2. עכשיו אתם מוכנים לבדוק את הפריסה של הרכב המשני של Edge Microgateway. מעבר אל לקבלת שלבים מפורטים, בודקים את שרת ה-proxy.

שימוש בהחדרה אוטומטית לרכב משני

בשלבים הבאים תגדיר הזרקה אוטומטית לרכב צידי עבור אשכול Kubernetes. ההגדרה הזו מאפשרת להחדיר את Edge Microgateway כחיבור צדדי לשרת proxy ב-Kubernetes.

התקנת המזריק הראשי

  1. מתקינים את ConfigMap שמאפשרת החדרה לרכב משני של Edge Microgateway:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. מריצים את הסקריפט הבא כדי להתקין את שירות webhook. שירות webhook נדרש כדי הזרקה אוטומטית לרכב צידי:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. צריך להוסיף את חבילת ה-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
    
  4. מתקינים את ה-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
    
  5. איך מוודאים שה-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
    
  6. עליכם לוודא שרצף ההזרקה לרכב המשני פועל באשכול. מרחב השמות 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.

  1. מריצים את הסקריפט האינטראקטיבי הבא ומציינים את הפרמטרים הנדרשים. הפקודה יוצרת פרופיל תצורה שישמש אותך בשלב הבא.

    ./install/kubernetes/webhook-edgemicro-patch.sh

    מידע נוסף על הפרמטרים של הקלט זמין במאמר קובץ עזר.

    נתוני קלט לדוגמה:

    1. Namespace to deploy application [default]:

      מקישים על Enter.

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      מזינים n.

    3. Apigee username [required]:

      מזינים את שם המשתמש (כתובת האימייל) שלכם ב-Apigee. לדוגמה: jdoe@google.com.

    4. Apigee password [required]:

      מזינים את הסיסמה ל-Apigee.

    5. Apigee organization [required]:

      צריך להזין את שם הארגון ב-Apigee.

    6. Apigee environment [required]:

      נותנים שם לסביבה עבור הארגון. לדוגמה, 'בדיקה'.

    7. Virtual Host [default]:

      מקישים על Enter.

    8. Is this Private Cloud ("n","y") [N/y]:

      אם אתם משתמשים ב-Public Cloud, מזינים n.

    9. Edgemicro Key. Press Enter to generate:

      מקישים על Enter.

    10. Edgemicro Secret. Press Enter to generate:

      מקישים על Enter.

    11. 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.
      *****************************************************************************************
      
    12. 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
      ********************************************************************************************************
      
  2. מריצים את הפקודה שצוינה בשורה האחרונה של הפלט. פקודת kubectl הזו מחדירה ל-Kubernetes את פרופיל תצורת Edge Microgateway שנוצר:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. הצגת הסטטוס של החדרת 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
    
  4. מריצים את הפקודה הבאה כדי להפעיל החדרת תגובה לפעולה מאתר אחר (webhook):

    kubectl label namespace default edgemicro-injection=enabled
  5. הצגת הסטטוס של החדרת תגובה לפעולה מאתר אחר (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), אפשר לקרוא לשירות מחוץ לאשכול.

  1. מאתרים את כתובת ה-IP החיצונית של בקר תעבורת הנתונים הנכנסת (ingress):

    kubectl get ing -o wide

    פלט לדוגמה:

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. מעתיקים את הערך של 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:]")
  3. מוודאים שבוצע ייצוא של המשתנה. לדוגמה:

    echo $GATEWAY_IP

    פלט לדוגמה:

    35.238.249.62
    
  4. התקשרות לשירות:

    curl $GATEWAY_IP

    פלט:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    בשלב הבא צריך לטפל בשגיאת ההרשאה החסרה באמצעות הגדרה של מוצר API ואפליקציה למפתחים ב-Edge כדי לקבל מפתח API תקף. כשמוסיפים את המפתח להרשאה עבור הקריאה ל-API, הקריאה תבוצע בהצלחה והשגיאה הזו לא תוצג.

יצירת רכיבים ב-Apigee Edge

לאחר מכן, יוצרים מוצר API ואפליקציית מפתחים ב-Apigee Edge.

יצירת מוצר של API

  1. מתחברים ל-Apigee Edge.
  2. בוחרים באפשרות פרסום > מוצרי API בתפריט הניווט הצדדי.
  3. לוחצים על + מוצר API. דף המוצר יופיע.
  4. ממלאים את דף המוצר באופן הבא. בשדות שלא מוזכרים למטה, יכול להשתמש בערכי ברירת המחדל. אין לשמור עד לקבלת הוראה לעשות זאת.

    שם hello-world-product
    השם המוצג Edge Micro hello product
    סביבה test

  5. בקטע 'נתיב', לוחצים על + משאב מותאם אישית.

  6. מוסיפים את הנתיב /.

  7. לוחצים שוב על + משאב מותאם אישית ומוסיפים את הנתיב /**

  8. בקטע 'שרתי proxy ל-API', לוחצים על + שרת proxy ל-API ומוסיפים dgemicro-auth.

  9. שומרים את מוצר ה-API.

יצירת אפליקציה למפתחים

  1. בתפריט הניווט הצדדי, בוחרים באפשרות Apps (אפליקציות).
  2. לוחצים על + אפליקציה. הדף 'פרטי האפליקציה למפתחים' יופיע.
  3. ממלאים את דף האפליקציה למפתחים באופן הבא. אין לשמור עד לקבלת הוראה לעשות זאת.

    שם hello-world-app
    השם המוצג Edge Micro hello app
    למפתחים בוחרים מפתח מהתפריט הנפתח.
  4. בקטע 'פרטי כניסה', לוחצים על + מוצר ובוחרים את hello-world-product שיצרת עכשיו.

  5. לוחצים על שמירה.

  6. חזרת לדף שבו מפורטות כל האפליקציות למפתחים.

  7. בוחרים את האפליקציה שיצרתם, hello-world-app.

  8. לוחצים על הצגה לצד מפתח צרכן.

  9. מעתיקים את הערך של מפתח הצרכן. הערך הזה הוא מפתח API שבו משתמשים כדי לבצע קריאות מאובטחות ל-API אל השירות helloworld.

  10. עליך להמתין מספר דקות. השינויים שביצעתם ב-Apigee מתעדכנים תוך כמה דקות Edge להסתנכרן עם המכונה של Edge Microgateway שנפרסה אשכול.

שליחת קריאה ל-API

אחרי ששינויי ההגדרות נשלפים אל המיקרו-שער, ניתן: מבצעים את הבדיקות הבאות.

  1. לשלוח קריאה ל-API ללא מפתח API. תופיע הודעת שגיאה כפי שמוצג למטה:

    curl $GATEWAY_IP

    הפלט אמור להיראות כך:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    כדי לבצע קריאות מוצלחות ל-API, אתם זקוקים למפתח ה-API.

  2. מקבלים את מפתח הצרכן מאפליקציית המפתחים שיצרתם. הערך הזה הוא מפתח ה-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.

מה השלב הבא?

מידע נוסף זמין בקטע משימות הוספת יישומי פלאגין מותאמים אישית, הרחבת הפריסה, ביצוע שינויים בתצורה ומשימות אחרות שאולי תרצו לבצע.