التشغيل السريع: إنشاء وتوزيع التطبيقات إلى Azure Spring Apps
إشعار
يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.
تنطبق هذه المقالة على: ✔️ Basic/Standard ❌ Enterprise
يشرح هذا التشغيل السريع كيفية إنشاء تطبيقات Spring وتوزيعها إلى Azure Spring Apps باستخدام Azure CLI.
المتطلبات الأساسية
- إكمال عمليات التشغيل السريع السابقة في هذه السلسلة:
- توفير مثيل خدمة Azure Spring Apps.
- إعداد خادم تكوين Azure Spring Apps.
تنزيل التطبيق النموذج
استخدم الخطوات التالية لتنزيل نموذج التطبيق. إذا كنت تستخدم Azure Cloud Shell، فانتقل إلى موجه أوامر محلي.
أنشئ مجلدًا جديدًا واستنسخ مستودع التطبيق النموذج.
mkdir source-code
cd source-code
git clone https://github.com/Azure-Samples/azure-spring-apps-samples
انتقل إلى دليل المستودع.
cd azure-spring-apps-samples
انشر PlanetWeatherProvider
استخدم الخطوات التالية لنشر مشروع PlanetWeatherProvider.
إنشاء تطبيق
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" } }
ربما يستغرق تشغيل الأمر بضع دقائق.
غيّر الدليل إلى مجلد المشروع
PlanetWeatherProvider
.cd steeltoe-sample/src/planet-weather-provider
أنشئ الثنائيات وملف .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>
نشر المشروع إلى 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.
إنشاء تطبيق آخر في مثيل Azure Spring Apps للمشروع.
az spring app create --name solar-system-weather --runtime-version NetCore_31
solar-system-weather
هو الاسم المحدد في ملفSolarSystemWeather
المشروعappsettings.json.ربما يستغرق تشغيل الأمر بضع دقائق.
غيّر الدليل إلى مجلد المشروع
SolarSystemWeather
.cd ../solar-system-weather
أنشئ الثنائيات وملف .zip ليتم نشرها.
dotnet publish -c release -o ./publish
نشر المشروع إلى 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
التطبيق.
قم بتشغيل الأمر التالي لتعيين نقطة النهاية.
az spring app update --name solar-system-weather --assign-endpoint true
قم بتشغيل الأمر التالي للحصول على عنوان 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. تصف هذه المقالة كل بديل.
المتطلبات الأساسية
- إكمال عمليات التشغيل السريع السابقة في هذه السلسلة:
- توفير مثيل خدمة Azure Spring Apps.
- إعداد خادم تكوين Azure Spring Apps.
- JDK 17
- Maven 3.0 أو أعلى
- اشتراك Azure. في حال لم يكن لديك اشتراك Azure، أنشئ حسابًا مجانيًا قبل البدء.
- اختياريا، إصدار Azure CLI 2.45.0 أو أعلى. تثبيت ملحق Azure Spring Apps باستخدام الأمر التالي:
az extension add --name spring
- اختياريا، مجموعة أدوات Azure ل 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.
إذا لم تقم بتشغيل الأوامر التالية في عمليات التشغيل السريع السابقة، فقم بتشغيلها الآن لتعيين الإعدادات الافتراضية ل CLI.
az configure --defaults group=<resource-group-name> spring=<service-name>
إنشاء تطبيقي 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
انشر ملفات 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"
الاستعلام عن حالة التطبيق بعد عمليات التوزيع باستخدام الأمر التالي.
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
.
تلميح
لاستكشاف مشاكل النشر وإصلاحها، يمكنك استخدام الأمر التالي للحصول على سجلات تدفق في الوقت الحقيقي كلما كان التطبيق قيد التشغيل 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 ..."