משימות שילוב של 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. באותה ספרייה שבה נמצא קובץ ה-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. יוצרים קובץ אימג' חדש של 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 ישלוף את האימג' החדש עם קוד הפלאגין שדחפתם ל-Container Registry וישתמש בו לכל הפודים החדשים שנוצרו.

אם פרסתם את 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)

    where:

    • 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 כדי לבדוק אם מתקבלת ההתנהגות הצפויה. לדוגמה, בתוסף response uppercase, טקסט התגובה מומר לאותיות רישיות, כמו שמוצג בהמשך:

    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)

    where:

    • 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 של השירות כדי לבדוק אם מתקבלת ההתנהגות הצפויה. לדוגמה, בתוסף response uppercase, הטקסט של התגובה מומר לאותיות רישיות, כמו שמוצג בהמשך:

    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 

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

דוגמה לשירות

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

  1. קונים את התרמילים.

    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. מוחקים את ה-pod‏ 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. בודקים את הפריסות כדי לוודא שהרחבת קנה המידה מופעלת:

    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. בודקים את ה-Pods:

    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 דורש רק את הפלאגין spike arrest.
  • שירות B של Edge Microgateway מחייב את מכסת השימוש ואת התוסף oauth, אבל לא את התוסף spike arrest.

כדי לטפל בתרחיש השימוש הזה, צריך להשתמש במרחבי שמות ב-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