استخدام محوِّل Apigee لخدمة Envoy مع Apigee Edge

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

يوضح هذا المثال كيفية استخدام Apigee Adapter for Envoy مع Apigee Edge.

المتطلبات الأساسية

قبل البدء:

نظرة عامة

يوضّح هذا المثال كيفية استخدام محوِّل Apigee لـ Envoy مع Apigee Edge في Public Cloud. وتتدفق طلبات الخادم الوكيل لواجهة برمجة التطبيقات من خلال Envoy الذي يتم تشغيله كتطبيق محلي، إذ يوفّر Edge خدمات إدارة واجهة برمجة التطبيقات من خلال Apigee Remote Service في Envoy.

يوضّح الشكل التالي البنية الأساسية لدمج Apigee Edge:

عرض على مستوى عالٍ
    لمحوِّل Envoy الذي يعمل بشكل أصلي للتواصل مع Apigee Edge Cloud، بما في ذلك
    مستوى الإدارة ومستوى التشغيل وخدمات Google Cloud Platform

الخادم الوكيل لـ Envoy والخدمة البعيدة قيد التشغيل محليًا. يعالج Envoy عدد الزيارات الواردة من واجهة برمجة التطبيقات والمتوجّهة إليها من الخدمة المستهدَفة، ويتواصل مع الخدمة البعيدة. تتواصل الخدمة البعيدة أيضًا مع Apigee Edge Cloud لاسترداد معلومات المنتجات والخوادم الوكيلة لواجهات برمجة التطبيقات.

توفير Apigee Edge

في هذه الخطوة، ستستخدم واجهة سطر الأوامر للخدمة البعيدة لتوفير "محوِّل Apigee لمواد عرض Envoy" في Apigee Edge. يعمل أمر توفير المتطلبات اللازمة على نشر خادم وكيل لواجهة برمجة التطبيقات في Apigee Edge، كما يتم إعداد شهادة في Apigee، وينشئ بيانات الاعتماد التي ستستخدمها "الخدمة عن بُعد" للاتصال الآمن من نظامك بـ Apigee.

  1. انتقِل إلى الدليل $CLI_HOME:
    cd $CLI_HOME
  2. أنشئ متغيّرات البيئة التالية. سيتم استخدام هذه المتغيّرات كمَعلمات للنص البرمجي لتوفير المتطلبات اللازمة:
    export ORG=organization_name
    export ENV=environment_name
    export USER=your_apigee_username
    export PASSWORD=your_apigee_password

    المكان:

    متغير الوصف
    organization_name اسم مؤسستك على Apigee
    environment_name اسم البيئة في مؤسستك.
    your_apigee_username اسم مستخدم حسابك على Apigee. عادةً ما يكون اسم المستخدم عنوان بريد إلكتروني.
    your_apigee_password كلمة مرور Apigee
  3. نفِّذ الأمر التالي لتوفير خادم الوكيل للخدمة البعيدة على Apigee Edge:
    ./apigee-remote-service-cli provision --legacy --mfa $MFA --username $USER --password $PASSWORD \
        --organization $ORG --environment $ENV > config.yaml

    حيث يكون $MFA رمز التفويض المميّز للمصادقة المتعدّدة العوامل في Apigee.

  4. تحقَّق من محتوى ملف config.yaml. من المفترض أن يظهر العنصر بالشكل التالي:
    # Configuration for apigee-remote-service-envoy (platform: SaaS)
    # generated by apigee-remote-service-cli provision on 2020-08-26 09:43:41
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          internal_api: https://istioservices.apigee.net/edgemicro
          remote_service_api: https://my-username-test.apigee.net/remote-service
          org_name: my-org
          env_name: my-env
          key: f7e09c32f827cab87b8ce43842ed8467ffd2c58e6f795241e38fe7b1aec7664
          secret: 1cb5cca00dfb433cb80b32837451fce4bf694633cddbb73d704517e12b35e75

    تُستخدَم قيم المفتاح والسرية للتحقّق من صحة الطلبات الواردة من "خادم الوكيل للخدمة البعيدة" إلى Apigee Edge.

تشغيل خدمة Apigee Remote Service لخدمة Envoy

يمكنك تشغيل الخدمة عن بُعد إما كبرنامج ثنائي أصلي أو على Docker.

تشغيل الخدمة بشكل أصلي

نفِّذ الملف الثنائي للخدمة مع ملف الضبط الذي تم عرضه من خلال أمر إدارة الحسابات:

$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

تشغيل الخدمة على Docker

يتم نشر صور Docker مع علامات الإصدار. لإجراء عملية التثبيت هذه، استخدِم أحدث إصدار. هناك ثلاثة أنواع من الصور للاختيار من بينها:

التنويع صورة
Google distroless gcr.io/distroless/base
Ubuntu google/apigee-envoy-adapter:v1.1.0-ubuntu
Ubuntu مع Boring Crypto google/apigee-envoy-adapter:v1.1.0-boring

