شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
افزودن یک افزونه سفارشی
با نوشتن افزونه های سفارشی می توانید ویژگی ها و قابلیت های جدیدی را به microgateway اضافه کنید. پلاگین های سفارشی به شما امکان می دهند با درخواست ها و پاسخ هایی که از طریق microgateway جریان می یابند به صورت برنامه نویسی تعامل داشته باشید.
این بخش نحوه بسته بندی و استقرار افزونه ها را برای نمونه Edge Microgateway که در خوشه Kubernetes شما اجرا می شود را توضیح می دهد.
بقیه این بخش فرض می کند که شما با نوشتن و پیکربندی پلاگین ها برای راه اندازی استاندارد Edge Microgateway آشنا هستید. اگر نه، به توسعه افزونه های سفارشی مراجعه کنید.
پلاگین(های) خود را بسته بندی کنید
برای بسته بندی افزونه(های) سفارشی، این مراحل را دنبال کنید:
افزونه خود را با توجه به دستورالعمل های موجود در Write a simple plugin بنویسید و تست کنید.
کد پلاگین خود را در ساختار دایرکتوری مناسب قرار دهید. دایرکتوری های پلاگین باید از یک ساختار مجموعه پیروی کنند. مثال زیر ساختاری را نشان میدهد که باید از آن پیروی کنید، که در آن
response-uppercase
وrequest-headers
نام پوشههایی هستند که حاوی کد افزونه سفارشی هستند (این نامها فقط نمونه هستند، نام پوشههای شما ممکن است متفاوت باشد):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
به پوشهplugin
.در پوشه
plugin
، کل پوشهplugins
را زیپ کنید:zip -r plugins.zip plugins/
یک تصویر Docker ایجاد کنید
- در همان فهرستی که فایل فشرده در آن قرار دارد، یک فایل جدید به نام
Dockerfile
ایجاد کنید. کد زیر را به
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"]
با افزونه های خود یک تصویر جدید 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 را به روز کنید
افزونه(ها) را به فایل پیکربندی 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 استفاده کنید:
استقرار 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)
-
افزونه را تست کنید. با API تماس بگیرید تا ببینید آیا رفتار مورد انتظار را دارید یا خیر. به عنوان مثال، برای پلاگین "response uppercase"، متن پاسخ مانند شکل زیر به تمام حروف بزرگ تبدیل می شود:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
خروجی:
HELLO WORLD
تزریق دستی پیکربندی جدید
تزریق دستی یک رویکرد ساده است که در آن پیکربندی جدید را از خط فرمان تزریق میکنید.
دستور زیر را اجرا کنید:
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)
-
افزونه را تست کنید. با سرویس API تماس بگیرید تا ببینید آیا رفتار مورد انتظار را دارید یا خیر. به عنوان مثال، برای پلاگین "response uppercase"، متن پاسخ مانند شکل زیر به تمام حروف بزرگ تبدیل می شود:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
خروجی:
HELLO WORLD
ایجاد تغییرات در پیکربندی Edge Microgateway
در برخی موارد، ممکن است لازم باشد پیکربندی Edge Microgateway خود را تغییر دهید. به عنوان مثال، ممکن است بخواهید یک افزونه جدید به Edge Microgateway اضافه کنید یا یک پارامتر پیکربندی را تغییر دهید. این بخش نحوه ایجاد و اعمال تغییرات پیکربندی را در Edge Microgateway در حال اجرا در Kubernetes توضیح می دهد.
مانند شکل زیر یک فایل پیکربندی
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
مقدار کدگذاری شده 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'
تغییرات خود را در فایل پیکربندی Edge Microgateway برای سازمان و محیط خود انجام دهید:
$HOME/.edgemicro/your_org-your_env-config.yaml
Base64 دو برابر محتویات فایل کانفیگ را رمزگذاری کنید:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
تغییرات را در kubernetes در فضای نامی که سرویس شما در آن اجرا می شود اعمال کنید.
kubectl apply -f secret.yaml -n
این تغییرات جدید بهطور خودکار توسط غلافهای microgateway موجود دریافت نمیشوند. با این حال، غلاف های جدید تغییرات را دریافت خواهند کرد. میتوانید غلاف موجود را حذف کنید تا استقرار یک پاد جدید ایجاد کند که تغییرات را دریافت کند.
نمونه خدمات
مثال زیر نحوه به روز رسانی استقرار سرویس با سرویس جدید را نشان می دهد
غلاف ها را دریافت کنید.
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
غلاف
edge-microgateway
را حذف کنید.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
خروجی نمونه:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
دوباره غلاف ها را دریافت کنید. یک غلاف جدید می چرخد و تغییرات پیکربندی شما را دریافت می کند.
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 برای مقیاسبندی استقرارهای خود استفاده کنید.
مقیاس بندی استقرار سرویس
استقرارها را بررسی کنید:
kubectl get deployments
خروجی نمونه:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1d
خروجی نشان می دهد که یک ماکت مستقر شده است.
استقرار را از 1 به هر تعداد کپی که می خواهید تغییر دهید. در این مثال، سرویس
edge-microgateway
مقیاس بندی شده است.kubectl scale deployment edge-microgateway --replicas=2
(اختیاری) اگر می خواهید از مقیاس خودکار استفاده کنید، از این دستور استفاده کنید:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
برای بررسی فعال بودن مقیاسبندی، استقرارها را بررسی کنید:
kubectl get deployments
خروجی نمونه:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1d
حالت تغییر کرده است تا شامل دو ماکت شود.
غلاف ها را بررسی کنید:
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