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

إذا نشرت 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 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