أنت الآن بصدد الاطّلاع على مستندات 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انتقِل إلى مجلد
pluginباستخدام الأمرcd.في مجلد
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/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 كخدمة
استخدِم الأمر 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 سوى المكوّن الإضافي "spike arrest".
- تتطلّب خدمة Edge Microgateway B المكوّنَين الإضافيَين "quota" و"oauth"، ولكن ليس المكوّن الإضافي "spike arrest".
للتعامل مع حالة الاستخدام هذه، استخدِم مساحات الأسماء في 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 كخدمة في مساحة الاسم 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