استخدام بوابة محرك Spring Cloud

إشعار

يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.

تنطبق هذه المقالة على:❌ Basic/Standard ✔️ Enterprise

توضح هذه المقالة كيفية استخدام VMware Spring Cloud Gateway مع خطة Azure Spring Apps Enterprise لتوجيه الطلبات إلى تطبيقاتك.

VMware Spring Cloud Gateway هو مكون VMware Tanzu تجاري يستند إلى مشروع Spring Cloud Gateway مفتوح المصدر. تتعامل Spring Cloud Gateway مع المخاوف الشاملة لفرق تطوير واجهة برمجة التطبيقات، مثل تسجيل الدخول الأحادي (SSO)، والتحكم في الوصول، وتحديد المعدل، والمرونة، والأمان، والمزيد. يمكنك تسريع تسليم واجهة برمجة التطبيقات باستخدام الأنماط السحابية الأصلية الحديثة، وأي لغة برمجة تختارها لتطوير واجهة برمجة التطبيقات.

تتضمن Spring Cloud Gateway الميزات التالية:

  • تكوين التوجيه الديناميكي، بغض النظر عن التطبيقات الفردية التي يمكن تطبيقها وتغييرها دون إعادة التحويل البرمجي.
  • عوامل تصفية مسار API التجارية لنقل مطالبات JSON Web Token المعتمدة (JWT) إلى خدمات التطبيق.
  • تخويل شهادة العميل.
  • نهج تحديد المعدل.
  • تكوين قاطع الدائرة.
  • دعم الوصول إلى خدمات التطبيق عبر بيانات اعتماد مصادقة HTTP الأساسية.

للتكامل مع مدخل API ل VMware Tanzu، تقوم بوابة VMware Spring Cloud تلقائيا بإنشاء وثائق OpenAPI الإصدار 3 بعد أي إضافات أو تغييرات في تكوين المسار.

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

تكوين المسارات

يصف هذا القسم كيفية إضافة مسارات واجهة برمجة التطبيقات وتحديثها وإدارتها للتطبيقات التي تستخدم Spring Cloud Gateway.

يتضمن تعريف تكوين المسار الأجزاء التالية:

  • OpenAPI URI: يشير URI هذا إلى مواصفات OpenAPI. يمكنك استخدام نقطة نهاية URI عامة مثل https://petstore3.swagger.io/api/v3/openapi.json أو URI الذي تم إنشاؤه مثل http://<app-name>/{relative-path-to-OpenAPI-spec}، حيث <app-name> هو اسم تطبيق في Azure Spring Apps يتضمن تعريف واجهة برمجة التطبيقات. يتم دعم كل من مواصفات OpenAPI 2.0 وOpenAPI 3.0. يتم عرض المواصفات في مدخل واجهة برمجة التطبيقات إذا تم تمكينها.
  • المسارات: قائمة بقواعد المسار لتوجيه حركة المرور إلى التطبيقات وتطبيق عوامل التصفية.
  • البروتوكول: بروتوكول الواجهة الخلفية للتطبيق الذي توجه إليه Spring Cloud Gateway نسبة استخدام الشبكة. القيم المعتمدة للبروتوكول هي HTTP أو HTTPS، والافتراضي هو HTTP. لتأمين حركة المرور من Spring Cloud Gateway إلى التطبيق الذي يدعم HTTPS، تحتاج إلى تعيين البروتوكول إلى HTTPS في تكوين المسار الخاص بك.
  • مسارات مستوى التطبيق: هناك ثلاث خصائص للمسار يمكنك تكوينها على مستوى التطبيق لتجنب التكرار عبر جميع المسارات أو معظمها في تكوين المسار. تتجاوز قاعدة التوجيه الملموسة قاعدة توجيه مستوى التطبيق لنفس الخاصية. يمكنك تحديد الخصائص التالية على مستوى التطبيق: predicatesو filtersو.ssoEnabled إذا كنت تستخدم الميزة OpenAPI URI لتعريف المسارات، فإن خاصية توجيه مستوى التطبيق الوحيدة التي يجب دعمها هي filters.

استخدم الأمر التالي لإنشاء تكوين مسار. --app-name يجب أن تكون القيمة اسم تطبيق مستضاف في Azure Spring Apps الذي توجه إليه الطلبات.

az spring gateway route-config create \
    --name <route-config-name> \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app-name <app-name> \
    --routes-file <routes-file.json>

يوضح المثال التالي ملف JSON الذي تم تمريره إلى المعلمة --routes-file في أمر الإنشاء:

{
   "predicates": [
      "<app-level-predicate-of-route>",
   ],
   "ssoEnabled": false,
   "filters": [
      "<app-level-filter-of-route>",
   ],
   "openApi": {
      "uri": "<OpenAPI-URI>"
   },
   "protocol": "<protocol-of-routed-app>",
   "routes": [
      {
         "title": "<title-of-route>",
         "description": "<description-of-route>",
         "predicates": [
            "<predicate-of-route>",
         ],
         "ssoEnabled": true,
         "filters": [
            "<filter-of-route>",
         ],
         "tags": [
            "<tag-of-route>"
         ],
         "order": 0
      }
   ]
}

يسرد الجدول التالي تعريفات المسار. جميع الخصائص اختيارية.

