مشاركة عبر


إنشاء مجموعة Azure Kubernetes Service (AKS) معزولة للشبكة (معاينة)

عادة ما يكون لدى المؤسسات متطلبات أمان وتوافق صارمة لتنظيم حركة مرور شبكة الخروج (الصادرة) من نظام مجموعة للقضاء على مخاطر تسرب البيانات. بشكل افتراضي، تحتوي مجموعات خدمة Azure Kubernetes (AKS) على وصول غير مقيد إلى الإنترنت الصادر. يسمح هذا المستوى من الوصول إلى الشبكة للعقد والخدمات التي تقوم بتشغيلها بالوصول إلى الموارد الخارجية حسب الحاجة. إذا كنت ترغب في تقييد حركة الخروج، يجب أن يكون هناك عدد محدود من المنافذ والعناوين متاحة للحفاظ على مهام صيانة نظام المجموعة الصحي.

أحد الحلول لتأمين العناوين الصادرة هو استخدام جهاز جدار حماية يمكنه التحكم في نسبة استخدام الشبكة الصادرة استنادا إلى أسماء المجالات.

حل آخر، نظام مجموعة AKS معزولة للشبكة (معاينة)، يبسط إعداد القيود الصادرة لنظام مجموعة خارج الصندوق. تقلل مجموعة AKS المعزولة للشبكة من مخاطر تسرب البيانات أو التعرض غير المقصود لنقاط النهاية العامة للمجموعة.

هام

تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:

قبل البدء

  • اقرأ النظرة العامة المفاهيمية لهذه الميزة، والتي توفر شرحا لكيفية عمل المجموعات المعزولة للشبكة. مقالة النظرة العامة أيضا:
    • يشرح طريقتي الوصول، ACR المدارة بواسطة AKS أو BYO ACR، يمكنك الاختيار من بينها في هذه المقالة.
    • توضح هذه المقالة القيود الحالية.
  • تتطلب هذه المقالة الإصدار 2.63.0 أو أحدث من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، فإن أحدث إصدار مثبت بالفعل هناك.

  • aks-preview قم بتثبيت إصدار ملحق Azure CLI 9.0.0b2 أو أحدث.

    • إذا لم يكن لديك aks-preview الملحق بالفعل، فقم بتثبيته باستخدام az extension add الأمر .

      az extension add --name aks-preview
      
    • إذا كان لديك aks-preview الملحق بالفعل، فقم بتحديثه للتأكد من أن لديك أحدث إصدار باستخدام az extension update الأمر .

      az extension update --name aks-preview
      
  • تسجيل علامة الميزة NetworkIsolatedClusterPreview باستخدام الأمر az feature register .

    az feature register --namespace Microsoft.ContainerService --name NetworkIsolatedClusterPreview
    

    تحقق من حالة التسجيل باستخدام الأمر az feature show . يستغرق الأمر بضع دقائق حتى تظهر الحالة مسجل:

    az feature show --namespace Microsoft.ContainerService --name NetworkIsolatedClusterPreview
    

    إشعار

    إذا اخترت إنشاء نظام مجموعة معزولة للشبكة مع تكوين تكامل الشبكة الظاهرية لخادم API للوصول الخاص لخادم واجهة برمجة التطبيقات، فأنت بحاجة إلى تكرار الخطوات المذكورة أعلاه لتسجيل EnableAPIServerVnetIntegrationPreview علامة الميزة أيضا. عندما تعكس الحالة Registered، قم بتحديث تسجيل Microsoft.ContainerService موفري الموارد و Microsoft.ContainerRegistry باستخدام الأمر az provider register :

     az provider register --namespace Microsoft.ContainerService
     az provider register --namespace Microsoft.ContainerRegistry
    
  • إذا كنت تختار الخيار إحضار سجل حاويات Azure (ACR) الخاص بك (BYO)، فأنت بحاجة إلى التأكد من أن ACR يفي بالمتطلبات التالية:

  • (اختياري) إذا كنت تريد استخدام أي ميزة AKS اختيارية أو وظيفة إضافية تتطلب الوصول إلى الشبكة الصادرة، يحتوي هذا المستند على المتطلبات الصادرة لكل ميزة. أيضا، يقوم هذا المستند بتعداد الميزات أو الوظائف الإضافية التي تدعم تكامل الارتباط الخاص للاتصال الآمن من داخل الشبكة الظاهرية لنظام المجموعة. إذا لم يكن تكامل الارتباط الخاص متوفرا لأي من هذه الميزات، فيمكن إعداد نظام المجموعة مع جدول توجيه معرف من قبل المستخدم وجدار حماية Azure استنادا إلى قواعد الشبكة وقواعد التطبيق المطلوبة لتلك الميزة.

