"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > نشر وظيفة Java Azure على تطبيقات Azure Container

نشر وظيفة Java Azure على تطبيقات Azure Container

تم النشر بتاريخ 2024-11-01
تصفح:294

Deploying a Java Azure Function on Azure Container Apps

توفر Azure Functions دعمًا متكاملاً لتطوير ونشر وإدارة تطبيقات الوظائف الموجودة في حاوية على تطبيقات Azure Container. وهذا يجعل من السهل تشغيل Azure Functions وإدارتها باستخدام مدخل إدارة Azure المتكامل، مقارنة بتشغيل Azure Functions بشكل مستقل في بيئات الحاويات مثل Azure Kubernetes Service (AKS). بالإضافة إلى ذلك، من خلال الاستفادة من الميزات التي توفرها Azure Container Apps، يمكنك بسهولة الاستفادة من الوظائف مثل KEDA وDapr وEnvoy والقياس والمراقبة والأمان والتحكم في الوصول لوظائف Azure الخاصة بك.

[مرجع]

استضافة تطبيقات Azure Container لوظائف Azure

أنشئ أول وظائفك الحاوية على تطبيقات Azure Container

تحديد متغيرات البيئة

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

# Azure Container Apps resource names
export LOCATION=eastus
export RESOURCE_GROUP_NAME=yoshio-rg
export CONTAINER_REGISTRY_NAME=cajava2411
export CONTAINER_ENVIRONMENT=YoshioContainerEnvironment
export STORAGE_NAME=yoshiojavastorage
export AZURE_FUNCTION_NAME=yoshiojavafunc

# Container image name and tag
export C_IMAGE_NAME=tyoshio2002/java-function-on-aca
export C_IMAGE_TAG=1.0

إنشاء واختبار مشروع وظيفة Java Azure

1. قم بإنشاء وظائف Azure لمشروع Java Maven

أولاً، قم بإنشاء مشروع Maven لوظائف Azure لـ Java. تم تصميم مشروع Maven هذا لإنشاء وظائف Azure باستخدام Java 21. استخدم الأمر mvn الأصلي: إنشاء لإنشاء المشروع، وتعديل المعلمات حسب الحاجة.

mvn archetype:generate \
-DinteractiveMode=false \
-DarchetypeGroupId=com.microsoft.azure \
-DarchetypeArtifactId=azure-functions-archetype \
-DgroupId=com.yoshio3 \
-Dpackage=com.yoshio3 \
-DartifactId=yoshiojavafunc \
-DappName=Java-Azure-Functions \
-DappRegion=$LOCATION \
-DjavaVersion=21 \
-Dversion=1.0-SNAPSHOT \
-Ddocker

سيؤدي تنفيذ الأمر أعلاه إلى إنشاء بنية دليل تلقائيًا، وسيحتوي Function.java على نموذج تعليمة برمجية لوظيفة Azure مع مشغل HTTP. سيتم أيضًا إنشاء ملف Dockerfile، والذي يحتوي على التكوين لتشغيل Azure Functions في بيئة حاوية Docker.

├── Dockerfile
├── host.json
├── local.settings.json
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── yoshio3
    │               └── Function.java
    └── test
        └── java
            └── com
                └── yoshio3
                    ├── FunctionTest.java
                    └── HttpResponseMessageMock.java

2. قم بتشغيل وظيفة Azure محليًا

قم ببناء مشروع Maven وتشغيل وظائف Azure محليًا. قم بتنفيذ الأوامر التالية لبدء وظائف Azure باستخدام مشغل HTTP.

mvn clean package
mvn azure-functions:run

بمجرد تشغيل وظائف Azure، افتح محطة طرفية أخرى وقم بتنفيذ الأمر التالي لإرسال طلب إلى مشغل HTTP. من المفترض أن تتلقى ردًا يقول "Hello, World".

curl "http://localhost:7071/api/HttpExample?name=World"
# Output: 
Hello, World

إنشاء واختبار صورة حاوية وظائف Azure

1. قم ببناء واختبار صورة Docker

