פריסת Edge Microgateway בתור שירות

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

מבוא

בנושא הזה מוסבר איך להריץ את Edge Microgateway באשכול Kubernetes כשירות עצמאי.

מידע נוסף מופיע במאמר סקירה כללית על שילוב של Edge Microgateway עם Kubernetes.

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

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

הגדרת 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 docs -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 כשירות

  1. מריצים את הפקודה הבאה כדי לפרוס את Edge Microgateway כשירות באשכול Kubernetes:

    kubectl apply -f <(edgemicroctl -org=org -env=env -key=edgemicro-key
    -sec=edgemicro-secret -conf=file path of org-env-config.yaml)

    where:

    • org – הארגון ב-Apigee שציינתם בפקודה edgemicro configure.
    • env – הסביבה שציינתם בפקודה edgemicro configure.
    • edgemicro-key – המפתח שמוחזר מהפקודה edgemicro configure.
    • edgemicro-secret – הסוד שמוחזר מהפקודה edgemicro configure.
    • file path of org-env-config.yaml – הנתיב לקובץ ההגדרה של Edge Micro שמוחזר מהפקודה edgemicro configure.

    לדוגמה:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=989cce9d41cac94e72626d906562a1d76a19445f8901b3508858bb064988eccb -sec=ec92b793178de7b7e88e346f55a951e3fdae05e700e3ddea7d63977826379784 -conf=/Users/jdoe/.edgemicro/jdoe-test-config.yaml)

    פלט לדוגמה:

    config/myorg-test-config.yaml)
    service "edge-microgateway" created
    deployment "edge-microgateway" created
    secret "mgwsecret" created
    
  2. מעתיקים את הקוד הבא ומדביקים אותו במסוף. הקוד מגדיר את בקר Ingress כדי לאפשר גישה חיצונית לשירות edge-microgateway. יכול להיות שתצטרכו להקיש על Enter אחרי שמדביקים את הפקודה בטרמינל:

    cat <<EOF | kubectl apply -f -
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: edge-microgateway-ingress
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
      - http:
          paths:
          - path: /
            backend:
              serviceName: edge-microgateway
              servicePort: 8000
    EOF
    

    אם הפעולה תצליח, יוצג הפלט הבא:

    ingress "edge-microgateway-ingress" created
    

    בקרת הכניסה מוגדרת עכשיו כך שתאפשר גישה חיצונית לשירות edge-microgateway.

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

בשלבים הבאים נפרס שירות בדיקה פשוט באשכול. בקר ה-Ingress לא מאפשר לקרוא לשירות מחוץ לאשכול. בהמשך תגדירו את Edge Microgateway כך שיפעיל את השירות כיעד שלו. בקר הכניסה מאפשר גישה חיצונית לשירות edge-microgateway.

  1. פורסים את שירות helloworld לדוגמה. מכיוון ש-Ingress לא יודע על השירות הזה, אי אפשר לקרוא לשירות מחוץ לאשכול.

    kubectl apply -f samples/helloworld/helloworld-service.yaml

    פלט לדוגמה:

    service "helloworld" created deployment "helloworld" created
    
  2. מוודאים שהפריסה הצליחה. שימו לב: אין כתובת IP חיצונית לשירות helloworld. בשלבים הבאים תגדירו את Edge Microgateway כדי לגשת לכתובת ה-IP הפנימית של השירות.

    kubectl get services -n default

    פלט לדוגמה:

    NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    edge-microgateway   NodePort    10.35.247.222   <none>        8000:32000/TCP   12m
    helloworld          NodePort    10.35.245.103   <none>        8081:30294/TCP   47s
    kubernetes          ClusterIP   10.35.240.1     <none>        443/TCP          47m
    

הגדרת Edge Microgateway כ-proxy לשירות

מקבלים את כתובת ה-IP הפנימית של שירות helloworld ומוסיפים אותה כיעד של Proxy עם תמיכה במיקרו-שער. יצירת שרת proxy עם תמיכה ב-Edge Microgateway היא דרישה רגילה של Edge Microgateway.

מידע נוסף זמין במאמר מה שצריך לדעת על שרתי proxy עם תמיכה ב-Microgateway.

קבלת כתובת ה-IP הפנימית של שירות הבדיקה

  1. מקבלים את כתובת ה-IP והיציאה הפנימיות של האשכול בשביל השירות helloworld:

    kubectl get services helloworld

    פלט לדוגמה:

    NAME         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort   10.55.254.255   <none>        8081:30329/TCP   3m
    
  2. מעתיקים את הערכים של CLUSTER-IP ושל PORT. לדוגמה, בדוגמה שלמעלה, הערכים האלה הם: 10.55.254.255 ו-8081. הערכים במערכת שלכם יהיו שונים.

