משימות שילוב של Kubernetes

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

הוספת פלאגין מותאם אישית

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

בקטע הזה מוסבר איך לארוז ולפרוס יישומי פלאגין ב-Edge Microgateway שהמכונה פועלת באשכול Kubernetes.

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

אורזים את יישומי הפלאגין

כדי לארוז יישומי פלאגין מותאמים אישית, מבצעים את השלבים הבאים:

  1. כותבים ובודקים את הפלאגין, בהתאם להוראות שמופיעות בקטע כתיבת פלאגין פשוט.

  2. מציבים את קוד הפלאגין במבנה הספרייה המתאים. ספריות יישומי פלאגין חייבות להיות במבנה מוגדר. הדוגמה הבאה מראה של המבנה שצריך לעקוב אחריו, שבו response-uppercase ו-request-headers הם שמות של תיקיות שמכילות קוד פלאגין מותאם אישית (השמות האלה הם דוגמאות בלבד, שמות התיקיות עשויים להיות שונים:

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd לתיקייה plugin.

  4. בתיקייה plugin, צריך לדחוס את כל התיקייה plugins:

    zip -r plugins.zip plugins/

יצירת קובץ אימג' של Docker

  1. באותה ספרייה שבה נמצא קובץ ה-ZIP, יוצרים קובץ חדש בשם Dockerfile.
  2. מוסיפים את הקוד הבא אל Dockerfile ושומרים את הקובץ:

    FROM gcr.io/apigee-microgateway/edgemicro:latest
    RUN apt-get install unzip
    COPY plugins.zip /opt/apigee/
    RUN chown apigee:apigee /opt/apigee/plugins.zip
    RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee"
    EXPOSE 8000
    EXPOSE 8443
    ENTRYPOINT ["entrypoint"]
    
  3. יצירת תמונת Docker חדשה של Edge Microgateway באמצעות יישומי הפלאגין ודחיפה את התמונה למרשם ה-Docker. אפשר להשתמש בכל מרשם שרוצים, בתור docker.io או gcr.io:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
    docker push container-registry/your-project/edgemicroplugins
    

    לדוגמה:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
    docker push   gcr.io/my-project/edgemicroplugins
    

עדכון ההגדרה של Edge Microgateway

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

    $HOME/.edgemicro/org-env-config.yaml
    

    לדוגמה:

    $HOME/.edgemicro/myorg-test-config.yaml

בתצורה לדוגמה הבאה, נוסף הפלאגין המותאם אישית response-uppercase. הפלאגין oauth כבר נמצא שם כברירת מחדל.

  edgemicro:
    ...
    plugins:
      sequence:
        - oauth
        - response-uppercase

עדכון אשכול Kubernetes

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

אם פרסתם את Edge Microgateway כשירות

משתמשים בפקודה edgemicroctl כדי להחדיר את ההגדרה המעודכנת של Edge Microgateway:

  1. מעדכנים את הפריסה של Edge Microgateway באמצעות התמונה החדשה. לדוגמה:

    kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)

    איפה:

    • your_organization – ארגון Apigee שציינתם בפקודה edgemicro configure.
    • your_environment – הסביבה שציינתם בפקודה edgemicro configure.
    • configuration_key – המפתח שהוחזר מהפקודה edgemicro configure.
    • configuration_secret – הסוד שהוחזר באמצעות הפקודה edgemicro configure.
    • config_file_path - הנתיב לקובץ התצורה של Edge Micro שמוחזר מהפקודה edgemicro configure.
    • container-registry - המרשם של Docker שבו דחפתם את התמונה. לדוגמה, gcr.io או docker.io.
    • your_project_name - שם הפרויקט למאגר ב-Docker, שאליו העברתם את קובץ האימג' של Docker.
    • image_name - השם של תמונת ה-Docker שהעברת.

    דוגמה:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
  2. בודקים את הפלאגין. אפשר להפעיל את ה-API כדי לבדוק אם מתקבלת ההתנהגות הצפויה. עבור לדוגמה, עבור 'תשובה באותיות רישיות' של הפלאגין, טקסט התגובה מומר באותיות רישיות, כפי שמוצג בהמשך:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    פלט:

    HELLO WORLD
    
החדרה ידנית של ההגדרות האישיות החדשות

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

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

    kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -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.
    • container-registry - המרשם של Docker שבו דחפתם את התמונה. לדוגמה, gcr.io או docker.io.
    • your_project_name - שם הפרויקט למאגר ב-Docker, שאליו העברתם את קובץ האימג' של Docker.
    • image_name - השם של תמונת ה-Docker שהעברת.
    • service_deployment_file – הנתיב לקובץ הפריסה של השירות עבור שיישומי הפלאגין יחולו עליו. לדוגמה: samples/helloworld/helloworld.yaml.

    לדוגמה:

    kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
  2. בודקים את הפלאגין. קוראים ל-API של השירות אל כדי לבדוק אם מתקבלת ההתנהגות הצפויה. לדוגמה, עבור 'תשובה באותיות רישיות'. יישומי פלאגין, הטקסט של התשובה מומר לאותיות רישיות, כפי שמוצג בהמשך:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    פלט:

    HELLO WORLD
    

