نشر بوابة مستضافة ذاتيا ل Azure API Management إلى Azure Container Apps

ينطبق على: المطور | بريميوم

توفر هذه المقالة خطوات نشر مكون البوابة المستضاف ذاتيا من Azure API Management إلى Azure Container Apps.

نشر بوابة مستضافة ذاتيا إلى تطبيق حاوية للوصول إلى واجهات برمجة التطبيقات التي تتم استضافتها في نفس بيئة Azure Container Apps.

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

  • أكمل التشغيل السريع التالي:إنشاء مثيل لـ Azure API Management.

  • بالنسبة إلى Azure CLI:

    إشعار

    تتطلب containerapp أمثلة أمر Azure CLI في هذه المقالة ملحق Azure CLI. إذا لم تكن قد استخدمت az containerapp الأوامر، يتم تثبيت الملحق ديناميكيا عند تشغيل الأمر الأول az containerapp . تعرف على المزيد حول ملحقات Azure CLI.

بوابة التزويد في مثيل APIM الخاص بك

قبل نشر بوابة مستضافة ذاتيا، قم بتوفير مورد بوابة في مثيل Azure API Management. للحصول على خطوات، راجع توفير بوابة ذاتية الاستضافة. في الأمثلة الواردة في هذه المقالة، تسمى my-gatewayالبوابة .

الحصول على إعدادات نشر البوابة من APIM

لنشر البوابة، تحتاج إلى قيم نقطة نهاية الرمز المميز والتكوين للبوابة. يمكنك العثور عليها في مدخل Microsoft Azure:

  1. تسجيل الدخول إلى بوابة Azure، والانتقال إلى مثيل API Management.
  2. في القائمة اليسرى، ضمن Deployment and infrastructure، حدد Gateways.
  3. حدد مورد البوابة الذي قمت بتوفيره، وحدد Deployment.
  4. انسخ قيم الرمز المميز ونقطة نهاية التكوين.

نشر البوابة المستضافة ذاتيا إلى تطبيق حاوية

يمكنك نشر صورة حاوية البوابة المستضافة ذاتيا إلى تطبيق حاوية باستخدام مدخل Azure أو Azure CLI أو أدوات أخرى. توضح هذه المقالة الخطوات باستخدام Azure CLI.

إنشاء بيئة تطبيقات الحاوية

أولا، قم بإنشاء بيئة تطبيقات حاوية باستخدام الأمر az containerapp env create :

#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
    --location centralus

ينشئ هذا الأمر:

  • بيئة تطبيق الحاوية المسماة my-environment التي تستخدمها لتجميع تطبيقات الحاوية.
  • مساحة عمل تحليلات السجل

إنشاء تطبيق حاوية للبوابة المستضافة ذاتيا

لنشر البوابة المستضافة ذاتيا إلى تطبيق حاوية في البيئة، قم بتشغيل الأمر az containerapp create .

تعيين المتغيرات أولا لقيم نقطة نهاية الرمز المميز والتكوين من مورد بوابة APIM.

#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"

إنشاء تطبيق الحاوية az containerapp create باستخدام الأمر :

#!/bin/bash
az containerapp create --name my-gateway \
    --resource-group myResourceGroup --environment 'my-environment' \
    --image "mcr.microsoft.com/azure-api-management/gateway:2.5.0" \
    --target-port 8080 --ingress external \
    --min-replicas 1 --max-replicas 3 \
    --env-vars "config.service.endpoint"="$endpoint" "config.service.auth"="$token" "net.server.http.forwarded.proto.enabled"="true"

ينشئ هذا الأمر:

  • تطبيق حاوية مسمى my-gateway في myResourceGroup مجموعة الموارد. في هذا المثال، يتم إنشاء تطبيق الحاوية mcr.microsoft.com/azure-api-management/gateway:2.5.0 باستخدام الصورة. تعرف على المزيد حول صور حاوية البوابة المستضافة ذاتيا.

  • دعم الدخول الخارجي إلى تطبيق الحاوية على المنفذ 8080.

  • بحد أدنى 1 و3 نسخ متماثلة كحد أقصى من تطبيق الحاوية.

  • اتصال من البوابة المستضافة ذاتيا إلى مثيل APIM باستخدام قيم التكوين التي تم تمريرها في متغيرات البيئة. للحصول على التفاصيل، راجع إعدادات تكوين حاوية البوابة المستضافة ذاتيا.

    إشعار

    يقوم دخول Azure Container Apps بإعادة توجيه طلبات HTTPS إلى تطبيق حاوية البوابة المستضاف ذاتيا ك HTTP. هنا، net.server.http.forwarded.proto.enabled يتم تعيين متغير البيئة إلى true بحيث تستخدم X-Forwarded-Proto البوابة المستضافة ذاتيا العنوان لتحديد البروتوكول الأصلي للطلب.

