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

اگر Edge Microgateway را به‌عنوان سرویس مستقر کرده‌اید

برای تزریق پیکربندی به‌روزشده Edge Microgateway، از فرمان edgemicroctl استفاده کنید:

  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. افزایه را آزمایش کنید. «میانای برنامه‌سازی کاربردی» را فراخوانی کنید تا ببینید رفتار موردانتظار را دریافت می‌کنید یا نه. برای مثال، برای افزایه «پاسخ حروف بزرگ»، نوشتار پاسخ به حروف بزرگ تبدیل می‌شود، همان‌طور که در زیر نشان داده شده است:

    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. افزایه را آزمایش کنید. برای دیدن اینکه رفتار موردانتظار را دریافت می‌کنید یا نه، «میانای برنامه‌سازی کاربردی سرویس» را فراخوانی کنید. برای مثال، برای افزایه «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 

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

نمونه خدمات

مثال زیر نشان می‌دهد که چگونه استقرار سرویس را با

  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 خود مستقر و پیکربندی کنید. این مورد استفاده به شما امکان می‌دهد هر نمونه ریزدروازه را با مجموعه افزایه‌ها و پارامترهای خودش پیکربندی کنید. برای مثال:

  • «سرویس A ریزدروازه Edge» فقط به افزایه «مهار جهش» نیاز دارد.
  • «سرویس B دروازه کوچک Edge» به افزایه سهمیه و oauth نیاز دارد، اما به «مهار جهش» نیاز ندارد.

برای پرداختن به این مورد استفاده، از فضاهای نام Kubernetes استفاده کنید. برای مثال، می‌توانید «سرویس Edge Microgateway A» را در فضای نام foo، و «سرویس Edge Microgateway 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 پیکربندی شده است بااستفاده از گزینه -n به‌عنوان سرویس در فضای نام bar مستقر می‌شود:

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