إشعار

ملحقات نظام مجموعة AKS التالية غير مدعومة حتى الآن على أنظمة المجموعات المعزولة للشبكة:

نشر مجموعة شبكة معزولة باستخدام ACR المدار بواسطة AKS

تقوم AKS بإنشاء مورد ACR وإدارته وتسويةه في هذا الخيار. لا تحتاج إلى تعيين أي أذونات أو إدارة ACR. تدير AKS قواعد ذاكرة التخزين المؤقت والارتباط الخاص ونقطة النهاية الخاصة المستخدمة في نظام المجموعة المعزولة للشبكة.

إنشاء مجموعة معزولة للشبكة

عند إنشاء مجموعة AKS معزولة للشبكة، يمكنك اختيار أحد أوضاع نظام المجموعة الخاصة التالية - الارتباط الخاص أو تكامل الشبكة الظاهرية لخادم API.

بغض النظر عن الوضع الذي تحدده، يمكنك تعيين --bootstrap-artifact-source المعلمات و --outbound-type .

--bootstrap-artifact-source يمكن تعيينها على إما Direct أو Cache المقابلة لاستخدام MCR المباشر (شبكة NOT معزولة) وACR الخاص (شبكة معزولة) لسحب الصور على التوالي.

--outbound-type parameter يمكن تعيين إلى إما none أو block. إذا تم تعيين النوع الصادر إلى none، فلن يقوم AKS بإعداد أي اتصالات صادرة لنظام المجموعة، مما يسمح للمستخدم بتكوينها بنفسه. إذا تم تعيين النوع الصادر إلى حظر، حظر كافة الاتصالات الصادرة.

قم بإنشاء شبكة اتصال خاصة قائمة على الارتباط معزولة لنظام مجموعة AKS عن طريق تشغيل الأمر az aks create مع --bootstrap-artifact-source--enable-private-clusterالمعلمات و و--outbound-type.

az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}   --kubernetes-version 1.30.3 --bootstrap-artifact-source Cache --outbound-type none  --network-plugin azure --enable-private-cluster

تكامل الشبكة الظاهرية لخادم API

قم بإنشاء مجموعة AKS معزولة للشبكة تم تكوينها باستخدام API Server VNet Integration عن طريق تشغيل الأمر az aks create مع --enable-apiserver-vnet-integration --bootstrap-artifact-source--enable-private-clusterالمعلمات و و.--outbound-type

az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --bootstrap-artifact-source Cache --outbound-type none --network-plugin azure --enable-private-cluster --enable-apiserver-vnet-integration

تحديث نظام مجموعة AKS موجود إلى نوع شبكة معزول

إذا كنت تفضل تمكين عزل الشبكة على مجموعة AKS موجودة بدلا من إنشاء نظام مجموعة جديد، فاستخدم الأمر az aks update .

az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --outbound-type none

بعد تمكين الميزة، يمكن لأي عقد تمت إضافتها حديثا التمهيد بنجاح دون الخروج. عند تمكين عزل الشبكة على مجموعة موجودة، ضع في اعتبارك أنك بحاجة إلى إعادة تعيين جميع العقد الموجودة يدويا.

az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only

هام

تذكر إعادة تعيين تجمعات عقدة نظام المجموعة بعد تمكين وضع عزل الشبكة لنظام مجموعة موجود. وإلا، لن تسري الميزة لنظام المجموعة.

نشر مجموعة شبكة معزولة مع إحضار ACR الخاص بك

يدعم AKS إحضار ACR (BYO) الخاص بك. لدعم سيناريو BYO ACR، يجب عليك تكوين نقطة نهاية خاصة ACR ومنطقة DNS خاصة قبل إنشاء نظام مجموعة AKS.

