استخدام بوابة محرك 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 بعد أي إضافات أو تغييرات في تكوين المسار.
المتطلبات الأساسية
- مثيل خدمة خطة Azure Spring Apps Enterprise الذي تم توفيره بالفعل مع تمكين Spring Cloud Gateway. لمزيد من المعلومات، راجع التشغيل السريع: إنشاء التطبيقات ونشرها في Azure Spring Apps باستخدام خطة المؤسسة.
- إصدار Azure CLI 2.0.67 أو الأحدث. استخدم الأمر التالي لتثبيت ملحق Azure Spring Apps:
az extension add --name spring
.
تكوين المسارات
يصف هذا القسم كيفية إضافة مسارات واجهة برمجة التطبيقات وتحديثها وإدارتها للتطبيقات التي تستخدم 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.
استخدم الأمر التالي لإنشاء تطبيق اختبار يسمى test-app في Azure Spring Apps:
az spring app create \ name test-app \ resource-group <resource-group-name> \ service <Azure-Spring-Apps-instance-name>
عيّن نقطة نهاية عامة إلى البوابة للوصول إليها.
لعرض حالة التشغيل والموارد المعطاة ل Spring Cloud Gateway، افتح مثيل Azure Spring Apps في مدخل Microsoft Azure، وحدد قسم Spring Cloud Gateway ، ثم حدد Overview.
لتعيين نقطة نهاية عامة، حدد نعم بجوار تعيين نقطة النهاية. يظهر عنوان URL في غضون دقائق قليلة. احفظ عنوان URL لاستخدامه لاحقًا.
يمكنك أيضا استخدام Azure CLI لتعيين نقطة النهاية. استخدم الأمر التالي لتعيين نقطة النهاية.
az spring gateway update \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --assign-endpoint true
إنشاء قاعدة للوصول إلى نقطة نهاية التحقق من الصحة لتطبيق الاختبار من خلال 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
يمكنك أيضا عرض المسارات في المدخل، كما هو موضح في لقطة الشاشة التالية:
استخدم الأمر التالي للوصول
test health check
إلى واجهة برمجة التطبيقات من خلال نقطة نهاية البوابة:curl https://<endpoint-url>/test/api/healthcheck
استخدم الأوامر التالية للاستعلام عن قواعد التوجيه:
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.
الخطوات التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