استخدم ملف Dockerfile الذي تم إنشاؤه تلقائيًا لإنشاء صورة حاوية Azure Functions. قم بتنفيذ الأمر التالي لبناء الصورة.

docker build -t $C_IMAGE_NAME:$C_IMAGE_TAG -f ./Dockerfile .

بعد اكتمال الإنشاء، قم بتشغيل الأمر التالي للتحقق من إنشاء الصورة.

docker images | grep $C_IMAGE_NAME
# Output: 
tyoshio2002/java-function-on-aca    1.0    bcf471e6f774   9 hours ago     1.46GB

بمجرد إنشاء الصورة، قم بتشغيل الأمر التالي لاختبار صورة حاوية Azure Functions محليًا. تستخدم حاوية Azure Functions داخليًا منفذ HTTP رقم 80، لذلك ستقوم بتعيينه إلى المنفذ 8080 للوصول المحلي. بعد بدء تشغيل الحاوية، قم بتنفيذ أمر الضفيرة لإرسال طلب إلى مشغل Azure Functions HTTP. إذا كان كل شيء يعمل بشكل صحيح، يجب أن تتلقى "Hello, World".

docker run -p 8080:80 -it $C_IMAGE_NAME:$C_IMAGE_TAG
curl "http://localhost:8080/api/HttpExample?name=World"
# Output: 
Hello, World

دفع صورة الحاوية إلى سجل حاوية Azure

1. قم بتسجيل الدخول إلى Azure CLI

أولاً، قم بتسجيل الدخول إلى Azure باستخدام Azure CLI. قم بتنفيذ الأمر التالي لتسجيل الدخول.

az login

2. قم بإنشاء مجموعة موارد

إنشاء مجموعة موارد في Azure. سيتم استخدام مجموعة الموارد هذه لتجميع الموارد ذات الصلة بـ Azure Container Registry وتطبيقات Azure Container Apps.

az group create --name $RESOURCE_GROUP_NAME --location $LOCATION

3. قم بإنشاء وتسجيل الدخول إلى Azure Container Registry

أنشئ سجل حاوية Azure وقم بتسجيل الدخول. Azure Container Registry هو سجل حاوية خاص لدفع صور الحاوية.

az acr create --resource-group $RESOURCE_GROUP_NAME --name $CONTAINER_REGISTRY_NAME --sku Basic
az acr login --name $CONTAINER_REGISTRY_NAME

4. استرد اسم خادم تسجيل حاوية Azure

استرجع اسم الخادم الخاص بـ Azure Container Registry الذي تم إنشاؤه. سيكون اسم الخادم بالتنسيق $CONTAINER_REGISTRY_NAME.azurecr.io.

CONTAINER_REGISTRY_SERVER=$(az acr show --name $CONTAINER_REGISTRY_NAME --query loginServer --output tsv)

5. ادفع الصورة إلى Azure Container Registry

لدفع صورة الحاوية التي تم إنشاؤها محليًا إلى Azure Container Registry، قم بوضع علامة على الصورة باستخدام أمر العلامة. بعد وضع العلامات، استخدم أمر الدفع لدفع الصورة.

docker tag $C_IMAGE_NAME:$C_IMAGE_TAG $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG
docker push $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG

إنشاء تطبيقات حاوية Azure ونشر وظيفة Java Azure

1. قم بتسجيل الامتدادات وموفري الموارد في Azure CLI

لإنشاء تطبيقات Azure Container Apps وإدارتها من Azure CLI، قم بتسجيل الامتدادات وموفري الموارد الضروريين.

az upgrade
az extension add --name containerapp --upgrade -y
az provider register --namespace Microsoft.Web
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

2. إنشاء بيئة تطبيقات حاوية Azure

إنشاء بيئة لتطبيقات Azure Container. يقوم هذا الأمر بإعداد التكوين المطلوب لاستضافة تطبيقات Azure Container Apps.

az containerapp env create --name $CONTAINER_ENVIRONMENT --enable-workload-profiles --resource-group $RESOURCE_GROUP_NAME --location $LOCATION

3. إنشاء حساب تخزين لوظائف Azure

