أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
إضافة مكوّن إضافي مخصّص
يمكنك إضافة ميزات وإمكانات جديدة إلى بوابة التطبيقات المصغّرة من خلال كتابة مكونات تكميلية مخصّصة. تتيح لك المكونات الإضافية المخصّصة التفاعل آليًا مع الطلبات والردود التي تتدفق من خلال بوابة التطبيقات الصغيرة.
يوضّح هذا القسم كيفية تجميع المكوّنات الإضافية ونشرها في مثيل 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"]
أنشئ صورة Docker جديدة لـ Edge Microgateway باستخدام المكوّنات الإضافية وادفع الصورة إلى سجلّ 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)
اختبِر المكوّن الإضافي. يمكنك الاتصال بواجهة برمجة التطبيقات لمعرفة ما إذا كان السلوك متوقّعًا. على سبيل المثال، بالنسبة إلى المكوّن الإضافي "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)
اختبِر المكوّن الإضافي. يمكنك الاتصال بواجهة برمجة التطبيقات للخدمة بهدف معرفة ما إذا كان السلوك المتوقّع يظهر. على سبيل المثال، بالنسبة إلى المكوّن الإضافي "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. تسمح لك حالة الاستخدام هذه بضبط كلّ مثيل من بوابات الميكرو باستخدام مجموعة من المكوّنات الإضافية والمَعلمات. على سبيل المثال:
- لا تتطلّب خدمة Edge Microgateway A سوى المكوّن الإضافي لمنع الارتفاعات المفاجئة في عدد الزيارات.
- تتطلّب خدمة Edge Microgateway Service B مكوّن Quota وOAuth الإضافيَين، ولكن ليس أداة إيقاف الذروة.
لحلّ حالة الاستخدام هذه، استخدِم مساحات الاسماء في Kubernetes. على سبيل المثال، يمكنك نشر
خدمة Edge Microgateway Service A في النطاق foo
، وEdge Microgateway Service 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
كخدمة في مساحة الاسم 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