توضح الخطوات التالية كيفية إعداد هذه الموارد:

  • شبكة ظاهرية مخصصة وشبكات فرعية ل AKS و ACR.
  • ACR وقاعدة ذاكرة التخزين المؤقت ACR ونقطة النهاية الخاصة ومنطقة DNS الخاصة.
  • هوية وحدة التحكم المخصصة وهوية kubelet.

الخطوة 1: إنشاء الشبكة الظاهرية والشبكات الفرعية

يجب أن يكون الوصول الصادر الافتراضي للشبكة الفرعية AKS خطأ.

az group create --name ${RESOURCE_GROUP} --location ${LOCATION}

az network vnet create  --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --address-prefixes 192.168.0.0/16

az network vnet subnet create --name ${AKS_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.1.0/24 --default-outbound-access false

SUBNET_ID=$(az network vnet subnet show --name ${AKS_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' --output tsv)

az network vnet subnet create --name ${ACR_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.2.0/24 --private-endpoint-network-policies Disabled

الخطوة 2: إنشاء ACR وتمكين ذاكرة التخزين المؤقت للبيانات الاصطناعية

  1. إنشاء ACR مع الارتباط الخاص والوصول إلى السحب المجهول.

    az acr create --resource-group ${RESOURCE_GROUP} --name ${REGISTRY_NAME} --sku Premium --public-network-enabled false
    
    az acr update --resource-group ${RESOURCE_GROUP} --name ${REGISTRY_NAME} --anonymous-pull-enabled true
    
    REGISTRY_ID=$(az acr show --name ${REGISTRY_NAME} -g ${RESOURCE_GROUP}  --query 'id' --output tsv)
    
  2. إنشاء قاعدة ذاكرة التخزين المؤقت ACR للسماح للمستخدمين بتخزين صور حاوية MCR مؤقتا في ACR الجديد.

    az acr cache create -n acr-cache-rule -r ${REGISTRY_NAME} -g ${RESOURCE_GROUP} --source-repo "mcr.microsoft.com/*" --target-repo "*"
    

الخطوة 3: إنشاء نقطة نهاية خاصة ل ACR

az network private-endpoint create --name myPrivateEndpoint --resource-group ${RESOURCE_GROUP} --vnet-name ${VNET_NAME} --subnet ${ACR_SUBNET_NAME} --private-connection-resource-id ${REGISTRY_ID} --group-id registry --connection-name myConnection

NETWORK_INTERFACE_ID=$(az network private-endpoint show --name myPrivateEndpoint --resource-group ${RESOURCE_GROUP} --query 'networkInterfaces[0].id' --output tsv)

REGISTRY_PRIVATE_IP=$(az network nic show --ids ${NETWORK_INTERFACE_ID} --query "ipConfigurations[?privateLinkConnectionProperties.requiredMemberName=='registry'].privateIPAddress" --output tsv)

DATA_ENDPOINT_PRIVATE_IP=$(az network nic show --ids ${NETWORK_INTERFACE_ID} --query "ipConfigurations[?privateLinkConnectionProperties.requiredMemberName=='registry_data_$LOCATION'].privateIPAddress" --output tsv)

الخطوة 4: إنشاء منطقة DNS خاصة وإضافة سجلات

إنشاء منطقة DNS خاصة باسم privatelink.azurecr.io. أضف سجلات نقطة {REGISTRY_NAME}.azurecr.ioنهاية REST للتسجيل ونقطة {REGISTRY_NAME}.{REGISTRY_LOCATION}.data.azurecr.ioنهاية بيانات السجل .

az network private-dns zone create --resource-group ${RESOURCE_GROUP} --name "privatelink.azurecr.io"

az network private-dns link vnet create --resource-group ${RESOURCE_GROUP} --zone-name "privatelink.azurecr.io" --name MyDNSLink --virtual-network ${VNET_NAME} --registration-enabled false

az network private-dns record-set a create --name ${REGISTRY_NAME} --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP}

az network private-dns record-set a add-record --record-set-name ${REGISTRY_NAME} --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP} --ipv4-address ${REGISTRY_PRIVATE_IP}

az network private-dns record-set a create --name ${REGISTRY_NAME}.${LOCATION}.data --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP}

az network private-dns record-set a add-record --record-set-name ${REGISTRY_NAME}.${LOCATION}.data --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP} --ipv4-address ${DATA_ENDPOINT_PRIVATE_IP}

