يتم الآن عرض مستندات 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. سيسحب نظام 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 Service A سوى المكوّن الإضافي لإيقاف الارتفاع المفاجئ.
- تتطلب خدمة Edge Microgateway الخدمة B استخدام الحصة والمكوّن الإضافي لبروتوكول oauth، ولكن لا يتم إيقاف رصد الارتفاع المفاجئ.
لمعالجة حالة الاستخدام هذه، استخدِم مساحات أسماء Kubernetes. على سبيل المثال، يمكنك نشر خدمة
Edge Microgateway A في مساحة الاسم foo
، وخدمة Edge Microgateway الخدمة
ب على مساحة الاسم 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