ביצוע שינויים בהגדרות האישיות של Edge Microgateway

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

  1. יוצרים קובץ תצורה secret.yaml כפי שמוצג בהמשך:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mgwsecret
    type: Opaque
    data:
      mgorg: EDGEMICRO_ORG
      mgenv: EDGEMICRO_ENV
      mgkey: EDGEMICRO_KEY
      mgsecret: EDGEMICRO_SECRET
      mgconfig: EDGEMICRO_CONFIG
    
  2. יש לציין את הערך בקידוד base64 של EDGEMICRO_ORG, EDGEMICRO_ENV, EDGEMICRO_KEY, EDGEMICRO_SECRET:

    echo -n "your-org" | base64 | tr -d '\n'
    echo -n "your-org-env" | base64 | tr -d '\n'
    echo -n "your-mg-key" | base64 | tr -d '\n'
    echo -n "your-mg-secret" | base64 | tr -d '\n'
    
  3. מבצעים את השינויים הרצויים בקובץ התצורה של Edge Microgateway של הארגון. סביבה:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. מקודד Base64 כפול התוכן של קובץ התצורה:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. אתם יכולים להחיל את השינויים על kubernetes במרחב השמות שבו השירות פועל.

    kubectl apply -f secret.yaml -n 

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

דוגמה לשירות

הדוגמה הבאה ממחישה איך לעדכן פריסת שירות לפריסת שירות חדשה

  1. קנו את ה-Pods.

    kubectl get pods

    פלט לדוגמה:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          19h
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    
  2. מוחקים את הרצף edge-microgateway.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    פלט לדוגמה:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. לוקחים את ה-Pods שוב. רצף חדש מתחיל לפעול ומקבלים את שינויי ההגדרות שלכם.

    kubectl get pods

    פלט לדוגמה:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-7f6tc   1/1       Running   0          5s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

הרחבת הפריסה

בקטע הזה מוסבר איך משתמשים בעקרונות ההתאמה לעומס (scaling) של Kubernetes כדי להתאים את הפריסות לעומס (scaling).

הרחבה של פריסת שירות

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

    kubectl get deployments

    פלט לדוגמה:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   1         1         1            1           18h
    helloworld          1         1         1            1           1d
    

    הפלט מציין שנפרס רפליקה אחד.

  2. להתאים את הפריסה מ-1 למספר רפליקציות שתרצו. בדוגמה הזו, השירות edge-microgateway מותאם לעומס.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (אופציונלי) אם רוצים להשתמש בהתאמה לעומס (autoscaling), משתמשים בפקודה הבאה:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. צריך לבדוק את הפריסות כדי לוודא שההתאמה לעומס (scaling) מופעלת:

    kubectl get deployments

    פלט לדוגמה:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   2         2         2            2           18h
    helloworld          1         1         1            1           1d
    

    המצב השתנה כך שיכלול שני רפליקות.

  5. כדאי לבדוק את רצפי המודעות:

    kubectl get pods

    פלט לדוגמה:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          18h
    edge-microgateway-57ccc7776b-rvfz4   1/1       Running   0          41s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

    הפלט מראה ששתי הרפליקות נמצאות במצב פעיל.

שימוש במרחבי שמות בכמה הגדרות של Edge Microgateway

אפשר לפרוס ולהגדיר כמה מופעים של שירותי Edge Microgateway אשכול Kubernetes. התרחיש לדוגמה הזה מאפשר להגדיר כל מכונה של microgateway עם קבוצה משלו של יישומי פלאגין ופרמטרים. לדוגמה:

  • כדי להשתמש ב-Edge Microgateway Service A, נדרש רק הפלאגין לעצירת נקודות שיא.
  • כדי להשתמש ב-Edge Microgateway Service B, יש צורך בפלאגין של מכסה ו-oauth, אבל לא בעצירה חדה.

כדי לטפל בתרחיש לדוגמה הזה, משתמשים במרחבי שמות של Kubernetes. לדוגמה, אפשר לפרוס Edge Service Microgateway A למרחב השמות foo ו-Edge Microgateway Service B כדי מרחב השמות bar.

בדוגמה הבאה, Edge Microgateway שהוגדר בארגון OrgA נפרס כשירות למרחב השמות foo באמצעות האפשרות -n:

kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo

באופן דומה, בדוגמה הבאה, Edge Microgateway הוגדר בארגון OrgB נפרסה כשירות למרחב השמות bar באמצעות האפשרות -n:

kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar