شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
اضافه کردن افزونه سفارشی
شما میتوانید با نوشتن افزونههای سفارشی، ویژگیها و قابلیتهای جدیدی را به microgateway اضافه کنید. افزونههای سفارشی به شما امکان میدهند تا به صورت برنامهنویسی شده با درخواستها و پاسخهایی که از طریق microgateway جریان مییابند، تعامل داشته باشید.
این بخش نحوه بستهبندی و استقرار افزونهها در یک نمونه Edge Microgateway که در کلاستر Kubernetes شما اجرا میشود را توضیح میدهد.
ادامهی این بخش فرض میکند که شما با نوشتن و پیکربندی افزونهها برای راهاندازی استاندارد Edge Microgateway آشنا هستید. در غیر این صورت، به بخش «توسعه افزونههای سفارشی» مراجعه کنید.
افزونه(های) خود را بستهبندی کنید
برای بستهبندی افزونه(های) سفارشی، این مراحل را دنبال کنید:
افزونه خود را طبق دستورالعملهای موجود در بخش «نوشتن یک افزونه ساده» بنویسید و آزمایش کنید.
کد افزونه خود را در ساختار دایرکتوری مناسب قرار دهید. دایرکتوریهای افزونه باید از یک ساختار مشخص پیروی کنند. مثال زیر ساختاری را که باید دنبال کنید نشان میدهد، که در آن
response-uppercaseوrequest-headersنام پوشههایی هستند که حاوی کد افزونه سفارشی هستند (این نامها فقط مثال هستند، نام پوشههای شما ممکن است متفاوت باشد):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsoncdبه پوشهpluginبروید.در پوشه
plugin، کل پوشهpluginsرا زیپ کنید:zip -r plugins.zip plugins/
ایجاد یک تصویر داکر
- در همان دایرکتوری که فایل زیپ قرار دارد، یک فایل جدید به نام
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/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsبرای مثال:
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker 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 تصویر جدید را به همراه کد افزونهای که شما به رجیستری کانتینر ارسال کردهاید، دریافت کرده و از آن برای هر Pod جدید ایجاد شده استفاده میکند.
اگر 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- رجیستری داکر که ایمیج را در آن قرار دادهاید. برای مثال،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)
-
افزونه را آزمایش کنید. 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- رجیستری داکر که ایمیج را در آن قرار دادهاید. برای مثال،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)
-
افزونه را آزمایش کنید. 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
این تغییرات جدید به طور خودکار توسط pod های موجود در microgateway دریافت نمیشوند. با این حال، pod های جدید تغییرات را دریافت خواهند کرد. میتوانید pod موجود را حذف کنید تا فرآیند استقرار، pod جدیدی ایجاد کند که تغییرات را دریافت کند.
مثال خدمات
مثال زیر نحوه بهروزرسانی استقرار سرویس با یک مورد جدید را نشان میدهد.
غلافها را بگیرید.
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خروجی نشان میدهد که یک کپی مستقر شده است.
مقیاس استقرار را از ۱ تا هر تعداد کپی که میخواهید، تغییر دهید. در این مثال، سرویس
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 خود مستقر و پیکربندی کنید. این مورد استفاده به شما امکان میدهد هر نمونه 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