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

אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

מבוא

בקטע הזה נסביר איך להריץ את 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: סביבה בארגון (למשל test או prod).

    • 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)

    כאשר:

    • 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
    

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

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

בשלבים הבאים פורסים שירות בדיקה פשוט באשכול. בקר Ingress לא מאפשר להפעיל את השירות מחוץ לאשכול. בהמשך, תגדירו ל-Edge Microgateway לבצע קריאה לשירות כיעדו. בקר Ingress מאפשר גישה מבחוץ לשירות 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 'עם תמיכה ב-microgateway'. יצירת שרת proxy 'עם תמיכה ב-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 שמתאים ל-microgateway ב-Edge

  1. נכנסים לממשק המשתמש של Edge.
  2. בוחרים את אותו ארגון שציינתם קודם כשהגדרתם את Edge Microgateway.
  3. בתפריט הניווט הצדדי, בוחרים באפשרות Develop (פיתוח) > API Proxies (שרתי proxy ל-API).
  4. לוחצים על + שרת 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. בדף Security (אבטחה) של האשף, בוחרים באפשרות Pass through (none) (מעבר ישיר (ללא)).

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

  11. בדף Virtual Hosts (מארחים וירטואליים) באשף, מאשרים את הגדרות ברירת המחדל.

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

  13. בדף Build (יצירה) של האשף, בודקים את הגדרות שרת ה-proxy. מוודאים שנבחרה הסביבה test.

  14. לוחצים על Build and Deploy.

יצירת מפתח

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

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

יצירת מוצר API

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

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

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

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

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

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

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

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

  9. לוחצים שוב על + שרת proxy ל-API.

  10. בוחרים את שרת ה-proxy שמתאים ל-microgateway בשם edgemicro_hello.

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

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

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

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

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

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

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

  8. לוחצים על Show לצד Consumer Key.

  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

אחרי ששינויי ההגדרה יישלפו ל-microgateway, תוכלו לנסות לבצע קריאה ל-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.

מה השלב הבא?

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