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

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

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

شما می‌توانید با نوشتن افزونه‌های سفارشی، ویژگی‌ها و قابلیت‌های جدیدی را به microgateway اضافه کنید. افزونه‌های سفارشی به شما امکان می‌دهند تا به صورت برنامه‌نویسی شده با درخواست‌ها و پاسخ‌هایی که از طریق 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/

ایجاد یک تصویر داکر

  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 تصویر جدید را به همراه کد افزونه‌ای که شما به رجیستری کانتینر ارسال کرده‌اید، دریافت کرده و از آن برای هر 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 - رجیستری داکر که ایمیج را در آن قرار داده‌اید. برای مثال، gcr.io یا docker.io .
    • your_project_name - نام پروژه برای مخزن داکر که در آن تصویر داکر را قرار داده‌اید.
    • image_name - نام ایمیج داکری که ارسال کرده‌اید.

    مثال:

    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 - رجیستری داکر که ایمیج را در آن قرار داده‌اید. برای مثال، gcr.io یا docker.io .
    • your_project_name - نام پروژه برای مخزن داکر که در آن تصویر داکر را قرار داده‌اید.
    • image_name - نام ایمیج داکری که ارسال کرده‌اید.
    • 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 های موجود در microgateway دریافت نمی‌شوند. با این حال، pod های جدید تغییرات را دریافت خواهند کرد. می‌توانید 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. غلاف 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. مقیاس استقرار را از ۱ تا هر تعداد کپی که می‌خواهید، تغییر دهید. در این مثال، سرویس 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 خود مستقر و پیکربندی کنید. این مورد استفاده به شما امکان می‌دهد هر نمونه microgateway را با مجموعه افزونه‌ها و پارامترهای خاص خود پیکربندی کنید. به عنوان مثال:

  • سرویس A میکروگیت‌وی اج فقط به افزونه‌ی Spike arrest نیاز دارد.
  • سرویس B میکروگیت‌وی اج به افزونه‌ی quota و oauth نیاز دارد، اما به spike arrest نیاز ندارد.

برای رسیدگی به این مورد استفاده، از فضاهای نام 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