مهام دمج 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. 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. أنشئ صورة 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 سوى المكوّن الإضافي لمنع الارتفاعات المفاجئة في عدد الزيارات.
  • تتطلّب خدمة Edge Microgateway Service B مكوّن Quota وOAuth الإضافيَين، ولكن ليس أداة إيقاف الذروة.

لحلّ حالة الاستخدام هذه، استخدِم مساحات الاسماء في 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