درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
افزودن افزایه سفارشی
با نوشتن افزایههای سفارشی میتوانید ویژگیها و قابلیتهای جدیدی به ریزدروازه اضافه کنید. افزایههای سفارشی به شما امکان میدهند بهصورت برنامهریزیشده با درخواستها و پاسخهایی که ازطریق ریزدرگاه جریان مییابند تعامل داشته باشید.
این بخش توضیح میدهد که چگونه افزایهها را بستهبندی و در نمونه Edge Microgateway اجراشده در خوشه Kubernetes مستقر کنید.
بقیه این بخش فرض میکند که با نوشتن و پیکربندی افزایهها برای راهاندازی استاندارد Edge Microgateway آشنا هستید. اگر نه، توسعه افزایههای سفارشی را ببینید.
بستهبندی افزایه(های) خود
برای بستهبندی افزایه(های) سفارشی، این مراحل را دنبال کنید:
افزایه خود را طبق دستورالعملهای نوشتن افزایه ساده بنویسید و آزمایش کنید.
کد افزایه را در ساختار دایرکتوری مناسب قرار دهید. فهرستهای افزایه باید از ساختار مشخصی پیروی کنند. مثال زیر ساختاری را نشان میدهد که باید از آن پیروی کنید، جایی که
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
- در همان دایرکتوری که فایل zip قرار دارد، فایل جدیدی بهنام
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 تصویر جدید را با کد افزایهای که به ثبت محتویات انتقال دادهاید واکشی میکند و از آن برای هر غلاف جدیدی که ایجاد میشود استفاده میکند.
اگر Edge Microgateway را بهعنوان سرویس مستقر کردهاید
برای تزریق پیکربندی بهروزشده Edge Microgateway، از فرمان edgemicroctl استفاده کنید:
استقرار 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)
افزایه را آزمایش کنید. «میانای برنامهسازی کاربردی» را فراخوانی کنید تا ببینید رفتار موردانتظار را دریافت میکنید یا نه. برای مثال، برای افزایه «پاسخ حروف بزرگ»، نوشتار پاسخ به حروف بزرگ تبدیل میشود، همانطور که در زیر نشان داده شده است:
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)
افزایه را آزمایش کنید. برای دیدن اینکه رفتار موردانتظار را دریافت میکنید یا نه، «میانای برنامهسازی کاربردی سرویس» را فراخوانی کنید. برای مثال، برای افزایه «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
این تغییرات جدید بهطور خودکار توسط واحدهای میکروگیتوی موجود دریافت نمیشوند؛ بااینحال، واحدهای جدید تغییرات را دریافت خواهند کرد. میتوانید غلاف موجود را حذف کنید تا استقرار غلاف جدیدی ایجاد کند که تغییر را بردارد.
نمونه خدمات
مثال زیر نشان میدهد که چگونه استقرار سرویس را با
غلافها را دریافت کنید.
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 خود مستقر و پیکربندی کنید. این مورد استفاده به شما امکان میدهد هر نمونه ریزدروازه را با مجموعه افزایهها و پارامترهای خودش پیکربندی کنید. برای مثال:
- «سرویس 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