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

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

מבוא

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

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

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

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

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

פורסים שירות פשוט של 'שלום' ומאמתים את הפריסה:

  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. מוחקים את פריסת שירות הבדיקה. תתקינו אותו מחדש בהמשך, אחרי שתפעילו את sidecar injection:

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

שימוש בהזרקה ידנית של קובץ sidecar

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

הגדרת 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 כ-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)

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

  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 ב-Sidecar. הוראות מפורטות מופיעות במאמר בנושא בדיקת השרת הפרוקסי.

שימוש בהוספה אוטומטית של קובץ sidecar

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

התקנת sidecar injector

  1. מתקינים את ConfigMap שמאפשר הוספה של Edge Microgateway כ-sidecar:

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

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

  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]:

      מזינים שם סביבה לארגון. לדוגמה, 'test'.

    7. Virtual Host [default]:

      מקישים על Enter.

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

      מזינים 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 הזו מחדירה את פרופיל ההגדרה של Edge Microgateway שנוצר אל Kubernetes:

    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 ל-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
    

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

עכשיו צריך לפרוס מחדש את שירות הבדיקה. ‫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, אפשר להתקשר לשירות מחוץ לאשכול.

  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. בקטע API Proxies (שרתי proxy ל-API), לוחצים על + API Proxy (הוספת שרת proxy ל-API) ומוסיפים את edgemicro-auth.

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

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

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

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

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

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

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

  8. לצד Consumer Key (מפתח צרכן), לוחצים על Show (הצגה).

  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
    

    התגובה 'Hello world' מוחזרת על ידי שירות helloworld שנפרס בתא. הקריאה לשירות הזה עברה קודם דרך Edge Microgateway, שבו בוצע האימות. אם אתם רואים את התגובה 'Hello world', סימן שהגדרתם בהצלחה את Edge Microgateway כך שיפעל כפרוקסי sidecar בתרמיל השירות helloworld.

מה השלב הבא?

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