مهام دمج Kubernetes

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

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

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

يوضّح هذا القسم طريقة تجميع المكوّنات الإضافية ونشرها في مثيل 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. cd إلى المجلد plugin.

  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. أنشئ صورة جديدة على 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

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

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

    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. وسِّع نطاق النشر من 1 إلى العدد الذي تريده من النُسخ المتماثلة. في هذا المثال، يتم تحجيم خدمة 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 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