مشاركة عبر


الاتصال بمسؤول مدار ل Spring في Azure Container Apps

يقدم المكون المدار من قبل مسؤول Spring واجهة إدارية لتطبيقات الويب Spring Boot التي تعرض نقاط نهاية وحدة التشغيل. كمكون مدار في Azure Container Apps، يمكنك بسهولة ربط تطبيق الحاوية الخاص بك ب Admin for Spring للتكامل والإدارة السلسين.

يوضح لك هذا البرنامج التعليمي كيفية إنشاء مكون مسؤول ل Spring Java وربطه بتطبيق الحاوية بحيث يمكنك مراقبة تطبيقات Spring وإدارتها بسهولة.

لقطة شاشة تعرض نظرة عامة على لوحة معلومات المسؤول ل Spring insights.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء مكون مسؤول ل Spring Java.
  • اربط تطبيق الحاوية بمكون مسؤول ل Spring Java.

إذا كنت ترغب في دمج Admin for Spring مع Eureka Server for Spring، فشاهد دمج Admin for Spring مع خادم يوريكا ل Spring in Container Apps بدلا من ذلك.

هام

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

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

الاعتبارات

عند تشغيل مكون Admin for Spring في Container Apps، كن على دراية بالتفاصيل التالية:

العنصر الشرح
النطاق تعمل المكونات في نفس البيئة مثل تطبيق الحاوية المتصل.
تغير الحجم المكونات لا يمكن أن تتوسع. يتم تعيين خصائص minReplicas التحجيم و maxReplicas على 1.
الموارد تم إصلاح تخصيص موارد الحاوية للمكونات. عدد أنوية المعالج هو 0.5، وحجم الذاكرة 1 جيجابايت.
التسعير تندرج فوترة المكونات ضمن التسعير المستند إلى الاستهلاك. يتم احتساب الموارد التي تستهلكها المكونات المدارة بمعدلات النشاط أو الخمول، حسب استخدام الموارد. يمكنك حذف المكونات التي لم تعد قيد الاستخدام لإيقاف الفوترة.
Binding تتصل تطبيقات الحاوية بمكون عبر ربط. تدخل الروابط التكوينات في متغيرات بيئة تطبيق الحاوية. بعد تأسيس الربط، يمكن لتطبيق الحاوية قراءة قيم التكوين من متغيرات البيئة والاتصال بالمكون.

الإعداد

قبل بدء العمل مع مكون Admin for Spring، تحتاج إلى إنشاء الموارد المطلوبة.

تساعدك الأوامر التالية على إنشاء مجموعة الموارد وبيئة تطبيق الحاوية.

  1. إنشاء متغيرات لدعم تكوين التطبيق الخاص بك. يتم توفير هذه القيم لك لأغراض هذا الدرس.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-resource-group
    export ENVIRONMENT=my-environment
    export JAVA_COMPONENT_NAME=admin
    export APP_NAME=sample-admin-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
    
    المتغير ‏‏الوصف
    LOCATION موقع منطقة Azure حيث تقوم بإنشاء تطبيق الحاوية ومكون Java.
    ENVIRONMENT اسم بيئة تطبيق الحاوية لتطبيق العرض التوضيحي الخاص بك.
    RESOURCE_GROUP اسم مجموعة موارد Azure لتطبيق العرض التوضيحي الخاص بك.
    JAVA_COMPONENT_NAME اسم مكون Java الذي تم إنشاؤه لتطبيق الحاوية. في هذه الحالة، يمكنك إنشاء مكون مسؤول ل Spring Java.
    IMAGE صورة الحاوية المستخدمة في تطبيق الحاوية.
  2. سجل الدخول إلى Azure باستخدام Azure CLI.

    az login
    
  3. قم بإنشاء مجموعة موارد.

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION \
        --query "properties.provisioningState"
    

    عند استخدام المعلمة --query ، يتم تصفية الاستجابة وصولا إلى رسالة نجاح أو فشل بسيطة.

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

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

استخدام المكون

الآن بعد أن أصبحت لديك بيئة موجودة، يمكنك إنشاء تطبيق الحاوية الخاص بك وربطه بمثيل مكون Java لمكون Admin for Spring.

  1. إنشاء مكون Admin for Spring Java.

    az containerapp env java-component admin-for-spring create \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 1 \
        --max-replicas 1
    
  2. تحديث مكون المسؤول ل Spring Java.

    az containerapp env java-component admin-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 2 \
        --max-replicas 2
    

