أنت تعرض مستندات 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/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. كوبرنيت سيتم سحب الصورة الجديدة التي تتضمن رمز المكوِّن الإضافي الذي أرسلته إلى قاعدة بيانات المسجّلين في الحاوية واستخدامها في أي المجموعات التي تم إنشاؤها.
إذا نشرت 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)
اختبِر المكوّن الإضافي. يمكنك طلب بيانات من واجهة برمجة التطبيقات لمعرفة ما إذا كنت تحصل على السلوك المتوقع. بالنسبة على سبيل المثال، بالنسبة إلى "الاستجابة بأحرف كبيرة" المكون الإضافي، يتم تحويل نص الاستجابة إلى بأحرف كبيرة، كما هو موضح أدناه:
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)
اختبِر المكوّن الإضافي. ويجب استدعاء واجهة برمجة تطبيقات الخدمة ومعرفة ما إذا حصلت على السلوك المتوقع أم لا. على سبيل المثال، بالنسبة إلى "الاستجابة بأحرف كبيرة" المكون الإضافي، يتحول نص الرد إلى أحرف كبيرة بالكامل، كما هو موضح أدناه:
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
يشير الناتج إلى نشر نسخة مطابقة واحدة.
يمكنك توسيع نطاق النشر من 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 A سوى المكوّن الإضافي للحظر المفاجئ.
- تتطلب خدمة Edge Microgateway الخدمة B المكوّن الإضافي للحصة وبروتوكول OAuth، ولكن لا يزيد معدّل القبض.
لمعالجة حالة الاستخدام هذه، استخدِم namespaces في 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