פריסת 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 אחת.

הגדרת Edge Microgateway

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

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

    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 כציר עזר

כדי להחדיר את 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 – הנתיב לקובץ הפריסה של השירות שה-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. עכשיו את/ה מוכן/ה לבדוק את פריסת ה-API של 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 כדי להפעיל את ה-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:

    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 פועלת:

    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 הוא המקום שבו מותקנים שירותי המערכת, כולל בקר תעבורת הנתונים העורפי, הקצה העורפי שמוגדר כברירת מחדל והמזרק הדו-צדדי:

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

      אם משתמשים ב-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 מחדירה את פרופיל התצורה של 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. לקבלת הוראות מפורטות, קראו את המאמר בדיקת שרת ה-Proxy.

בדיקת שרת ה-proxy

עם פריסת ה-API, המערכת יוצרת עבורכם באופן אוטומטי שרת proxy ל-API עבור השירות. לא צריך ליצור שרת proxy מסוג "Edge Microgateway-aware".

איך מקבלים כתובת 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, לוחצים על + API Proxy ומוסיפים edgemicro-auth.

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

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

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

    שם hello-world-app
    שם לתצוגה Edge Micro hello app
    מפתח בוחרים מפתח מהתפריט הנפתח.
  4. בקטע Credentials, לוחצים על + Product ובוחרים את 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
    

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

מה השלב הבא?

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