الخطوة 5: إنشاء وحدة التحكم وهويات kubelet

هوية وحدة التحكم

az identity create --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP}

CLUSTER_IDENTITY_RESOURCE_ID=$(az identity show --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' -o tsv)

CLUSTER_IDENTITY_PRINCIPAL_ID=$(az identity show --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'principalId' -o tsv)

هوية Kubelet

az identity create --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP}

KUBELET_IDENTITY_RESOURCE_ID=$(az identity show --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' -o tsv)

KUBELET_IDENTITY_PRINCIPAL_ID=$(az identity show --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'principalId' -o tsv)

منح أذونات AcrPull لهوية Kubelet

az role assignment create --role AcrPull --scope ${REGISTRY_ID} --assignee-object-id ${KUBELET_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal

بعد تكوين هذه الموارد، يمكنك المتابعة لإنشاء مجموعة AKS المعزولة للشبكة باستخدام BYO ACR.

الخطوة 6: إنشاء مجموعة شبكة معزولة باستخدام BYO ACR

عند إنشاء مجموعة AKS معزولة للشبكة، يمكنك اختيار أحد أوضاع نظام المجموعة الخاصة التالية - الارتباط الخاص أو تكامل الشبكة الظاهرية لخادم API.

بغض النظر عن الوضع الذي تحدده، يمكنك تعيين --bootstrap-artifact-source المعلمات و --outbound-type .

--bootstrap-artifact-source يمكن تعيينها على إما Direct أو Cache المقابلة لاستخدام MCR المباشر (شبكة NOT معزولة) وACR الخاص (شبكة معزولة) لسحب الصور على التوالي.

--outbound-type parameter يمكن تعيين إلى إما none أو block. إذا تم تعيين النوع الصادر إلى none، فلن يقوم AKS بإعداد أي اتصالات صادرة لنظام المجموعة، مما يسمح للمستخدم بتكوينها بنفسه. إذا تم تعيين النوع الصادر إلى حظر، حظر كافة الاتصالات الصادرة.

إنشاء شبكة شبكة خاصة قائمة على الارتباط معزولة تصل إلى ACR الخاص بك عن طريق تشغيل الأمر az aks create مع المعلمات المطلوبة.

az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --vnet-subnet-id ${SUBNET_ID} --assign-identity ${CLUSTER_IDENTITY_RESOURCE_ID} --assign-kubelet-identity ${KUBELET_IDENTITY_RESOURCE_ID} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none --network-plugin azure --enable-private-cluster

تكامل الشبكة الظاهرية لخادم API

بالنسبة لمجموعة شبكة معزولة مع تكامل VNet لخادم API، قم أولا بإنشاء شبكة فرعية وتعيين الدور الصحيح مع الأوامر التالية:

az network vnet subnet create --name ${APISERVER_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.3.0/24

export APISERVER_SUBNET_ID=$(az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name ${VNET_NAME} --name ${APISERVER_SUBNET_NAME} --query id -o tsv)
az role assignment create --scope ${APISERVER_SUBNET_ID} --role "Network Contributor" --assignee-object-id ${CLUSTER_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal

قم بإنشاء مجموعة AKS معزولة للشبكة تم تكوينها باستخدام API Server VNet Integration والوصول إلى ACR الخاص بك عن طريق تشغيل الأمر az aks create مع المعلمات المطلوبة.

az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --vnet-subnet-id ${SUBNET_ID} --assign-identity ${CLUSTER_IDENTITY_RESOURCE_ID} --assign-kubelet-identity ${KUBELET_IDENTITY_RESOURCE_ID} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none --network-plugin azure --enable-apiserver-vnet-integration --apiserver-subnet-id ${APISERVER_SUBNET_ID}

تحديث نظام مجموعة AKS موجود

إذا كنت تفضل تمكين عزل الشبكة على مجموعة AKS موجودة بدلا من إنشاء نظام مجموعة جديد، فاستخدم الأمر az aks update .

عند إنشاء نقطة النهاية الخاصة ومنطقة DNS الخاصة ل BYO ACR، استخدم الشبكة الظاهرية الحالية والشبكات الفرعية لمجموعة AKS الموجودة. عند تعيين إذن AcrPull إلى هوية kubelet، استخدم هوية kubelet الموجودة لمجموعة AKS الموجودة.

لتمكين ميزة شبكة الاتصال المعزولة على مجموعة AKS موجودة، استخدم الأمر التالي:

az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none

بعد تمكين ميزة نظام المجموعة المعزولة للشبكة، يمكن للعقد في تجمع العقد المضاف حديثا التمهيد بنجاح دون الخروج. يجب إعادة تعيين تجمعات العقد الموجودة بحيث يمكن للعقدة التي تم تغيير حجمها حديثا التمهيد بنجاح. عند تمكين الميزة على نظام مجموعة موجود، تحتاج إلى إعادة تعيين كافة العقد الموجودة يدويا.

az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only

هام

تذكر إعادة تعيين تجمعات عقدة نظام المجموعة بعد تمكين ميزة نظام المجموعة المعزولة للشبكة. وإلا، لن تسري الميزة لنظام المجموعة.

تحديث معرف ACR الخاص بك

من الممكن تحديث ACR الخاص المستخدم مع مجموعة AKS المعزولة للشبكة. لتعريف معرف مورد ACR، استخدم az aks show الأمر .

az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}

يتم تنفيذ تحديث معرف ACR عن طريق تشغيل az aks update الأمر مع --bootstrap-artifact-source المعلمات و --bootstrap-container-registry-resource-id .

az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id <New BYO ACR resource ID>

عند تحديث معرف ACR على نظام مجموعة موجود، تحتاج إلى إعادة تعيين كافة العقد الموجودة يدويا.

az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only

هام

تذكر إعادة تعيين تجمعات عقدة نظام المجموعة بعد تمكين ميزة نظام المجموعة المعزولة للشبكة. وإلا، لن تسري الميزة لنظام المجموعة.

التحقق من تمكين نظام المجموعة المعزولة للشبكة

للتحقق من تمكين ميزة نظام المجموعة المعزولة للشبكة، استخدم الأمر "az aks show "

az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}

يظهر الإخراج التالي أن الميزة ممكنة، استنادا إلى قيم الخاصية outboundType (بلا أو محظورة) والخاصية artifactSource (المخزنة مؤقتا).

"kubernetesVersion": "1.30.3",
"name": "myAKSCluster"
"type": "Microsoft.ContainerService/ManagedClusters"
"properties": {
  ...
  "networkProfile": {
    ...
    "outboundType": "none",
    ...
  },
  ...
  "bootstrapProfile": {
    "artifactSource": "Cache",
    "containerRegistryId": "/subscriptions/my-subscription-id/my-node-resource-group-name/providers/Microsoft.ContainerRegistry/registries/my-registry-name"
  },
  ...
}

تعطيل نظام المجموعة المعزولة للشبكة

قم بتعطيل ميزة نظام المجموعة المعزولة للشبكة az aks update عن طريق تشغيل الأمر مع --bootstrap-artifact-source المعلمات و --outbound-type .

az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Direct --outbound-type LoadBalancer

عند تعطيل الميزة على نظام مجموعة موجود، تحتاج إلى إعادة تعيين كافة العقد الموجودة يدويا.

az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only

هام

تذكر إعادة تعيين تجمعات عقدة نظام المجموعة بعد تعطيل ميزة نظام المجموعة المعزولة للشبكة. وإلا، لن تسري الميزة لنظام المجموعة.

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

في هذه المقالة، تعرف على المنافذ والعناوين التي تمكنك إذا كنت تريد تقييد حركة مرور الخروج عن نظام المجموعة.

إذا كنت ترغب في إعداد تكوين التقييد الصادر باستخدام جدار حماية Azure، فقم بزيارة التحكم في حركة الخروج باستخدام جدار حماية Azure في AKS.

إذا كنت ترغب في تقييد كيفية اتصال pods فيما بينها وقيود نسبة استخدام الشبكة بين الشرق والغرب داخل نظام المجموعة، فشاهد تأمين نسبة استخدام الشبكة بين pods باستخدام نهج الشبكة في AKS.