على سبيل المثال، لتشغيل الصورة الفارغة باستخدام config.yaml المحلي المتاح كـ /config.yaml من خلال تركيب وحدة تخزين، استخدِم الأمر التالي:

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v1.1.0

إنشاء نماذج ملفات الإعداد

استخدِم الأمر apigee-remote-service-cli samples create لإنشاء نماذجملفّات إعدادات.

في هذا المثال، تحتاج إلى الملفات التي تم إنشاؤها:

  • envoy-config.yaml - إعداد نشر لخدمة HTTP

لإنشاء العيّنات:

  1. انتقِل إلى دليل $CLI_HOME.
  2. نفِّذ هذا الأمر لإنشاء الملفات:

    ./apigee-remote-service-cli samples create --template native -c ./config.yaml
    .

    يتم تصدير الملفات التالية في الدليل ./samples:

    ls samples
    envoy-config.yaml
    

لمزيد من المعلومات، يُرجى الاطّلاع على الأمر "عيّنات".

تثبيت خادم Envoy الوكيل وتشغيله

اتّبِع الخطوات التالية لتثبيت خادم الوكيل Envoy وتشغيله:

  1. نزِّل ملفًا ثنائيًا لبرنامج Envoy أو أنشئه، أو استخدِم Docker.
  2. يمكنك تشغيل Envoy باستخدام نموذج ملف إعدادات أنشأته سابقًا لخدمة httpbin.org:
    envoy -c $CLI_HOME/samples/envoy-config.yaml

اختبار عملية التثبيت

  1. يُرجى الاتصال بخدمة httpbin على الرقم:
    curl -i http://localhost:8080/httpbin/headers
    

    تتم إدارة الخدمة حاليًا من خلال Apigee، ولأنك لم تقدّم مفتاح واجهة برمجة التطبيقات، يعرض الاستدعاء الخطأ التالي.

    curl -i http://localhost:8080/httpbin/headers
    HTTP/1.1 403 Forbidden
    date: Tue, 12 May 2020 17:51:36 GMT
    server: envoy
    content-length: 0
    x-envoy-upstream-service-time: 11
  2. اضبط منتج واجهة برمجة التطبيقات واحصل على مفتاح واجهة برمجة التطبيقات كما هو موضّح في مقالة كيفية الحصول على مفتاح واجهة برمجة التطبيقات.
  3. يمكنك إجراء طلب بيانات من واجهة برمجة التطبيقات باستخدام المفتاح:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/httpbin/headers -H "x-api-key: $APIKEY"

    من المفترض أن تنجح المكالمة بحالة 200 وأن تعرض قائمة بالعناوين في الاستجابة. على سبيل المثال:

    curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS"
    HTTP/1.1 200 OK
    server: envoy
    date: Tue, 12 May 2020 17:55:34 GMT
    content-type: application/json
    content-length: 828
    access-control-allow-origin: *
    access-control-allow-credentials: true
    x-envoy-upstream-service-time: 301
    
    {
      "headers": {
        "Accept": "*/*",
        "Content-Length": "0",
        "Host": "httpbin.default.svc.cluster.local",
        "User-Agent": "curl/7.70.0-DEV",
        "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS",
        "X-Apigee-Accesstoken": "",
        "X-Apigee-Api": "httpbin.default.svc.cluster.local",
        "X-Apigee-Apiproducts": "httpbin",
        "X-Apigee-Application": "httpbin",
        "X-Apigee-Authorized": "true",
        "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS",
        "X-Apigee-Developeremail": "user@example.com",
        "X-Apigee-Environment": "test",
        "X-Apigee-Organization": "my-org",
        "X-Apigee-Scope": "",
        "X-B3-Parentspanid": "1476f9a2329bbdfa",
        "X-B3-Sampled": "0",
        "X-B3-Spanid": "1ad5c19bfb4bc96f",
        "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa"
      }
    }

الخطوات التالية

تدير الآن شركة Apigee عدد الزيارات الواردة من واجهة برمجة التطبيقات إلى خدمة httpbin. في ما يلي بعض الميزات التي يمكنك استكشافها وتجربتها:

  • في حال ضبط منتج واجهة برمجة التطبيقات كما هو موضّح في كيفية الحصول على مفتاح واجهة برمجة التطبيقات، تم ضبط الحدّ الأقصى للحصة على 5 طلبات في الدقيقة. حاوِل الاتصال بخدمة httpbin عدة مرات أخرى لتنشيط الحصة. عند استنفاد الحصة، يتم عرض خطأ HTTP 403.
  • يمكنك الوصول إلى Apigee Analytics في واجهة مستخدم Edge. انتقِل إلى تحليل > مقاييس واجهة برمجة التطبيقات > واجهة برمجة التطبيقات أداء الخادم الوكيل.
  • أنشئ الرموز المميّزة لبروتوكول JWT واستخدِمها لمصادقة طلبات واجهة برمجة التطبيقات.
  • استخدِم سطر الأوامر لإدارة الرموز المميّزة وإنشائها والتحكّم في عمليات الربط. لمعرفة تفاصيل واجهة سطر الأوامر، يُرجى الاطّلاع على المرجع.