تتطلب Azure Functions حساب تخزين عند إنشاء مثيل تطبيق وظيفي. ولذلك، قم بإنشاء حساب تخزين للأغراض العامة لوظائف Azure.

az storage account create --name $STORAGE_NAME --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --sku Standard_LRS

4. قم بإنشاء مثيل لوظيفة Java Azure في تطبيقات Azure Container

قم بإنشاء مثيل لوظيفة Java Azure في تطبيقات Azure Container. قم بتنفيذ الأمر التالي لإنشاء المثيل. نظرًا لأنه تم إنشاء وظيفة Azure باستخدام Java 21، حدد --runtime java.

az functionapp create --name $AZURE_FUNCTION_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--environment $CONTAINER_ENVIRONMENT \
--storage-account $STORAGE_NAME \
--workload-profile-name "Consumption" \
--max-replicas 15 \
--min-replicas 1 \
--functions-version 4 \
--runtime java \
--image $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG \
--assign-identity

5. قم بتعيين دور لوظيفة Azure للوصول إلى سجل حاوية Azure

أخيرًا، قم بتكوين الوصول الآمن لوظائف Azure إلى Azure Container Registry. قم بتمكين الهوية التي يديرها النظام لوظائف Azure وقم بتعيين دور ACRPull للوصول.

FUNCTION_APP_ID=$(az functionapp identity assign --name $AZURE_FUNCTION_NAME --resource-group $RESOURCE_GROUP_NAME --query principalId --output tsv)
ACR_ID=$(az acr show --name $CONTAINER_REGISTRY_NAME --query id --output tsv)
az role assignment create --assignee $FUNCTION_APP_ID --role AcrPull --scope $ACR_ID

6. استرجع عنوان URL الخاص بوظيفة Azure

أخيرًا، قم باسترداد عنوان URL لوظيفة مشغل HTTP لوظيفة Azure المنشورة. استخدم الأمر az functionapp function show للحصول على تفاصيل وظيفة Azure Functions.

az functionapp function show --resource-group $RESOURCE_GROUP_NAME --name $AZURE_FUNCTION_NAME --function-name HttpExample --query invokeUrlTemplate
# Output: "https://yoshiojavafunc.niceocean-********.eastus.azurecontainerapps.io/api/httpexample"

يمكنك بعد ذلك إرسال طلب إلى عنوان URL المسترد باستخدام أمر الضفيرة للتأكد من أن وظائف Azure تعمل بشكل صحيح.

curl "https://yoshiojavafunc.niceocean-********.eastus.azurecontainerapps.io/api/httpexample?name=World"
# Expected Output: 
Hello, World

إذا تم إعداد كل شيء بشكل صحيح، فيجب أن تتلقى ردًا يقول "Hello, World"، مما يؤكد أن وظيفة Azure الخاصة بك تعمل كما هو متوقع.

ملخص

تعلمت في هذا الدليل كيفية:

  1. قم بإعداد متغيرات البيئة لموارد Azure الخاصة بك.
  2. إنشاء مشروع Java Azure Function باستخدام Maven.
  3. قم بتشغيل وظيفة Azure محليًا للاختبار.
  4. إنشاء صورة Docker لوظيفة Azure.
  5. ادفع صورة Docker إلى Azure Container Registry.
  6. قم بإنشاء بيئة تطبيقات Azure Container ونشر وظيفة Java Azure.
  7. قم بتعيين الأدوار الضرورية للوصول الآمن إلى Azure Container Registry.
  8. قم باسترداد واختبار عنوان URL لوظيفة Azure المنشورة.

باتباع هذه الخطوات، يمكنك نشر وظيفة Java Azure بنجاح على تطبيقات Azure Container، مع الاستفادة من فوائد النقل بالحاويات وإمكانيات الإدارة المتكاملة لـ Azure. إذا كان لديك أي أسئلة أخرى أو كنت بحاجة إلى مساعدة بشأن خطوات محددة، فلا تتردد في طرحها!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/azure/deploying-a-java-azure-function-on-azure-container-apps-1oj?1 إذا كان هناك أي انتهاك، فيرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3