مهام دمج Kubernetes

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
الانتقال إلى مستندات Apigee X.
info

إضافة مكوّن إضافي مخصّص

يمكنك إضافة ميزات وإمكانات جديدة إلى البوابة المصغّرة من خلال كتابة مكوّنات إضافية مخصّصة. تتيح لك المكوّنات الإضافية المخصّصة التفاعل آليًا مع الطلبات والردود التي تنتقل عبر البوابة المصغّرة.

يوضّح هذا القسم كيفية تجميع المكوّنات الإضافية ونشرها على مثيل من Edge Microgateway يعمل في مجموعة Kubernetes.

يفترض بقية هذا القسم أنّك على دراية بكتابة المكوّنات الإضافية وضبطها لإعداد Edge Microgateway عادي. إذا لم يكن الأمر كذلك، يُرجى الاطّلاع على مقالة تطوير مكوّنات إضافية مخصّصة.

تجميع المكوّنات الإضافية

لتجميع مكوّنات إضافية مخصّصة، اتّبِع الخطوات التالية:

  1. اكتب المكوّن الإضافي واختبِره وفقًا للتعليمات الواردة في مقالة كتابة مكوّن إضافي بسيط.

  2. ضَع رمز المكوّن الإضافي في بنية الدليل المناسبة. يجب أن تتبع أدلة المكوّنات الإضافية بنية محدّدة. يوضّح المثال التالي البنية التي يجب اتّباعها، حيث response-uppercase وrequest-headers هما اسما مجلدَين يحتويان على رمز مكوّن إضافي مخصّص (هذه الأسماء هي أمثلة فقط، وقد تختلف أسماء المجلدات):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. انتقِل إلى مجلد plugin باستخدام الأمر cd.

  4. في مجلد plugin، اضغط مجلد plugins بالكامل:

    zip -r plugins.zip plugins/

إنشاء صورة Docker

  1. في الدليل نفسه الذي يوجد فيه ملف ZIP، أنشِئ ملفًا جديدًا باسم Dockerfile.
  2. أضِف الرمز التالي إلى 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"]
    
  3. أنشِئ صورة 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

  1. أضِف المكوّنات الإضافية إلى ملف إعدادات 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 المعدَّلة:

  1. عدِّل عملية نشر 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)
  2. اختبِر المكوّن الإضافي. اتّصِل بواجهة برمجة التطبيقات لمعرفة ما إذا كنت ستحصل على السلوك المتوقّع. على سبيل المثال، بالنسبة إلى المكوّن الإضافي "response uppercase"، يتم تحويل نص الرد إلى أحرف كبيرة بالكامل، كما هو موضّح أدناه:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    إخراج:

    HELLO WORLD
    
إضافة الإعدادات الجديدة يدويًا

تُعدّ عملية الإضافة اليدوية طريقة بسيطة، حيث يمكنك إضافة الإعدادات الجديدة من سطر الأوامر.

  1. نفِّذ الأمر التالي:

    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)
  2. اختبِر المكوّن الإضافي. اتّصِل بواجهة برمجة تطبيقات الخدمة لمعرفة ما إذا كنت ستحصل على السلوك المتوقّع. على سبيل المثال، بالنسبة إلى المكوّن الإضافي "response uppercase"، يتم تحويل نص الرد إلى أحرف كبيرة بالكامل، كما هو موضّح أدناه:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    إخراج:

    HELLO WORLD
    

إجراء تغييرات على إعدادات Edge Microgateway

في بعض الحالات، قد تحتاج إلى تعديل إعدادات Edge Microgateway. على سبيل المثال، قد تريد إضافة مكوّن إضافي جديد إلى Edge Microgateway أو تغيير مَعلمة إعدادات. يوضّح هذا القسم كيفية إجراء تغييرات على إعدادات Edge Microgateway الذي يعمل في Kubernetes وتطبيقها.

  1. أنشِئ ملف إعدادات 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
    
  2. حدِّد القيمة بترميز 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'
  3. أجرِ التغييرات على ملف إعدادات Edge Microgateway لمؤسستك و بيئتك:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. رمِّز محتوى ملف الإعدادات بترميز base64 مرّتين:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. طبِّق التغييرات على Kubernetes في مساحة الاسم التي تعمل فيها خدمتك.

    kubectl apply -f secret.yaml -n 

لن يتم رصد هذه التغييرات الجديدة تلقائيًا من خلال وحدات تشغيل البوابة المصغّرة الحالية، ولكن وحدات التشغيل الجديدة ستحصل على التغييرات. يمكنك حذف وحدة التشغيل الحالية لكي تنشئ عملية النشر وحدة تشغيل جديدة تتضمّن التغيير.

مثال على الخدمة

يوضّح المثال التالي كيفية تعديل عملية نشر خدمة باستخدام

  1. احصل على وحدات التشغيل.

    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
    
  2. احذف وحدة تشغيل edge-microgateway.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    مثال على الناتج:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. احصل على وحدات التشغيل مرة أخرى. سيتم تشغيل وحدة تشغيل جديدة وستحصل على تغييرات الإعدادات.

    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 لتوسيع نطاق عمليات النشر.

توسيع نطاق عملية نشر خدمة

  1. تحقَّق من عمليات النشر:

    kubectl get deployments

    مثال على الناتج:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   1         1         1            1           18h
    helloworld          1         1         1            1           1d
    

    يشير الناتج إلى أنّه تم نشر نسخة واحدة.

  2. وسِّع نطاق عملية النشر من نسخة واحدة إلى أي عدد تريده من النسخ. في هذا المثال، يتم توسيع نطاق خدمة edge-microgateway.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (اختياري) إذا كنت تريد استخدام ميزة التوسيع التلقائي، استخدِم هذا الأمر:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. تحقَّق من عمليات النشر للتأكّد من تفعيل ميزة توسيع النطاق:

    kubectl get deployments

    مثال على الناتج:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   2         2         2            2           18h
    helloworld          1         1         1            1           1d
    

    تم تغيير الحالة لتضمين نسختَين.

  5. تحقَّق من وحدات التشغيل:

    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