ربط تطبيق الحاوية الخاص بك إلى مكون المسؤول ل Spring Java

  1. قم بإنشاء تطبيق الحاوية وربطه بالمكون Admin for Spring.

    az containerapp create \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --environment $ENVIRONMENT \
        --image $IMAGE \
        --min-replicas 1 \
        --max-replicas 1 \
        --ingress external \
        --target-port 8080 \
        --bind $JAVA_COMPONENT_NAME
    

تربط عملية الربط تطبيق الحاوية بمكون Admin for Spring Java. يمكن لتطبيق الحاوية الآن قراءة قيم التكوين من متغيرات البيئة، في المقام الأول الخاصية SPRING_BOOT_ADMIN_CLIENT_URL ، والاتصال بمكون Admin for Spring.

يقوم الربط أيضا بإدخال الخاصية التالية:

"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",

تشير هذه الخاصية إلى أنه يجب على عميل مكون المسؤول ل Spring استخدام عنوان IP لمثيل تطبيق الحاوية عند الاتصال بخادم Admin for Spring.

اختياري: إلغاء ربط تطبيق الحاوية من مكون المسؤول ل Spring Java

لإزالة ربط من تطبيق حاوية، استخدم --unbind الخيار .

az containerapp update \
    --name $APP_NAME \
    --unbind $JAVA_COMPONENT_NAME \
    --resource-group $RESOURCE_GROUP

عرض لوحة المعلومات

هام

لعرض لوحة المعلومات، يحتاج حسابك على الأقل إلى Microsoft.App/managedEnvironments/write الدور في مورد البيئة المدارة. يمكنك تعيين Owner دور أو Contributor على المورد بشكل صريح. يمكنك أيضا اتباع الخطوات لإنشاء تعريف دور مخصص وتعيينه إلى حسابك.

إشعار

لوحة المعلومات غير متوفرة في Azure التي تديرها 21Vianet.

  1. إنشاء تعريف الدور المخصص.

    az role definition create --role-definition '{
        "Name": "<ROLE_NAME>",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    تأكد من استبدال العناصر النائبة بين الأقواس <> بقيمك.

  2. تعيين الدور المخصص إلى حسابك على مورد البيئة المدارة.

    احصل على معرف المورد للبيئة المدارة:

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
        --query id \
        --output tsv)
    
  3. تعيين الدور إلى حسابك.

    قبل تشغيل هذا الأمر، استبدل العنصر النائب - كما هو موضح بواسطة الأقواس <> - بمعرف المستخدم أو الخدمة الأساسي أو اسم الدور.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "<ROLE_NAME>" \
        --scope $ENVIRONMENT_ID
    

    إشعار

    <USER_OR_SERVICE_PRINCIPAL_ID> يجب أن تكون القيمة هي الهوية التي تستخدمها للوصول إلى مدخل Microsoft Azure. <ROLE_NAME> القيمة هي الاسم الذي قمت بتعيينه في الخطوة 1.

  4. احصل على عنوان URL للوحة معلومات المسؤول ل Spring.

    az containerapp env java-component admin-for-spring show \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --query properties.ingress.fqdn \
        --output tsv
    

    يقوم هذا الأمر بإرجاع عنوان URL الذي يمكنك استخدامه للوصول إلى لوحة معلومات المسؤول ل Spring. باستخدام لوحة المعلومات، يمكنك أيضا رؤية تطبيق الحاوية، كما هو موضح في لقطة الشاشة التالية.

    لقطة شاشة تعرض نظرة عامة على لوحة معلومات المسؤول ل Spring.

تنظيف الموارد

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

az group delete --resource-group $RESOURCE_GROUP

Dependency

عند استخدام مكون المسؤول في تطبيق الحاوية الخاص بك، أضف التبعية التالية في ملف pom.xml الخاص بك. استبدل رقم الإصدار بأحدث إصدار متوفر على مستودع Maven.

<dependency>
    <groupId>de.codecentric</groupId>
    <version>3.3.2</version>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

إشعار

لا تحتاج إلى إضافة تبعية عميل بدء تشغيل المسؤول لمسؤول Spring Boot إذا قمت بتمكين عامل Java في تطبيق الحاوية الخاص بك عن طريق تشغيل الأمر التالي في Azure CLI:

