التشغيل السريع: إنشاء وتوزيع التطبيقات إلى Azure Spring Apps

إشعار

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

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

يشرح هذا التشغيل السريع كيفية إنشاء تطبيقات Spring وتوزيعها إلى Azure Spring Apps باستخدام Azure CLI.

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

  • إكمال عمليات التشغيل السريع السابقة في هذه السلسلة:

تنزيل التطبيق النموذج

استخدم الخطوات التالية لتنزيل نموذج التطبيق. إذا كنت تستخدم Azure Cloud Shell، فانتقل إلى موجه أوامر محلي.

  1. أنشئ مجلدًا جديدًا واستنسخ مستودع التطبيق النموذج.

    mkdir source-code
    
    cd source-code
    
    git clone https://github.com/Azure-Samples/azure-spring-apps-samples
    
  2. انتقل إلى دليل المستودع.

    cd azure-spring-apps-samples
    

انشر PlanetWeatherProvider

استخدم الخطوات التالية لنشر مشروع PlanetWeatherProvider.

  1. إنشاء تطبيق PlanetWeatherProvider للمشروع في مثيل Azure Spring Apps.

    az spring app create --name planet-weather-provider --runtime-version NetCore_31
    

    لتمكين التسجيل التلقائي للخدمة، قمت بإعطاء التطبيق نفس اسم قيمة spring.application.name في ملف appsettings.json للمشروع:

    "spring": {
      "application": {
        "name": "planet-weather-provider"
      }
    }
    

    ربما يستغرق تشغيل الأمر بضع دقائق.

  2. غيّر الدليل إلى مجلد المشروع PlanetWeatherProvider.

    cd steeltoe-sample/src/planet-weather-provider
    
  3. أنشئ الثنائيات وملف .zip ليتم نشرها.

    dotnet publish -c release -o ./publish
    

    تلميح

    يحتوي ملف المشروع على XML التالية لحزم الثنائيات في ملف .zip بعد كتابتها إلى المجلد ./publish:

    <Target Name="Publish-Zip" AfterTargets="Publish">
      <ZipDirectory SourceDirectory="$(PublishDir)" DestinationFile="$(MSBuildProjectDirectory)/publish-deploy-planet.zip" Overwrite="true" />
    </Target>
    
  4. نشر المشروع إلى Azure.

    تأكد من أن موجه الأوامر في مجلد المشروع قبل تشغيل الأمر التالي.

    az spring app deploy \
        --name planet-weather-provider \
        --runtime-version NetCore_31 \
        --main-entry Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll \
        --artifact-path ./publish-deploy-planet.zip
    

    يحدد الخيار --main-entry المسار النسبي من المجلد الجذر لملف .zip إلى ملف .dll الذي يحتوي على نقطة إدخال التطبيق. بعد أن تقوم الخدمة بتحميل ملف .zip، تستخرج جميع الملفات والمجلدات، ثم تحاول تنفيذ نقطة الإدخال في ملف .dll المحدد.

    ربما يستغرق تشغيل الأمر بضع دقائق.

انشر SolarSystemWeather

استخدم الخطوات التالية لنشر مشروع SolarSystemWeather.

  1. إنشاء تطبيق آخر في مثيل Azure Spring Apps للمشروع.

    az spring app create --name solar-system-weather --runtime-version NetCore_31
    

    solar-system-weather هو الاسم المحدد في ملف SolarSystemWeatherالمشروعappsettings.json.

    ربما يستغرق تشغيل الأمر بضع دقائق.

  2. غيّر الدليل إلى مجلد المشروع SolarSystemWeather.

    cd ../solar-system-weather
    
  3. أنشئ الثنائيات وملف .zip ليتم نشرها.

    dotnet publish -c release -o ./publish
    
  4. نشر المشروع إلى Azure.

    az spring app deploy \
        --name solar-system-weather \
        --runtime-version NetCore_31 \
        --main-entry Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll \
        --artifact-path ./publish-deploy-solar.zip
    

    ربما يستغرق تشغيل الأمر بضع دقائق.

عيّن نقاط النهاية العامة

قبل اختبار التطبيق، احصل على نقطة نهاية عامة لطلب HTTP GET إلى solar-system-weather التطبيق.

  1. قم بتشغيل الأمر التالي لتعيين نقطة النهاية.

    az spring app update --name solar-system-weather --assign-endpoint true
    
  2. قم بتشغيل الأمر التالي للحصول على عنوان URL لنقطة النهاية.

    Windows:

    az spring app show --name solar-system-weather --output table
    

    Linux:

    az spring app show --name solar-system-weather | grep url
    

اختبر التطبيق