יצירת שרת proxy עם מודעות למיקרו-שער ב-Edge

  1. מתחברים לממשק המשתמש של Edge.
  2. בוחרים את אותו ארגון שציינתם קודם כשקבעתם את ההגדרה של Edge Microgateway.
  3. בתפריט הניווט הצדדי, בוחרים באפשרות פיתוח > שרתי proxy של API.
  4. לוחצים על + שרת proxy. ייפתח האשף Build a Proxy (יצירת שרת proxy).
  5. בדף הראשון של האשף, בוחרים באפשרות Reverse proxy (הנפוצה ביותר).
  6. לוחצים על הבא.
  7. בדף הפרטים של האשף, מבצעים את ההגדרות הבאות. חשוב למלא את הפרטים באשף בדיוק כמו שמופיע כאן. מוודאים שלשם ה-proxy יש את הקידומת edgemicro_.

    1. שם ה-proxy: edgemicro_hello
    2. נתיב בסיסי של שרת proxy: ‏ /hello

    3. ‫API קיים: http://<cluster_ip>:<port>

      לדוגמה: http://10.55.254.255:8081

  8. לוחצים על הבא.

  9. בדף 'אבטחה' באשף, בוחרים באפשרות העברה (ללא).

  10. לוחצים על הבא.

  11. בדף 'מארחים וירטואליים' באשף, מאשרים את ברירות המחדל.

  12. לוחצים על הבא.

  13. בדף 'יצירה' של האשף, בודקים את הגדרות לשרת proxy. מוודאים שבחרתם בסביבת הבדיקה.

  14. לוחצים על Build and Deploy (בנייה ופריסה).

יצירת מפתח

אפשר להשתמש בחשבון קיים של מפתח לצורך בדיקה, או ליצור חשבון חדש באופן הבא:

  1. בתפריט הניווט הצדדי, בוחרים באפשרות פרסום > מפתחים.
  2. לוחצים על + Developer (מפתח).
  3. ממלאים את תיבת הדו-שיח כדי ליצור מפתח חדש. אתם יכולים להשתמש בכל שם או כתובת אימייל של מפתח שתרצו.

יצירת מוצר API

יוצרים מוצר API כמו שמתואר בהמשך. תוסיפו שני שרתי proxy למוצר: edgemicro-auth ו-edgemicro_hello.

מידע נוסף על אפשרויות ההגדרה של מוצרים זמין במאמר מה צריך לדעת על הגדרת מוצר API.

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

    שם hello-world-product
    שם לתצוגה Edge Micro hello product
    סביבה test
    גישה Public
    סוג אישור המפתח Automatic
  4. בחלק התחתון של הדף, לוחצים על + Custom Resource (תוסף מותאם אישית).

  5. מגדירים את המשאב ל-/ (קו נטוי בודד).

  6. בוחרים שוב באפשרות + Custom Resource ומוסיפים את הנתיב /**.

  7. בחלק התחתון של הדף, לוחצים על + API Proxy.

  8. בוחרים את ה-proxy שנקרא edgemicro-auth.

  9. לוחצים שוב על + API Proxy.

  10. בוחרים את שרת ה-proxy עם המיקרו-שער שנקרא edgemicro_hello.

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

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

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

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

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

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

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

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

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

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

בדיקת ה-Proxy

קבלת כתובת ה-IP של Ingress

בעזרת כתובת ה-IP החיצונית של Ingress, אפשר להתקשר לשירות Edge Microgateway מחוץ לאשכול.

  1. מקבלים את כתובת ה-IP החיצונית של בקר Ingress:

    kubectl get ing -o wide

    פלט לדוגמה:

    NAME                        HOSTS     ADDRESS          PORTS     AGE
    edge-microgateway-ingress   *         35.238.249.62    80        37m
    
  2. מעתיקים את הערך ADDRESS של ה-Ingress ומייצאים אותו למשתנה. אפשר להגדיר את המשתנה באופן ידני:

    export GATEWAY_IP=external_ip

    לדוגמה:

    export GATEWAY_IP=35.238.249.62

    אפשר גם להשתמש בפקודה הזו כדי להגדיר את זה בשבילכם:

    export GATEWAY_IP=$(kubectl describe ing edge-microgateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
  3. מוודאים שהמשתנה יוצא. לדוגמה:

    echo $GATEWAY_IP

    פלט לדוגמה:

    35.238.249.62
    

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

אחרי שהשינויים בהגדרות נמשכים למיקרו-שער, אפשר לנסות להפעיל את ה-API. משתמשים בכתובת ה-IP של בקר Ingress (ששמרתם במשתנה GATEWAY_IP) כדי להפעיל את ה-API, כי כתובת ה-IP הזו מאפשרת להפעיל את ה-proxy מחוץ לאשכול Kubernetes. המיפוי מ-Ingress ל-Edge Microgateway נוצר כשפרסתם את Edge Microgateway באשכול.

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

    curl $GATEWAY_IP:80/hello/

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

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

    אם ההודעה הזו מוצגת, יכול להיות שתצטרכו לחכות עוד קצת עד שהסנכרון יושלם:

    {"message":"no match found for /hello/","status":404}
    

    כדי לבצע קריאות API מוצלחות, צריך מפתח API.

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

    curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP:80/hello/

    לדוגמה:

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP:80/hello/

    פלט:

    Hello world
    

    אם מוצגת התגובה Hello world, סימן שהגדרתם בהצלחה את Edge Microgateway כדי לקרוא לשירות helloworld בתוך אשכול Kubernetes.

מה השלב הבא?

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