وظایف یکپارچه سازی Kubernetes

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

افزودن یک افزونه سفارشی

با نوشتن افزونه های سفارشی می توانید ویژگی ها و قابلیت های جدیدی را به microgateway اضافه کنید. پلاگین های سفارشی به شما امکان می دهند با درخواست ها و پاسخ هایی که از طریق microgateway جریان می یابند به صورت برنامه نویسی تعامل داشته باشید.

این بخش نحوه بسته بندی و استقرار افزونه ها را برای نمونه Edge Microgateway که در خوشه Kubernetes شما اجرا می شود را توضیح می دهد.

بقیه این بخش فرض می کند که شما با نوشتن و پیکربندی پلاگین ها برای راه اندازی استاندارد Edge Microgateway آشنا هستید. اگر نه، به توسعه افزونه های سفارشی مراجعه کنید.

پلاگین(های) خود را بسته بندی کنید

برای بسته بندی افزونه(های) سفارشی، این مراحل را دنبال کنید:

  1. افزونه خود را با توجه به دستورالعمل های موجود در Write a simple plugin بنویسید و تست کنید.

  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 ایجاد کنید.
  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 تصویر جدید را با کد افزونه‌ای که به رجیستری کانتینر فشار داده‌اید می‌کشد و از آن برای هر غلاف تازه ایجاد شده استفاده می‌کند.

اگر 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 تماس بگیرید تا ببینید آیا رفتار مورد انتظار را دارید یا خیر. به عنوان مثال، برای پلاگین "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)

    کجا:

    • 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 

این تغییرات جدید به‌طور خودکار توسط غلاف‌های microgateway موجود دریافت نمی‌شوند. با این حال، غلاف های جدید تغییرات را دریافت خواهند کرد. می‌توانید غلاف موجود را حذف کنید تا استقرار یک پاد جدید ایجاد کند که تغییرات را دریافت کند.

نمونه خدمات

مثال زیر نحوه به روز رسانی استقرار سرویس با سرویس جدید را نشان می دهد

  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. غلاف 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. غلاف ها را بررسی کنید:

    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 Service A فقط به پلاگین spike arrest نیاز دارد.
  • Edge Microgateway Service B به پلاگین سهمیه و oauth نیاز دارد، اما به توقف اسپیک نیاز ندارد.

برای رسیدگی به این مورد، از فضاهای نام Kubernetes استفاده کنید. به عنوان مثال، می‌توانید سرویس Edge Microgateway A را در فضای نام foo و سرویس Edge Microgateway B را در bar فضای نام مستقر کنید.

در مثال زیر، Edge Microgateway پیکربندی شده در سازمان OrgA با استفاده از گزینه -n به عنوان یک سرویس برای فضای نام foo مستقر شده است:

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