الخاصية الوصف
العنوان عنوان لتطبيقه على الأساليب في وثائق OpenAPI التي تم إنشاؤها.
الوصف وصف لتطبيقه على الأساليب في وثائق OpenAPI التي تم إنشاؤها.
URI URI الكامل، الذي يتجاوز اسم التطبيق الذي توجه إليه الطلبات.
ssoEnabled قيمة تشير إلى ما إذا كان سيتم تمكين التحقق من صحة تسجيل الدخول الأحادي. راجع تكوين تسجيل الدخول الأحادي.
tokenRelay تمرير رمز هوية المستخدم المصادق عليه حاليا إلى التطبيق.
التقييمات قائمة بالتقييمات. راجع التقييمات المتوفرة.
عوامل تصفية قائمة بعوامل التصفية. راجع عوامل التصفية المتوفرة.
الترتيب أمر معالجة المسار. تتم معالجة ترتيب أقل مع أسبقية أعلى، كما هو الحال في Spring Cloud Gateway.
العلامات علامات التصنيف التي يتم تطبيقها على الأساليب في وثائق OpenAPI التي تم إنشاؤها.

إشعار

لأسباب تتعلق بالأمان أو التوافق، لا يتم دعم جميع عوامل التصفية/التقييمات في Azure Spring Apps. ما يلي غير مدعوم:

  • BasicAuth
  • JWTKey

استخدام المسارات ل Spring Cloud Gateway

استخدم الخطوات التالية لإنشاء نموذج تطبيق باستخدام Spring Cloud Gateway.

  1. استخدم الأمر التالي لإنشاء تطبيق اختبار يسمى test-app في Azure Spring Apps:

    az spring app create \
        name test-app \
        resource-group <resource-group-name> \
        service <Azure-Spring-Apps-instance-name>
    
  2. عيّن نقطة نهاية عامة إلى البوابة للوصول إليها.

    لعرض حالة التشغيل والموارد المعطاة ل Spring Cloud Gateway، افتح مثيل Azure Spring Apps في مدخل Microsoft Azure، وحدد قسم Spring Cloud Gateway ، ثم حدد Overview.

    لتعيين نقطة نهاية عامة، حدد نعم بجوار تعيين نقطة النهاية. يظهر عنوان URL في غضون دقائق قليلة. احفظ عنوان URL لاستخدامه لاحقًا.

    لقطة شاشة لصفحة نظرة عامة على Azure Spring Apps في مدخل Microsoft Azure مع تمييز

    يمكنك أيضا استخدام Azure CLI لتعيين نقطة النهاية. استخدم الأمر التالي لتعيين نقطة النهاية.

    az spring gateway update \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --assign-endpoint true
    
  3. إنشاء قاعدة للوصول إلى نقطة نهاية التحقق من الصحة لتطبيق الاختبار من خلال Spring Cloud Gateway.

    احفظ المحتوى التالي في ملف test-api.json . يتضمن هذا التكوين عامل تصفية RateLimit، والذي يسمح ب 20 طلبا كل 10 ثوان، وعامل تصفية RewritePath، والذي يسمح لنقطة نهاية الطلب بالوصول إلى نقطة نهاية فحص صحة Spring Boot القياسية.

    {
      "protocol": "HTTP",
      "routes": [
        {
          "title": "Test API",
          "description": "Retrieve a health check from our application",
          "predicates": [
            "Path=/test/api/healthcheck",
            "Method=GET"
          ],
          "filters": [
            "RateLimit=20,10s",
            "RewritePath=/api/healthcheck,/actuator/health"
          ],
          "tags": [
            "test"
          ]
        }
      ]
    }
    

    ثم استخدم الأمر التالي لتطبيق القاعدة على التطبيق test-app:

    az spring gateway route-config create \
        --name test-api-routes \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --app-name test-app \
        --routes-file test-api.json
    

    يمكنك أيضا عرض المسارات في المدخل، كما هو موضح في لقطة الشاشة التالية:

    لقطة شاشة لصفحة مدخل Microsoft Azure Spring Apps Spring Cloud Gateway تعرض جزء

  4. استخدم الأمر التالي للوصول test health check إلى واجهة برمجة التطبيقات من خلال نقطة نهاية البوابة:

    curl https://<endpoint-url>/test/api/healthcheck
    
  5. استخدم الأوامر التالية للاستعلام عن قواعد التوجيه:

    az spring gateway route-config show \
        --name test-api-routes \
        --query '{appResourceId:properties.appResourceId, routes:properties.routes}'
    
    az spring gateway route-config list \
        --query '[].{name:name, appResourceId:properties.appResourceId, routes:properties.routes}'
    

استخدام عوامل التصفية

يتضمن مشروع Spring Cloud Gateway مفتوح المصدر العديد من عوامل التصفية المضمنة للاستخدام في مسارات البوابة. توفر Spring Cloud Gateway العديد من عوامل التصفية المخصصة بالإضافة إلى عوامل التصفية المضمنة في مشروع OSS.

يوضح المثال التالي كيفية تطبيق عامل التصفية AddRequestHeadersIfNotPresent على مسار:

[
  {
    "predicates": [
      "Path=/api/**",
      "Method=GET"
    ],
    "filters": [
      "AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
    ]
  }
]

ثم قم بتطبيق تعريف المسار باستخدام أمر Azure CLI التالي:

az spring gateway route-config create \
    --name <route-config-name> \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name>
    --routes-file <json-file-with-routes>

لمزيد من المعلومات حول عوامل تصفية التوجيه المتوفرة، راجع كيفية استخدام عوامل تصفية مسار بوابة VMware Spring Cloud مع خطة Azure Spring Apps Enterprise.

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