استخدام نقطة نهاية خاصة مع بيئة Azure Container Apps (معاينة)
في هذه المقالة، ستتعلم كيفية استخدام نقطة نهاية خاصة للوصول بأمان إلى Azure Container App دون تعريضها للإنترنت العام.
تستخدم نقطة النهاية الخاصة عنوان IP خاصا من شبكتك الظاهرية (VNet). تربطك نقطة النهاية هذه بشكل خاص وآمن بخدمة مدعومة من Azure Private Link.
تدعم نقاط النهاية الخاصة على Azure Container Apps حركة مرور HTTP الواردة فقط. حركة مرور TCP غير مدعومة.
المتطلبات الأساسية
- إنشاء حساب في Azure ذي اشتراك نشط.
- إذا لم يكن لديك مثل هذا الحساب، فيمكنك إنشاء واحد مجانًا.
إنشاء تطبيق حاويات
تَسجيل الدخول إلى مدخل Microsoft Azure.
ابحث عن Container Apps في شريط البحث العلوي.
حدد Container Apps في نتائج البحث.
حدد زر إنشاء.
في صفحة Create Container App في علامة التبويب Basics ، أدخل القيم التالية.
الإعدادات الإجراء الاشتراك حدد اشتراك Azure الخاص بك. مجموعة الموارد حدد Create new وأدخل my-container-apps. اسم تَطبيق الحاوية أدخل my-container-app. مصدر التوزيع حدد صورة الحاوية. المنطقة حدد Central US. في الحقل Create Container Apps Environment ، حدد الارتباط Create new .
في الصفحة Create Container Apps Environment في علامة التبويب Basics أدخل القيم التالية:
الإعداد القيمة اسم البيئة قم بإدخال my-environment. التكرار في المنطقة حدد Disabled حدد علامة التبويب Networking لإنشاء شبكة ظاهرية (VNet). بشكل افتراضي، يتم تمكين الوصول إلى الشبكة العامة، مما يعني تعطيل نقاط النهاية الخاصة.
تعطيل الوصول إلى الشبكة العامة.
اترك Use your own virtual network set to No. يمكنك استخدام شبكة ظاهرية موجودة، ولكن يتم دعم نقاط النهاية الخاصة فقط بواسطة بيئات ملفات تعريف حمل العمل، والتي تتطلب شبكة فرعية بحد أدنى لنطاق
/27
CIDR أو أكبر. لمعرفة المزيد حول تغيير حجم الشبكة الفرعية، راجع نظرة عامة على بنية الشبكة.قم بتعيين Enable private endpoints إلى Yes.
تعيين اسم نقطة النهاية الخاصة إلى نقطة النهاية الخاصة الخاصة بي.
في حقل الشبكة الظاهرية لنقطة النهاية الخاصة، حدد الارتباط إنشاء جديد.
في صفحة Create Virtual Network ، قم بتعيين Virtual Network إلى my-private-endpoint-vnet. حدد موافق.
في حقل الشبكة الفرعية للشبكة الظاهرية لنقطة النهاية الخاصة، حدد الارتباط إنشاء جديد.
في صفحة إنشاء شبكة فرعية، قم بتعيين اسم الشبكة الفرعية إلى my-private-endpoint-vnet-subnet. حدد موافق.
اترك DNS معينا إلى Azure Private DNS Zone.
حدد إنشاء.
في صفحة Create Container App في علامة التبويب Basics ، حدد Next : Container >.
في صفحة Create Container App في علامة التبويب Container ، حدد Use quickstart image.
حدد Review and create في أسفل الصفحة.
إذا لم يتم العثور على أي أخطاء، يتم تمكين الزرCreate.
إذا كانت هناك أخطاء، توضع علامة التبويب التي تحتوي على أخطاء بنقطة حمراء. انتقل إلى علامة التبويب المناسبة. يتم تمييز الحقول التي تحتوي على خطأ باللون الأحمر. بمجرد إصلاح كافة الأخطاء، حدد Review and create مرة أخرى.
حدد إنشاء.
يتم عرض صفحة مع الرسالة النشر قيد التقدم. بمجرد اكتمال النشر بنجاح، سترى الرسالة: اكتمل النشر الخاص بك.
عند الاستعراض وصولا إلى نقطة نهاية تطبيق الحاوية، تتلقى
ERR_CONNECTION_CLOSED
لأن بيئة تطبيق الحاوية الخاصة بك قد تم تعطيل الوصول العام. بدلا من ذلك، يمكنك الوصول إلى تطبيق الحاوية باستخدام نقطة النهاية الخاصة بك.
المتطلبات الأساسية
إنشاء حساب في Azure ذي اشتراك نشط.
- إذا لم يكن لديك مثل هذا الحساب، فيمكنك إنشاء واحد مجانًا.
أحدث إصدار من Azure CLI. للتأكد من تشغيل أحدث إصدار، قم بتشغيل الأمر التالي.
az upgrade
أحدث إصدار من ملحق Azure Container Apps ل Azure CLI. للتأكد من تشغيل أحدث إصدار، قم بتشغيل الأمر التالي.
az extension add --name containerapp --upgrade --allow-preview true
إشعار
بدءا من مايو 2024، لم تعد ملحقات Azure CLI تمكن ميزات المعاينة بشكل افتراضي. للوصول إلى ميزات معاينة تطبيقات الحاوية، قم بتثبيت ملحق Container Apps باستخدام
--allow-preview true
.
لمزيد من المعلومات حول المتطلبات الأساسية والإعداد، راجع التشغيل السريع: نشر تطبيق الحاوية الأول مع تطبيق الحاوية.
تعيين متغيرات البيئة
تعيين متغيرات البيئة التالية.
RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
VNET_NAME="my-vnet"
SUBNET_NAME="my-subnet"
PRIVATE_ENDPOINT="my-private-endpoint"
PRIVATE_ENDPOINT_CONNECTION="my-private-endpoint-connection"
PRIVATE_DNS_ZONE="privatelink.${LOCATION}.azurecontainerapps.io"
DNS_LINK="my-dns-link"
إنشاء مجموعة موارد Azure
إنشاء مجموعة موارد لتنظيم الخدمات المتعلقة بنشر تطبيق الحاوية.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
إنشاء شبكة ظاهرية
إنشاء شبكة Azure الظاهرية (VNet). يمكنك استخدام شبكة ظاهرية موجودة، ولكن يتم دعم نقاط النهاية الخاصة فقط بواسطة بيئات ملفات تعريف حمل العمل، والتي تتطلب شبكة فرعية بحد أدنى لنطاق
/27
CIDR أو أكبر. لمعرفة المزيد حول تغيير حجم الشبكة الفرعية، راجع نظرة عامة على بنية الشبكة.az network vnet create \ --resource-group $RESOURCE_GROUP \ --name $VNET_NAME \ --location $LOCATION \ --address-prefix 10.0.0.0/16
إنشاء شبكة فرعية لإقرانها بالشبكة الظاهرية واحتواء نقطة النهاية الخاصة.
az network vnet subnet create \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --address-prefixes 10.0.0.0/21
استرداد معرف الشبكة الفرعية. يمكنك استخدام هذا لإنشاء نقطة النهاية الخاصة.
SUBNET_ID=$(az network vnet subnet show \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --query "id" \ --output tsv)
إنشاء بيئة
إنشاء بيئة تطبيقات الحاوية. يتم دعم نقاط النهاية الخاصة فقط من قبل بيئات ملفات تعريف حمل العمل، وهو النوع الافتراضي للبيئات الجديدة.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
استرداد معرف البيئة. يمكنك استخدام هذا لتكوين البيئة.
ENVIRONMENT_ID=$(az containerapp env show \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --query "id" \ --output tsv)
تعطيل الوصول إلى الشبكة العامة للبيئة. هذا مطلوب لتمكين نقاط النهاية الخاصة.
az containerapp env update \ --id $ENVIRONMENT_ID \ --public-network-access Disabled
قم بإنشاء نقطة نهاية خاصة
إنشاء نقطة النهاية الخاصة في البيئة والشبكة الفرعية التي قمت بإنشائها مسبقا.
az network private-endpoint create \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--name $PRIVATE_ENDPOINT \
--subnet $SUBNET_ID \
--private-connection-resource-id $ENVIRONMENT_ID \
--connection-name $PRIVATE_ENDPOINT_CONNECTION \
--group-id managedEnvironments
قم بتكوين منطقة خادم أسماء المجالات الخاصة
استرداد عنوان IP لنقطة النهاية الخاصة. يمكنك استخدام هذا لإضافة سجل DNS إلى منطقة DNS الخاصة بك.
PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \ --name $PRIVATE_ENDPOINT \ --resource-group $RESOURCE_GROUP \ --query 'customDnsConfigs[0].ipAddresses[0]' \ --output tsv)
استرداد المجال الافتراضي للبيئة. يمكنك استخدام هذا لإضافة سجل DNS إلى منطقة DNS الخاصة بك.
DNS_RECORD_NAME=$(az containerapp env show \ --id $ENVIRONMENT_ID \ --query 'properties.defaultDomain' \ --output tsv | sed 's/\..*//')
قم بإنشاء منطقة DNS خاصة
az network private-dns zone create \ --resource-group $RESOURCE_GROUP \ --name $PRIVATE_DNS_ZONE
إنشاء ارتباط بين الشبكة الظاهرية الخاصة بك ومنطقة DNS الخاصة بك.
az network private-dns link vnet create \ --resource-group $RESOURCE_GROUP \ --zone-name $PRIVATE_DNS_ZONE \ --name $DNS_LINK \ --virtual-network $VNET_NAME \ --registration-enabled false
أضف سجلا لنقطة النهاية الخاصة بك إلى منطقة DNS الخاصة بك.
az network private-dns record-set a add-record \ --resource-group $RESOURCE_GROUP \ --zone-name $PRIVATE_DNS_ZONE \ --record-set-name $DNS_RECORD_NAME \ --ipv4-address $PRIVATE_ENDPOINT_IP_ADDRESS
نشر تطبيق حاوية
نشر تطبيق حاوية في بيئتك. يستخدم تطبيق الحاوية هذا ببساطة صورة التشغيل السريع.
عند الاستعراض وصولا إلى نقطة نهاية تطبيق الحاوية، تتلقى ERR_CONNECTION_CLOSED
لأن بيئة تطبيق الحاوية الخاصة بك قد تم تعطيل الوصول العام. بدلا من ذلك، يمكنك الوصول إلى تطبيق الحاوية باستخدام نقطة النهاية الخاصة بك.
az containerapp up \
--name $CONTAINERAPP_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT_NAME \
--image mcr.microsoft.com/k8se/quickstart:latest \
--target-port 80 \
--ingress external \
--query properties.configuration.ingress.fqdn
التحقق من اتصال نقطة النهاية الخاصة
في هذا القسم، يمكنك إنشاء جهاز ظاهري مقترن ب VNet الخاص بك حتى تتمكن من الوصول إلى تطبيق الحاوية الذي حددته باستخدام نقطة النهاية الخاصة بك.
إنشاء جهاز ظاهري (VM)
تَسجيل الدخول إلى مدخل Microsoft Azure.
ابحث عن الأجهزة الظاهرية في شريط البحث العلوي.
حدد "Virtual machines" في نتائج البحث.
حدد إنشاء.
في صفحة Create a virtual machine في علامة التبويب Basics ، أدخل القيم التالية.
الإعدادات الإجراء الاشتراك حدد اشتراك Azure الخاص بك. مجموعة الموارد حدد my-container-apps. اسم الجهاز الظاهري أدخل azurevm. المنطقة حدد Central US. خيارات التوفر حدد No infrastructure redundancy required. نوع الأمان حدد قياسي. الصورة حدد Windows Server 2022 Datacenter : Azure Edition - x64 Gen2. اسم مستخدم أدخل azureuser. كلمة المرور إدخال «password». تأكيد كلمة المرور أدخل كلمة المرور مرة أخرى. المنافذ العامة الواردة حدد لا شيء. في علامة التبويب Networking ، أدخل القيم التالية.
الإعدادات الإجراء الشبكة الظاهرية حدد my-private-endpoint-vnet. الشبكة الفرعية حدد my-private-endpoint-vnet-subnet (10.0.0.0/23). عنوان IP عام حدد لا شيء. المجموعة الأمنية للشبكة NIC حدد خيارات متقدمة. حدد "استعراض + إنشاء".
حدد إنشاء.
تعيين متغيرات البيئة
تعيين متغيرات البيئة التالية.
VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"
إنشاء جهاز ظاهري (VM)
قم بتشغيل الأمر التالي.
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Win2022Datacenter \
--public-ip-address "" \
--vnet-name $VNET_NAME \
--subnet $SUBNET_NAME \
--admin-username $VM_ADMIN_USERNAME
بعد تشغيل هذا الأمر، تتم مطالبتك بكلمة مرور مسؤول لجهازك الظاهري.
يجب أن يتراوح طول اسم مستخدم المسؤول بين حرف و20 حرفا.
تحتوي كلمة مرور المسؤول على المتطلبات التالية:
- يجب أن يتراوح طولها بين 12 و123 حرفا.
- يجب أن يكون 3 مما يلي: حرف حالة أدنى وحرف أحرف علوي و1 رقم وحرف خاص.
اختبار الاتصال
تَسجيل الدخول إلى مدخل Microsoft Azure.
ابحث عن الجهاز الظاهري الذي أنشأته في شريط البحث العلوي وحدده من نتائج البحث.
في صفحة Overview للجهاز الظاهري، حدد Connect، ثم حدد Connect via Bastion.
في صفحة Bastion ، حدد Deploy Bastion.
تعيين اسم المستخدم وكلمة مرور الجهاز الظاهري إلى اسم المستخدم وكلمة المرور التي استخدمتها عند إنشاء الجهاز الظاهري.
حدد اتصال.
بعد الاتصال، قم بتشغيل PowerShell في الجهاز الظاهري.
في PowerShell، قم بتشغيل الأمر التالي. استبدل العناصر النائبة <> بالقيم الخاصة بك.
nslookup <CONTAINER_APP_ENDPOINT>
الإخراج مشابه للمثال التالي، مع استبدال القيم الخاصة بك PLACEHOLDERS<>.
Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: <ENVIRONMENT_DEFAULT_DOMAIN>.privatelink.<LOCATION>.azurecontainerapps.io Address: 10.0.0.4 Aliases: <CONTAINER_APP_ENDPOINT>
افتح مستعرضا في الجهاز الظاهري.
استعرض للوصول إلى نقطة نهاية تطبيق الحاوية. ترى الإخراج لصورة تطبيق حاوية التشغيل السريع.
تنظيف الموارد
إذا كنت لن تستمر في استخدام هذا التطبيق، يمكنك إزالة مجموعة موارد my-container-apps . يؤدي هذا إلى حذف مثيل Azure Container Apps وجميع الخدمات المقترنة.
تنبيه
يحذف الأمر التالي مجموعة الموارد المحددة وجميع الموارد المضمنة فيها. إذا كانت الموارد خارج نطاق هذا الدليل موجودة في مجموعة الموارد المحددة، حذفها أيضا.
az group delete --name $RESOURCE_GROUP