تأكد من تشغيل تطبيق الحاوية

  1. سجل الدخول إلى مدخل Microsoft Azure، وانتقل إلى تطبيق الحاوية.

  2. في صفحة نظرة عامة على تطبيق الحاوية، تحقق من أن الحالة قيد التشغيل.

  3. إرسال طلب اختبار إلى نقطة نهاية الحالة على /status-012345678990abcdef. على سبيل المثال، استخدم أمرا مشابها curl لما يلي.

    curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdef
    

    يرجع الطلب الناجح استجابة 200 OK .

تلميح

باستخدام CLI، يمكنك أيضا تشغيل الأمر az containerapp show للتحقق من حالة تطبيق الحاوية.

تأكد من أن البوابة سليمة

  1. تسجيل الدخول إلى بوابة Azure، والانتقال إلى مثيل API Management.

  2. في القائمة اليسرى، ضمن Deployment and infrastructure، حدد Gateways.

  3. في صفحة نظرة عامة ، تحقق من حالة البوابة الخاصة بك. إذا كانت البوابة سليمة، فإنها تبلغ عن رسائل كشف أخطاء الاتصال العادية للبوابة.

    لقطة شاشة لحالة البوابة في المدخل.

سيناريو مثال

يوضح المثال التالي كيف يمكنك استخدام البوابة المستضافة ذاتيا للوصول إلى واجهة برمجة تطبيقات مستضافة في تطبيق حاوية في نفس البيئة. كما هو موضح في الرسم التخطيطي التالي، يمكن الوصول إلى البوابة المستضافة ذاتيا من الإنترنت، بينما يمكن الوصول إلى واجهة برمجة التطبيقات فقط داخل بيئة تطبيقات الحاوية.

رسم تخطيطي لسيناريو المثال مع بوابة ذاتية الاستضافة.

  1. نشر تطبيق حاوية يستضيف واجهة برمجة تطبيقات في نفس بيئة البوابة المستضافة ذاتيا
  2. إضافة واجهة برمجة التطبيقات إلى مثيل إدارة واجهة برمجة التطبيقات
  3. استدعاء واجهة برمجة التطبيقات من خلال البوابة المستضافة ذاتيا

نشر تطبيق حاوية يستضيف واجهة برمجة تطبيقات في نفس بيئة البوابة المستضافة ذاتيا

على سبيل المثال، نشر مثال لألبوم الموسيقى API إلى تطبيق حاوية. للوصول لاحقا إلى واجهة برمجة التطبيقات باستخدام البوابة المستضافة ذاتيا، انشر واجهة برمجة التطبيقات في نفس البيئة مثل البوابة المستضافة ذاتيا. للحصول على خطوات ومعلومات مفصلة حول الموارد المستخدمة في هذا المثال، راجع التشغيل السريع: إنشاء ونشر من التعليمات البرمجية المصدر المحلي إلى Azure Container Apps. تتبع الخطوات المختصرة:

  1. قم بتنزيل التعليمات البرمجية المصدر ل Python إلى جهازك المحلي. إذا كنت تفضل ذلك، فبادر بتنزيل التعليمات البرمجية المصدر بلغة أخرى من اختيارك.

  2. استخراج التعليمات البرمجية المصدر إلى مجلد محلي وتغيير إلى مجلد containerapps-albumapi-python-main/src .

  3. قم بتشغيل الأمر az containerapp up التالي لنشر واجهة برمجة التطبيقات إلى تطبيق حاوية في نفس بيئة البوابة المستضافة ذاتيا. . لاحظ في نهاية الأمر، الذي يحدد المجلد الحالي كمصدر لتطبيق الحاوية.

    #!/bin/bash
    az containerapp up --name albums-api \
        --resource-group myResourceGroup --location centralus \
        --environment my-environment --source .
    
  4. تأكد من أن تطبيق الحاوية قيد التشغيل ويمكن الوصول إليه خارجيا في FQDN الذي تم إرجاعه في إخراج الأمر. بشكل افتراضي، يمكن الوصول إلى واجهة برمجة التطبيقات في /albums نقطة النهاية. مثال:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.

تكوين واجهة برمجة التطبيقات للدخول الداخلي