az containerapp update --enable-java-agent \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME

خصائص قابلة للتكوين

بدءا من Spring Boot 2، لا يتم عرض نقاط النهاية بخلاف health ولا info يتم كشفها بشكل افتراضي. يمكنك عرضها عن طريق إضافة التكوين التالي في ملف application.properties.

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

قائمة التكوين المسموح بها لمسؤولك ل Spring

توضح القائمة التالية تفاصيل خصائص مكون المسؤول التي يمكنك تكوينها لتطبيقك. لمزيد من المعلومات، راجع مسؤول Spring Boot.

اسم الخاصية ‏‏الوصف القيمة الافتراضية
spring.boot.admin.server.enabled تمكين خادم مسؤول Spring Boot. true
spring.boot.admin.context-path بادئة المسار حيث يتم عرض الأصول الثابتة لخادم المشرف وواجهة برمجة التطبيقات. بالنسبة إلى Dispatcher-Servlet.
spring.boot.admin.monitor.status-interval الفاصل الزمني بالمللي ثانية للتحقق من حالة المثيلات. 10,000ms
spring.boot.admin.monitor.status-lifetime عمر الحالة بالمللي ثانية. لا يتم تحديث الحالة طالما لم تنته صلاحية الحالة الأخيرة. 10,000 مللي ثانية
spring.boot.admin.monitor.info-interval الفاصل الزمني بالمللي ثانية للتحقق من معلومات المثيلات. 1m
spring.boot.admin.monitor.info-lifetime مدة بقاء المعلومات بالدقائق. لا يتم تحديث المعلومات طالما لم تنته صلاحية المعلومات الأخيرة. 1m
spring.boot.admin.monitor.default-timeout المهلة الافتراضية عند تقديم الطلبات. يمكن تجاوز القيم الفردية لنقاط نهاية معينة باستخدام spring.boot.admin.monitor.timeout.*. 10,000
spring.boot.admin.monitor.timeout.* أزواج قيمة المفتاح مع المهلة لكل endpointId. الإعدادات الافتراضية للقيمة default-timeout .
spring.boot.admin.monitor.default-retries العدد الافتراضي لإعادة المحاولة للطلبات الفاشلة. لا تتم إعادة محاولة الطلبات التي تعدل البيانات (PUT، POST، PATCH، DELETE). يمكن تجاوز القيم الفردية لنقاط نهاية معينة باستخدام spring.boot.admin.monitor.retries.*. 0
spring.boot.admin.monitor.retries.* أزواج قيمة المفتاح مع عدد مرات إعادة المحاولة لكل endpointId. لا تتم إعادة محاولة الطلبات التي تعدل البيانات (PUT، POST، PATCH، DELETE). الإعدادات الافتراضية للقيمة default-retries .
spring.boot.admin.metadata-keys-to-sanitize قيم بيانات التعريف للمفاتيح المطابقة لأنماط regex هذه المستخدمة للتعقيم في جميع مخرجات JSON. بدءا من Spring Boot 3، يتم إخفاء جميع قيم المحرك بشكل افتراضي. لمزيد من المعلومات حول كيفية تكوين عملية إلغاء التعميم، راجع تعقيم القيم الحساسة. ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$"
spring.boot.admin.probed-endpoints بالنسبة لتطبيقات عميل Spring Boot 1.x، يقوم Spring Boot Admin بفحص نقاط النهاية المحددة باستخدام OPTIONS طلب. إذا كان المسار يختلف عن المعرف، يمكنك تحديد هذه القيمة ك id:path - على سبيل المثال، health:ping. "health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents"
spring.boot.admin.instance-proxy.ignored-headers الرؤوس التي يجب عدم إعادة توجيهها عند تقديم طلبات إلى العملاء. "Cookie", "Set-Cookie", "Authorization"
spring.boot.admin.ui.title عنوان الصفحة المعروضة. "Spring Boot Admin"
spring.boot.admin.ui.poll-timer.cache مدة الاستقصاء بالمللي ثانية لجلب بيانات ذاكرة التخزين المؤقت الجديدة. 2500
spring.boot.admin.ui.poll-timer.datasource مدة الاستقصاء بالمللي ثانية لجلب بيانات مصدر بيانات جديدة. 2500
spring.boot.admin.ui.poll-timer.gc مدة الاستقصاء بالمللي ثانية لجلب بيانات gc جديدة. 2500
spring.boot.admin.ui.poll-timer.process مدة الاستقصاء بالمللي ثانية لجلب بيانات عملية جديدة. 2500
spring.boot.admin.ui.poll-timer.memory مدة الاستقصاء بالمللي ثانية لجلب بيانات ذاكرة جديدة. 2500
spring.boot.admin.ui.poll-timer.threads مدة الاستقصاء بالمللي ثانية لجلب بيانات مؤشرات الترابط الجديدة. 2500
spring.boot.admin.ui.poll-timer.logfile مدة الاستقصاء بالمللي ثانية لإحضار بيانات logfile جديدة. 1000
spring.boot.admin.ui.enable-toasts تمكين الإعلامات المنبثقة أو تعطيلها. false
spring.boot.admin.ui.title قيمة عنوان نافذة المستعرض. ""
spring.boot.admin.ui.brand يتم عرض تعليمة HTML البرمجية في رأس التنقل والإعدادات الافتراضية لتسمية مسؤول Spring Boot. بشكل افتراضي، يتبع شعار Spring Boot Admin اسمه. ""
management.scheme القيمة التي يتم استبدالها في عنوان URL للخدمة المستخدمة للوصول إلى نقاط نهاية وحدة التشغيل.
management.address القيمة التي يتم استبدالها في عنوان URL للخدمة المستخدمة للوصول إلى نقاط نهاية وحدة التشغيل.
management.port القيمة التي يتم استبدالها في عنوان URL للخدمة المستخدمة للوصول إلى نقاط نهاية وحدة التشغيل.
management.context-path القيمة التي يتم إلحاقها بعنوان URL للخدمة المستخدمة للوصول إلى نقاط نهاية وحدة التشغيل. ${spring.boot.admin.discovery.converter.management-context-path}
health.path القيمة التي يتم إلحاقها بعنوان URL للخدمة المستخدمة للتحقق من الصحة. تم تجاهله بواسطة EurekaServiceInstanceConverter. ${spring.boot.admin.discovery.converter.health-endpoint}
spring.boot.admin.discovery.enabled DiscoveryClient تمكين الدعم لخادم المسؤول. true
spring.boot.admin.discovery.converter.management-context-path القيمة التي يتم إلحاقها بالخدمة service-url المكتشفة عند management-url تحويل القيمة بواسطة DefaultServiceInstanceConverter. /actuator
spring.boot.admin.discovery.converter.health-endpoint-path القيمة التي يتم إلحاقها بالخدمة management-url المكتشفة عند health-url تحويل القيمة بواسطة DefaultServiceInstanceConverter. "health"
spring.boot.admin.discovery.ignored-services الخدمات التي يتم تجاهلها عند استخدام الاكتشاف وغير المسجلة كتطبيق. يدعم أنماطا بسيطة مثل "foo*"و "*bar"و."foo*bar*"
spring.boot.admin.discovery.services الخدمات المضمنة عند استخدام الاكتشاف والمسجلة كتطبيق. يدعم أنماطا بسيطة مثل "foo*"و "*bar"و."foo*bar*" "*"
spring.boot.admin.discovery.ignored-instances-metadata يتم تجاهل الخدمات إذا كانت تحتوي على عنصر بيانات تعريف واحد على الأقل يطابق الأنماط في هذه القائمة. يدعم أنماطا مثل "discoverable=false".
spring.boot.admin.discovery.instances-metadata يتم تضمين الخدمات إذا كانت تحتوي على عنصر بيانات تعريف واحد على الأقل يطابق الأنماط في القائمة. يدعم أنماطا مثل "discoverable=true".

التكوينات الشائعة

  • تسجيل التكوينات ذات الصلة:
    • logging.level.*
    • logging.group.*
    • أي تكوينات أخرى ضمن مساحة الاسم logging.* . على سبيل المثال، لا تستخدم logging.file لكتابة ملفات السجل.

القيود

  • لا تتوفر لوحة معلومات مسؤول Spring Boot في Azure التي يتم تشغيلها بواسطة 21Vianet.

دمج المسؤول المدار ل Spring مع خادم يوريكا ل Spring