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

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

يوضّح هذا المثال كيفية استخدام "محوِّل Apigee" لـ Envoy مع Apigee Edge.

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

قبل البدء:

نظرة عامة

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

تعرض الصورة التالية البنية الأساسية لعملية التكامل مع Apigee Edge:

نظرة عامة على Envoy Adapter الذي يعمل بشكل أصلي للتواصل مع Apigee Edge Cloud، بما في ذلك مستوى الإدارة ومستوى وقت التشغيل وخدمات Google Cloud Platform

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

توفير Apigee Edge

في هذه الخطوة، ستستخدِم واجهة سطر الأوامر (CLI) في "الخدمة البعيدة" لتوفير مواد عرض "محوِّل 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" لـ 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

على سبيل المثال، لتشغيل صورة scratch مع ملف 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 واستخدامها لمصادقة طلبات البيانات من واجهة برمجة التطبيقات.
  • استخدِم واجهة سطر الأوامر (CLI) لإدارة الرموز وإنشائها والتحكّم في عمليات الربط. للحصول على تفاصيل واجهة سطر الأوامر (CLI)، يُرجى الاطّلاع على المرجع.