قم الآن بتحديث تطبيق الحاوية الذي يستضيف نموذج واجهة برمجة التطبيقات لتمكين الدخول فقط في بيئة الحاوية. يقيد هذا الإعداد الوصول إلى واجهة برمجة التطبيقات فقط من البوابة المستضافة ذاتيا التي قمت بنشرها.

  1. سجل الدخول إلى مدخل Microsoft Azure، وانتقل إلى تطبيق الحاوية.
  2. في القائمة اليسرى، حدد Ingress.
  3. تعيين الدخول إلى ممكن.
  4. في حركة مرور الدخول، حدد محدود ببيئة تطبيقات الحاوية.
  5. راجع الإعدادات المتبقية وحدد حفظ.

إضافة واجهة برمجة التطبيقات إلى مثيل إدارة واجهة برمجة التطبيقات

فيما يلي خطوات مثال لإضافة واجهة برمجة تطبيقات إلى مثيل APIM وتكوين واجهة برمجة تطبيقات خلفية. لمزيد من المعلومات، راجع إضافة واجهة برمجة تطبيقات إلى Azure API Management.

إضافة واجهة برمجة التطبيقات إلى مثيل إدارة واجهة برمجة التطبيقات

  1. في المدخل، انتقل إلى مثيل APIM حيث قمت بتكوين البوابة المستضافة ذاتيا.
  2. في القائمة اليسرى، حدد APIs>+ Add API.
  3. حدد HTTP وحدد كامل. أدخل الإعدادات التالية:
    1. اسم العرض: أدخل اسما وصفيا. مثال: واجهة برمجة تطبيقات الألبومات.
    2. عنوان URL لخدمة الويب: أدخل FQDN الداخلي لتطبيق الحاوية الذي يستضيف واجهة برمجة التطبيقات. مثال:http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io.
    3. نظام URL: حدد HTTP(S).
    4. لاحقة عنوان URL لواجهة برمجة التطبيقات: أدخل لاحقة من اختيارك. مثال: ألبوم.
    5. البوابات: حدد البوابة المستضافة ذاتيا التي قمت بتوفيرها. مثال: my-gateway.
  4. تكوين إعدادات واجهة برمجة التطبيقات الأخرى وفقا للسيناريو الخاص بك. حدد إنشاء.

إضافة عملية API

  1. في القائمة اليسرى، حدد API ألبومات واجهات برمجة التطبيقات>.
  2. حدد + إضافة عملية.
  3. أدخل إعدادات العملية:
    1. اسم العرض: أدخل اسما وصفيا للعملية. مثال: الحصول على الألبومات.
    2. URL: حدد Get وأدخل /albums لنقطة النهاية.
    3. حدد حفظ.

استدعاء واجهة برمجة التطبيقات من خلال البوابة المستضافة ذاتيا

استدعاء واجهة برمجة التطبيقات باستخدام FQDN للبوابة المستضافة ذاتيا التي تعمل في تطبيق الحاوية. ابحث عن FQDN في صفحة نظرة عامة على تطبيق الحاوية في مدخل Microsoft Azure، أو قم بتشغيل الأمر التاليaz containerapp show.

#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
    --query "properties.configuration.ingress.fqdn" --output tsv

على سبيل المثال، قم بتشغيل الأمر التالي curl لاستدعاء واجهة برمجة التطبيقات في /albumapi/albums نقطة النهاية. إذا كانت واجهة برمجة التطبيقات تتطلب مفتاح اشتراك، فمرر مفتاح اشتراك صالحا لمثيل APIM كعنوان في الطلب:

curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"

عند نجاح الاختبار، تستجيب الخلفية برمز استجابة HTTP ناجح وبعض البيانات.

HTTP/1.1 200 OK
content-length: 751
content-type: application/json
date: Wed, 28 Feb 2024 22:45:09 GMT
[...]

[{"id":1,"title":"You, Me and an App Id","artist":"Daprize","price":10.99,"image_url":"https://aka.ms/albums-daprlogo"},{"id":2,"title":"Seven Revision Army","artist":"The Blue-Green Stripes","price":13.99,"image_url":"https://aka.ms/albums-containerappslogo"},{"id":3,"title":"Scale It Up","artist":"KEDA Club","price":13.99,"image_url":"https://aka.ms/albums-kedalogo"},{"id":4,"title":"Lost in Translation","artist":"MegaDNS","price":12.99,"image_url":"https://aka.ms/albums-envoylogo"},{"id":5,"title":"Lock Down Your Love","artist":"V is for VNET","price":12.99,"image_url":"https://aka.ms/albums-vnetlogo"},{"id":6,"title":"Sweet Container O' Mine","artist":"Guns N Probeses","price":14.99,"image_url":"https://aka.ms/albums-containerappslogo"}]

تلميح

إذا قمت بتمكين تسجيل واجهة برمجة التطبيقات الخاصة بك إلى Application insights، يمكنك الاستعلام عن السجلات لمشاهدة الطلبات والاستجابات.