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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

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

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

בקטע הזה נסביר איך לארוז ולפרוס יישומי פלאגין במכונה של 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. יוצרים קובץ חדש בשם Dockerfile באותה ספרייה שבה נמצא קובץ ה-ZIP.
  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. אתם יכולים להשתמש בכל מרשם שרוצים, למשל 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 תשלוף את התמונה החדשה עם קוד הפלאגין שדחפתם לרשם הקונטיינרים, והיא תשתמש בו עבור כל pod חדש שייווצר.

אם פרסתם את 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. מבצעים שינויים ב-kubernets במרחב השמות שבו השירות פועל.

    kubectl apply -f secret.yaml -n 

השינויים החדשים לא נאספים באופן אוטומטי על ידי רצפי Microgateway קיימים, אבל ה-pods החדשים יקבלו את השינויים. אפשר למחוק את יחידת ה-pod הקיים כדי שהפריסה תיצור pod חדש שאוסף את השינוי.

דוגמה לשירות

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

  1. מורידים את ה-pod.

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

    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
    

הרחבת הפריסה

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

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

  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. (אופציונלי) אם רוצים להשתמש בשינוי גודל אוטומטי, משתמשים בפקודה הבאה:

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

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

כדי לטפל בתרחיש כזה לדוגמה, תוכלו להשתמש במרחבי שמות ב-Kubernetes. לדוגמה, אתם יכולים לפרוס את Edge Microgateway Service 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