مشاركة عبر


توزيع بوابة مستضافة ذاتيا لإدارة واجهة برمجة تطبيقات Azure إلى Azure Container Apps

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

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

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

المتطلبات

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

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

    إشعار

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

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

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

الحصول على إعدادات نشر البوابة من إدارة واجهة برمجة التطبيقات

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

  1. سجل الدخول إلى مدخل Microsoft Azure، وانتقل إلى مثيل إدارة واجهة برمجة تطبيقات Azure.
  2. في القائمة اليمنى، ضمن النشر + البنية الأساسية، حدد البوابات المستضافة ذاتيا.
  3. حدد مورد البوابة الذي قمت بتوفيره، وحدد توزيع الإعدادات>.
  4. انسخ قيم نقطة نهاية الرمز المميزوالتكوين .

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

يمكنك نشر صورة حاوية البوابة المستضافة ذاتيا إلى تطبيق حاوية باستخدام مدخل Microsoft 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 .

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

#!/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.9.2" \
    --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.9.2 . لمزيد من المعلومات حول البوابة المستضافة ذاتيا، راجع صور الحاوية.

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

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

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

    إشعار

    يقوم دخول 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 .

تلميح

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

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

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

  2. في القائمة اليمنى، ضمن النشر + البنية الأساسية، حدد البوابات المستضافة ذاتيا.

  3. في صفحة نظرة عامة ، تحقق من حالة البوابة. إذا كانت البوابة سليمة ، فإنها تبلغ عن نبضات قلب البوابة المنتظمة.

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

سيناريو مثال

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

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

  1. انشر تطبيق حاوية يستضيف واجهة برمجة تطبيقات في نفس بيئة البوابة المستضافة ذاتيا.
  2. أضف واجهة برمجة التطبيقات إلى مثيل Azure API Management.
  3. اتصل بواجهة برمجة التطبيقات من خلال البوابة المستضافة ذاتيا.

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

في هذا المثال، يمكنك نشر مثال لواجهة برمجة تطبيقات ألبوم الموسيقى إلى تطبيق حاوية. للوصول إلى واجهة برمجة التطبيقات لاحقا باستخدام البوابة المستضافة ذاتيا، انشر واجهة برمجة التطبيقات في نفس بيئة البوابة المستضافة ذاتيا. للحصول على خطوات ومعلومات مفصلة حول الموارد المستخدمة في هذا المثال، راجع التشغيل السريع: الإنشاء والنشر من التعليمات البرمجية المصدر المحلية إلى 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. في القائمة اليمنى، حدد دخول الشبكة>.
  3. اضبط الدخول إلى ممكن.
  4. في نسبة استخدام الشبكة للدخول، حدد محدود ببيئة تطبيقات الحاويات.
  5. راجع الإعدادات المتبقية وحدد حفظ.

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

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

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

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

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

  1. في القائمة اليمنى، اخترواجهة برمجة تطبيقات ألبومات> التطبيقات.
  2. حدد + إضافة عملية.
  3. أدخل إعدادات التشغيل:
    1. اسم العرض: أدخل اسما وصفيا للعملية. مثال: الحصول على الألبومات.
    2. عنوان URL: حدد الحصول وأدخل /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 . إذا كانت واجهة برمجة التطبيقات تتطلب مفتاح اشتراك، فقم بتمرير مفتاح اشتراك صالح لمثيل إدارة واجهة برمجة التطبيقات كرأس في الطلب:

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، فيمكنك الاستعلام عن السجلات لرؤية الطلبات والاستجابات.

القيود

تعتمد مثيلات البوابة المستضافة ذاتيا على بروتوكول UDP لاتصالات نبضات القلب وحد المعدل. نظرا لأن Azure Container Apps لا يدعم حاليا بروتوكول UDP، لا للدخول ولا لنسبة استخدام الشبكة الداخلية، لا يمكن للنهج rate-limit مزامنة العداد الخاص به عبر المثيلات. وبالتالي، قد يؤدي الاحتفاظ بثلاث نسخ متماثلة من تطبيق حاوية بوابة مستضاف ذاتيا بحد X إلى ثلاثة أضعاف نسبة استخدام الشبكة حتى يتم الوصول إلى الحد X.

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