لاختبار التطبيق، أرسل طلب GET إلى solar-system-weather التطبيق. في المستعرض، انتقل إلى عنوان URL العام مع /weatherforecast إلحاق به. على سبيل المثال: https://servicename-solar-system-weather.azuremicroservices.io/weatherforecast

الإخراج هو JSON:

[{"Key":"Mercury","Value":"very warm"},{"Key":"Venus","Value":"quite unpleasant"},{"Key":"Mars","Value":"very cool"},{"Key":"Saturn","Value":"a little bit sandy"}]

تعرض هذه الاستجابة أن كلا تطبيقي Spring يعملان. يقوم التطبيق SolarSystemWeatherبإرجاع البيانات التي قام باستردادها من التطبيق PlanetWeatherProvider.

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

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

بناء تطبيقات Spring محلياً

استخدم الأوامر التالية لاستنساخ مستودع العينة، وانتقل إلى مجلد العينة، ثم قم بإنشاء المشروع.

git clone https://github.com/azure-samples/spring-petclinic-microservices
cd spring-petclinic-microservices
mvn clean package -DskipTests -Denv=cloud

يستغرق تجميع المشروع 5-10 دقائق. عند تجميع المشروع، يجب أن يكون لديك ملفات JAR فردية لكل خدمة في المجلدات الخاصة بها.

إنشاء تطبيقات وتوزيعها على Azure Spring Apps

استخدم الخطوات التالية لإنشاء التطبيقات ونشرها على Azure Spring Apps باستخدام CLI.

  1. إذا لم تقم بتشغيل الأوامر التالية في عمليات التشغيل السريع السابقة، فقم بتشغيلها الآن لتعيين الإعدادات الافتراضية ل CLI.

    az configure --defaults group=<resource-group-name> spring=<service-name>
    
  2. إنشاء تطبيقي Spring الأساسيين ل PetClinic: api-gateway و customers-service.

    az spring app create \
        --name api-gateway \
        --runtime-version Java_17 \
        --instance-count 1 \
        --memory 2Gi \
        --assign-endpoint
    az spring app create \
        --name customers-service \
        --runtime-version Java_17 \
        --instance-count 1 \
        --memory 2Gi
    
  3. انشر ملفات JAR المضمنة في الخطوة السابقة.

    az spring app deploy \
        --name api-gateway \
        --artifact-path spring-petclinic-api-gateway/target/api-gateway-3.0.1.jar \
        --jvm-options="-Xms2048m -Xmx2048m"
    az spring app deploy \
        --name customers-service \
        --artifact-path spring-petclinic-customers-service/target/customers-service-3.0.1.jar \
        --jvm-options="-Xms2048m -Xmx2048m"
    
  4. الاستعلام عن حالة التطبيق بعد عمليات التوزيع باستخدام الأمر التالي.

    az spring app list --output table
    

    تنتج عن هذا الأمر مخرجات مشابهة للمثال التالي:

    Name               Location    ResourceGroup    Production Deployment    Public Url                                           Provisioning Status    CPU    Memory    Running Instance    Registered Instance    Persistent Storage
    -----------------  ----------  ---------------  -----------------------  ---------------------------------------------------  ---------------------  -----  --------  ------------------  ---------------------  --------------------
    api-gateway        eastus      xxxxxx-sp         default                  https://<service name>-api-gateway.azuremicroservices.io   Succeeded              1      2         1/1                 1/1                    -
    customers-service  eastus      <service name>         default                                                                       Succeeded              1      2         1/1                 1/1                    -
    

تحقق من الخدمات

الوصول api-gateway ومن customers-service مستعرض مع عنوان Url العام الموضح سابقا، بتنسيق https://<service name>-api-gateway.azuremicroservices.io.

لقطة شاشة لتطبيق نموذج PetClinic الذي يعرض صفحة المالكين.

تلميح

لاستكشاف مشاكل النشر وإصلاحها، يمكنك استخدام الأمر التالي للحصول على سجلات تدفق في الوقت الحقيقي كلما كان التطبيق قيد التشغيل az spring app logs --name <app name> --follow.

انشر تطبيقات إضافية

لتشغيل تطبيق PetClinic مع جميع الميزات مثل مسؤول Server والزيارات والأطباء البيطريين، انشر التطبيقات الأخرى بالأوامر التالية:

az spring app create \
    --name admin-server \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi \
    --assign-endpoint
az spring app create \
    --name vets-service \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi
az spring app create \
    --name visits-service \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi
az spring app deploy \
    --name admin-server \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-admin-server/target/admin-server-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"
az spring app deploy \
    --name vets-service \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-vets-service/target/vets-service-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"
az spring app deploy \
    --name visits-service \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-visits-service/target/visits-service-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"

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

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

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

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