مشاركة عبر


Create a private خدمة Azure Kubernetes ‏(AKS) cluster

تساعدك هذه المقالة في نشر عنقود AKS خاص قائم على الروابط باستخدام Azure CLI أو Terraform. إذا كنت مهتما بإنشاء عنقود AKS بدون رابط أو نفق خاص مطلوب، راجع إنشاء عنقود خدمة Azure Kubernetes ‏(AKS) مع تكامل API Server VNet.

نظرة عامة على التجمعات الخاصة في AKS

في مجموعة خاصة، يحتوي مستوى التحكم أو خادم API على عناوين IP داخلية تم تحديدها في مستند RFC 1918 - تخصيص العنوان للإنترنت الخاص. باستخدام نظام مجموعة خاص، يمكنك التأكد من بقاء نسبة استخدام الشبكة بين خادم API وتجمعات العقد الخاصة بك على الشبكة الخاصة فقط.

مستوى التحكم أو خادم API موجود في مجموعة موارد Azure تديرها AKS، ومجموعة العقد أو مجموعة العقد الخاصة بك ضمن مجموعة الموارد الخاصة بك. يمكن للخادم والمجموعة أو تجمع العقد التواصل مع بعضهما البعض من خلال خدمة Azure Private Link في الشبكة الافتراضية لخادم API ونقطة نهاية خاصة مكشوفة على الشبكة الفرعية لعنقود AKS الخاص بك.

عندما تنشئ عنقود AKS خاص، ينشئ AKS أسماء نطاقات خاصة وعامة مؤهلة بالكامل (FQDNs) مع مناطق DNS مقابلة بشكل افتراضي. للحصول على خيارات تكوين DNS التفصيلية، انظر تكوين منطقة DNS خاصة، أو منطقة فرعية خاصة DNS، أو نطاق فرعي مخصص.

توافر المناطق

تتوفر مجموعات خاصة في المناطق العامة، Azure Government، و Microsoft Azure تديرها مناطق 21Vianet حيث يدعم AKS.

هام

سيتم إيقاف جميع ميزات Microsoft Defender for Cloud رسميا في منطقة Azure في الصين في 18 أغسطس 2026. بسبب هذا التقاعد القادم، لم يعد بإمكان عملاء Azure في الصين ضم اشتراكات جديدة للخدمة. الاشتراك الجديد هو أي اشتراك لم يكن قد تم إدماجه بالفعل في خدمة Microsoft Defender for Cloud قبل 18 أغسطس 2025، وهو تاريخ إعلان التقاعد. لمزيد من المعلومات حول التقاعد، انظر Microsoft Defender for Cloud الإهدار في Microsoft Azure Eded by 21Vianet Announcement.

يجب على العملاء العمل مع ممثلي حساباتهم في Microsoft Azure التي تديرها 21Vianet لتقييم تأثير هذا التقاعد على عملياتهم الخاصة.

المتطلبات المسبقة لمجموعات AKS الخاصة

  • اشتراك نشط في Azure. إذا لم يكن لديك اشتراك Azure، أنشئ حسابا مجاني قبل أن تبدأ.

  • قم بتعيين سياق اشتراكك باستخدام az account set الأمر. على سبيل المثال:

    az account set --subscription "00000000-0000-0000-0000-000000000000"
    
  • Azure CLI version 2.28.0 أو أعلى. ابحث عن الإصدار الخاص بك باستخدام الأمر az --version . إذا كنت بحاجة إلى تثبيت أو ترقية، راجع تثبيت Azure CLI.

  • إذا كنت تستخدم Azure Resource Manager (ARM) أو واجهة برمجة تطبيقات REST Azure، يجب أن تكون نسخة واجهة برمجة التطبيقات AKS 2021-05-01 أو أعلى.

  • لاستخدام خادم DNS مخصص، أضف عنوان IP العام Azure 168.63.129.16 كخادم DNS للأعلى في خادم DNS مخصص، وتأكد من إضافة عنوان IP عام هذا كخادم DNS first. لمزيد من المعلومات حول عنوان Azure IP، راجع ما هو عنوان IP 168.63.129.16؟

    • يجب أن تكون منطقة DNS في العنقود هي ما تعيد إرساله إلى 168.63.129.16. يمكنك العثور على مزيد من المعلومات حول أسماء المناطق في Azure خدمات DNS zon configuration.
  • يمكن أن يكون وضع العنقود الخاص ب "عروسك AKS" المفعلة مع تكامل خادم API VNet مفعلا. لمزيد من المعلومات، راجع تفعيل أو تعطيل وضع العنقود الخاص على مجموعة موجودة مع تكامل API Server VNet.

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

  • تم تركيب Kubectl . يمكنك تثبيته محليا باستخدام الأمر az aks install-cli .

  • تم تثبيت Terraform محليا. للحصول على تعليمات التثبيت، راجع تثبيت Terraform.

هام

ابتداء من 30 نوفمبر 2025، لم يعد خدمة Azure Kubernetes ‏(AKS) يدعم أو يوفر تحديثات الأمان ل Azure Linux 2.0. صورة عقدة لينكس 2.0 Azure متجمدة عند إصدار 202512.06.0. ابتداء من 31 مارس 2026، سيتم إزالة صور العقد، ولن تتمكن من توسيع مجموعات العقد الخاصة بك. انتقل إلى نسخة مدعومة Azure لينكس عن طريق ترقية مجموعات العقد إلى نسخة Kubernetes مدعومة أو الانتقال إلى osSku AzureLinux3. لمزيد من المعلومات، راجع Retirement GitHub issue وتحديث Azure إعلان التقاعد. للبقاء على اطلاع بالإعلانات والتحديثات، تابع ملاحظات الإصدار AKS.

القيود

  • نطاقات IP المصرح بها تنطبق فقط على خادم واجهة برمجة التطبيقات العامة. لا يمكنك تطبيق هذه النطاقات على نقطة نهاية خادم API الخاص.
  • Azure Private Link قيود الخدمة تنطبق على المجموعات الخاصة.
  • لا يوجد دعم للوكلاء المستضافين Azure DevOps Microsoft مع مجموعات خاصة. ضع في اعتبارك استخدام عوامل مستضافة ذاتيا.
  • حذف أو تعديل نقطة النهاية الخاصة في شبكة العميل الفرعية يؤدي إلى توقف العنقود عن العمل.
  • خدمة Azure Private Link مدعومة فقط على Standard موازن تحميل Azure. لا يدعم Basic موازن تحميل Azure.

المركز وتحدثت مع DNS مخصص لمجموعات AKS الخاصة

تستخدم <بنى c0>Hub وSpokes عادة لنشر الشبكات في Azure. في العديد من هذه النشرات، يتم تكوين إعدادات DNS في VNets المنفصلة للإشارة إلى محول DNS مركزي للسماح بحل DNS على الموقع المحلي وعلى Azure.

يوضح المخطط التالي بنية محور وكلوب لمجموعة AKS خاصة مع DNS مخصص:

مجموعة أجهزة الكمبيوتر الخاصة وhub and spoke

  • عند إنشاء عنقود خاص، يتم إنشاء نقطة نهاية خاصة (1) ومنطقة DNS خاصة (2) في مجموعة الموارد المدارة بواسطة العنقود بشكل افتراضي. يستخدم نظام المجموعة سجلا A في المنطقة الخاصة لحل IP لنقطة النهاية الخاصة للاتصال بخادم API.
  • ترتبط منطقة DNS الخاصة فقط ب VNet الذي ترتبط به عقد العنقود (3)، مما يعني أن نقطة النهاية الخاصة لا يمكن حلها إلا بواسطة المضيفين في ذلك ال VNet المرتبط. في الحالات التي لا يتم فيها تكوين DNS مخصص على VNet (الافتراضي)، يعمل بدون مشاكل حيث يشير المضيفون إلى 168.63.129.16 لنظام DNS يمكنه حل السجلات في منطقة DNS الخاصة بسبب الرابط.
  • إذا احتفظت بسلوك منطقة DNS الخاصة الافتراضية، يحاول AKS ربط المنطقة مباشرة ب VNet المنطوق الذي يستضيف العنقود حتى عندما تكون المنطقة مرتبطة بالفعل ب VNet مركزي.
    • في شبكات VNet ذات الكلمة التي تستخدم خوادم DNS مخصصة، يمكن أن يفشل هذا الإجراء إذا كانت هوية العنقود المدارة تفتقر إلى مساهم الشبكة على VNet المضطرب. لمنع الفشل، اختر أحد التكوينات المدعومة التالية:
      • منطقة DNS خاصة مخصصة: وفر منطقة خاصة موجودة وقم بتعيين privateDNSZone / --private-dns-zone معرف الموارد الخاص بها. ربط تلك المنطقة ب VNet المناسب (مثل VNet المحوري) واضبطه publicDNS على false / استخدم --disable-public-fqdn.
      • DNS العام فقط: قم بتعطيل إنشاء المنطقة الخاصة عن طريق تعيين privateDNSZone / --private-dns-zone على nonepublicDNS القيمة الافتراضية (true) / لا تستخدم --disable-public-fqdn.
  • إذا كنت تستخدم جدول المسار الخاص بك (BYO) مع Kubenet وBYO DNS مع المجموعات الخاصة، فإن إنشاء المجموعات يفشل في النجاح. تحتاج إلى إقران RouteTable في مجموعة موارد العقدة بالشبكة الفرعية بعد فشل إنشاء نظام المجموعة في جعل الإنشاء ناجحا.

قيود على عناقيد AKS الخاصة مع DNS مخصص

  • الإعداد privateDNSZone / --private-dns-zone على noneوفيpublicDNS: false / --disable-public-fqdn نفس الوقت غير مدعوم.
  • لا يدعم إعادة التوجيه الشرطي المجالات الفرعية.

إنشاء مجموعة موارد

إنشاء مجموعة موارد باستخدام az group create الأمر . يمكنك أيضا استخدام مجموعة موارد موجودة لمجموعة AKS الخاصة بك.

az group create \
    --name <private-cluster-resource-group> \
    --location <location>

أنشئ عنقود AKS خاص مع شبكة أساسية افتراضية

إنشاء نظام مجموعة خاصة مع الشبكات الأساسية الافتراضية az aks create باستخدام الأمر مع العلامة --enable-private-cluster .

المعلمات الرئيسية في هذا الأمر:

  • --enable-private-cluster: يفعل وضع العنقود الخاص.
az aks create \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --generate-ssh-keys
  1. أنشئ ملفا باسم main.tf وأضف الكود التالي لتعريف نسخة Terraform وتحديد مزود Azure:

    terraform {
      required_version = ">= 1.3.0"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 4.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
      subscription_id = var.subscription_id
    }
    
  2. أضف الكود التالي إلى main.tf لإنشاء متغيرات إدخال لمعرف الاشتراك Azure، واسم مجموعة الموارد، والموقع، واسم عنقود AKS. يمكنك تعديل القيم الافتراضية حسب الحاجة.

    variable "subscription_id" {
      description = "The Azure subscription ID."
      type = string
    }
    
    variable "resource_group_name" {
      description = "The name of the resource group for the AKS cluster."
      type        = string
      default     = "rg-private-aks-basic"
    }
    
    variable "location" {
      description = "The Azure region where the resources will be created."
      type        = string
      default     = "eastus"
    }
    
    variable "aks_cluster_name" {
      description = "The name of the AKS cluster."
      type        = string
      default     = "aks-private-basic"
    }
    
  3. أضف الكود التالي إلى main.tf لإنشاء مجموعة موارد Azure:

    resource "azurerm_resource_group" "this" {
      name     = var.resource_group_name
      location = var.location
    }
    
  4. أضف الكود التالي لإنشاء main.tf عنقود AKS خاص مع شبكة أساسية:

    resource "azurerm_kubernetes_cluster" "this" {
      name                = var.aks_cluster_name
      location            = azurerm_resource_group.this.location
      resource_group_name = azurerm_resource_group.this.name
      dns_prefix          = "privatebasicaks"
    
      private_cluster_enabled = true
    
      default_node_pool {
        name       = "system"
        node_count = 1
        vm_size    = "Standard_DS2_v2"
      }
    
      identity {
        type = "SystemAssigned"
      }
    
      network_profile {
        load_balancer_sku = "standard"
        network_plugin    = "kubenet"
      }
    }
    
  5. اتبع الخطوات لتهيئة Terraform، وتنسيق والتحقق من تكوين Terraform، وإنشاء خطة تنفيذ Terraform، وتطبيق تكوين Terraform، والاتصال بعنقود AKS.

أنشئ عنقود AKS خاص مع شبكات متقدمة

أنشئ عنقودا خاصا مع شبكات متقدمة باستخدام az aks create الأمر.

المعلمات الرئيسية في هذا الأمر:

  • --enable-private-cluster: يفعل وضع العنقود الخاص.
  • --network-plugin azure: يحدد إضافة شبكة CNI Azure.
  • --vnet-subnet-id <subnet-id>: معرف الموارد لشبكة فرعية موجودة في VNet.
  • --dns-service-ip <dns-service-ip>: عنوان IP متاح ضمن نطاق عناوين خدمة Kubernetes لاستخدامه لخدمة DNS العنقودية. على سبيل المثال، 10.2.0.10.
  • --service-cidr <service-cidr>: نطاق عناوين IP لترميز CIDR يمكن من خلاله تعيين عناوين IP لمجموعة الخدمات. على سبيل المثال، 10.2.0.0/24.
az aks create \
    --resource-group <private-cluster-resource-group> \
    --name <private-cluster-name> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip <dns-service-ip> \
    --service-cidr <service-cidr> \
    --generate-ssh-keys
  1. أنشئ ملفا باسم main.tf وأضف الكود التالي لتعريف نسخة Terraform وتحديد مزود Azure:

    terraform {
      required_version = ">= 1.3.0"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 4.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
      subscription_id = var.subscription_id
    }
    
  2. أضف الكود التالي إلى main.tf لإنشاء متغيرات إدخال لمعرف الاشتراك Azure، اسم مجموعة الموارد، الموقع، اسم عنقود AKS، اسم الشبكة الافتراضية (VNet)، واسم الشبكة الفرعية. يمكنك تعديل القيم الافتراضية حسب الحاجة.

    variable "subscription_id" {
      description = "The Azure subscription ID."
      type = string
    }
    
    variable "resource_group_name" {
      description = "The name of the resource group for the AKS cluster."
      type = string
      default = "rg-private-aks-advanced"
    }
    
    variable "location" {
      description = "The Azure region where the resources will be created."
      type = string
      default = "eastus"
    }
    
    variable "aks_cluster_name" {
      description = "The name of the AKS cluster."
      type = string
      default = "aks-private-advanced"
    }
    
    variable "vnet_name" {
      description = "The name of the virtual network."
      type = string
      default = "vnet-private-aks"
    }
    
    variable "subnet_name" {
      description = "The name of the subnet used by AKS."
      type = string
      default = "snet-aks"
    }
    
  3. أضف الكود التالي إلى main.tf لإنشاء مجموعة موارد Azure، VNet، وشبكة فرعية:

    resource "azurerm_resource_group" "this" {
      name = var.resource_group_name
      location = var.location
    }
    
    resource "azurerm_virtual_network" "this" {
      name = var.vnet_name
      location = azurerm_resource_group.this.location
      resource_group_name = azurerm_resource_group.this.name
      address_space = ["10.0.0.0/8"]
    }
    
    resource "azurerm_subnet" "aks" {
      name = var.subnet_name
      resource_group_name  = azurerm_resource_group.this.name
      virtual_network_name = azurerm_virtual_network.this.name
      address_prefixes = ["10.240.0.0/16"]
    }
    
  4. أضف الكود التالي لإنشاء main.tf عنقود AKS مع شبكات متقدمة:

    resource "azurerm_kubernetes_cluster" "this" {
      name = var.aks_cluster_name
      location = azurerm_resource_group.this.location
      resource_group_name = azurerm_resource_group.this.name
      dns_prefix = "privateadvancedaks"
    
      private_cluster_enabled = true
    
      default_node_pool {
        name = "system"
        node_count = 1
        vm_size = "Standard_DS2_v2"
        vnet_subnet_id = azurerm_subnet.aks.id
      }
    
      identity {
        type = "SystemAssigned"
      }
    
      network_profile {
        load_balancer_sku = "standard"
        network_plugin = "azure"
        dns_service_ip = "10.2.0.10"
        service_cidr = "10.2.0.0/24"
      }
    }
    
  5. اتبع الخطوات لتهيئة Terraform، وتنسيق والتحقق من تكوين Terraform، وإنشاء خطة تنفيذ Terraform، وتطبيق تكوين Terraform، والاتصال بعنقود AKS.

استخدم نطاقات مخصصة مع مجموعات AKS الخاصة

إذا كنت تريد تكوين مجالات مخصصة لا يمكن حلها إلا داخليا، فشاهد استخدام المجالات المخصصة.

تعطيل FQDN عام على عنقود AKS خاص

تعطيل FQDN عام على نظام مجموعة جديد

تعطيل FQDN عام عند إنشاء مجموعة AKS خاصة باستخدام az aks create الأمر مع العلامة --disable-public-fqdn .

المعلمات الرئيسية في هذا الأمر:

  • --disable-public-fqdn: يعطل اسم النطاق العام المؤهل بالكامل (FQDN) لخادم API.
  • --assign-identity <resource-id>: يحدد الهوية المدارة التي يجب استخدامها للمجموعة.
  • --private-dns-zone [system|none]: يحدد منطقة DNS الخاصة التي يجب استخدامها للعناصرة. system هي القيمة الافتراضية عند تكوين منطقة DNS خاصة. إذا حذفت ، --private-dns-zoneفإن AKS ينشئ منطقة DNS خاصة في مجموعة موارد العقد. none يعطل إنشاء منطقة DNS خاصة.
az aks create \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --assign-identity <resource-id> \
    --private-dns-zone [system|none] \
    --disable-public-fqdn \
    --generate-ssh-keys
  1. اتبع الخطوات 1-3 في إنشاء عنقود AKS خاص مع شبكات متقدمة أو إنشاء عنقود AKS خاص مع شبكة أساسية افتراضية لإعداد تكوين Terraform وإنشاء الموارد اللازمة حسب سيناريوك. يستخدم هذا المثال شبكات متقدمة.

  2. أضف الكود التالي لإنشاء main.tf عنقود AKS خاص بهوية معينة من قبل المستخدم ويتم تعطيل FQDN العام:

    resource "azurerm_user_assigned_identity" "aks" {
      name = "id-private-aks-public-fqdn-off"
      location = azurerm_resource_group.this.location
      resource_group_name = azurerm_resource_group.this.name
    }
    resource "azurerm_kubernetes_cluster" "this" {
      name = var.aks_cluster_name
      location = azurerm_resource_group.this.location
      resource_group_name = azurerm_resource_group.this.name
      dns_prefix = "privateaks"
      private_cluster_enabled = true
      private_cluster_public_fqdn_enabled = false
    
      private_dns_zone_id = "System"
    
      default_node_pool {
        name = "system"
        node_count = 1
        vm_size = "Standard_DS2_v2"
        vnet_subnet_id = azurerm_subnet.aks.id
      }
      identity {
        type = "UserAssigned"
        identity_ids = [azurerm_user_assigned_identity.aks.id]
      }
      network_profile {
        load_balancer_sku = "standard"
        network_plugin = "azure"
        dns_service_ip = "10.2.0.10"
        service_cidr = "10.2.0.0/24"
      }
    }
    
  3. اتبع الخطوات لتهيئة Terraform، وتنسيق والتحقق من تكوين Terraform، وإنشاء خطة تنفيذ Terraform، وتطبيق تكوين Terraform، والاتصال بعنقود AKS.

تعطيل FQDN عام على مجموعة موجودة

تعطيل FQDN عام على مجموعة AKS موجودة باستخدام az aks update الأمر مع العلامة --disable-public-fqdn .

المعلمات الرئيسية في هذا الأمر:

  • --disable-public-fqdn: يعطل اسم النطاق العام المؤهل بالكامل (FQDN) لخادم API.
az aks update \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --disable-public-fqdn
  1. أضف الكود التالي إلى الكود الحالي main.tf لتعطيل FQDN العام على عنقود AKS موجود. يستخدم هذا المثال شبكات متقدمة. يمكنك تعديله ليستخدم الشبكة الأساسية الافتراضية عن طريق تغيير موارد ومعلمات Terraform ذات الصلة.

    resource "azurerm_kubernetes_cluster" "this" {
      name = var.aks_cluster_name
      location = azurerm_resource_group.this.location
      resource_group_name = azurerm_resource_group.this.name
      dns_prefix = "privateaks"
    
      private_cluster_enabled = true
      private_cluster_public_fqdn_enabled = false
      private_dns_zone_id = "System"
    
      default_node_pool {
        name = "system"
        node_count = 1
        vm_size = "Standard_DS2_v2"
        vnet_subnet_id = azurerm_subnet.aks.id
      }
    
      identity {
        type = "UserAssigned"
        identity_ids = [azurerm_user_assigned_identity.aks.id]
      }
    
      network_profile {
        load_balancer_sku = "standard"
        network_plugin = "azure"
        dns_service_ip = "10.2.0.10"
        service_cidr = "10.2.0.0/24"
      }
    }
    
  2. طبق تكوين Terraform المحدث باستخدام terraform plan أوامر و terraform apply .

    terraform plan
    terraform apply
    

خيارات التكوين لنظام DNS الخاص

يمكنك تكوين إعدادات DNS الخاصة لمجموعة AKS الخاصة باستخدام Azure CLI (مع معامل --private-dns-zone) أو قالب Azure Resource Manager (ARM) (مع خاصية privateDNSZone). يوضح الجدول التالي الخيارات المتاحة للمعامل --private-dns-zone / privateDNSZone الخاصية:

الإعدادات الوصف
system القيمة الافتراضية عند تكوين منطقة DNS خاصة. إذا حذفت ، --private-dns-zone / privateDNSZoneفإن AKS ينشئ منطقة DNS خاصة في مجموعة موارد العقد.
none إذا ضبطت --private-dns-zone / privateDNSZoneعلى none، AKS لا ينشئ منطقة DNS خاصة.
<custom-private-dns-zone-resource-id> لاستخدام هذا المعامل، تحتاج إلى إنشاء منطقة DNS خاصة بالتنسيق التالي للسحابة العالمية Azure: privatelink.<region>.azmk8s.io أو <subzone>.privatelink.<region>.azmk8s.io. تحتاج إلى معرف الموارد الخاص بمنطقة DNS الخاصة للاستخدام المستقبلي. تحتاج أيضا إلى هوية أو مدير خدمة معين من قبل المستخدم مع أدوار Private DNS مساهم المنطقة وأدوار Network Contributor. بالنسبة للعناقيد التي تستخدم تكامل خادم API VNet، تدعم منطقة DNS الخاصة تنسيق التسمية ل private.<region>.azmk8s.io أو <subzone>.private.<region>.azmk8s.io. لا يمكنك تغيير أو حذف موارد هذه الموارد بعد إنشاء العنقود، لأنها قد تسبب مشاكل في الأداء وفشل ترقية العنقود. يمكنك استخدام --fqdn-subdomain <subdomain> مع <custom-private-dns-zone-resource-id> فقط لتوفير قدرات المجال الفرعي إلى privatelink.<region>.azmk8s.io. إذا كنت تحدد منطقة فرعية، فهناك حد أقصى ل 32 حرفا للاسم <subzone> .

اعتبارات لنظام DNS الخاص

ضع في اعتبارك الاعتبارات التالية عند تكوين DNS الخاص لمجموعة AKS خاصة:

  • إذا كانت منطقة DNS الخاصة في اشتراك مختلف عن عنقود AKS، يجب عليك تسجيل مزود Microsoft.ContainerService Azure في كلا الاشتراكين.
  • إذا كان عنقود AKS الخاص بك مكونا بخدمة Active Directory الرئيسية، فإن AKS لا يدعم استخدام هوية مدارة معينة من النظام مع منطقة DNS خاصة مخصصة. يجب أن يستخدم نظام المجموعة مصادقة الهوية المدارة المعينة من قبل المستخدم.

إنشاء مجموعة AKS خاصة مع منطقة DNS خاصة

أنشئ عنقود AKS خاص مع منطقة DNS خاصة باستخدام az aks create الأمر.

المعلمات الرئيسية في هذا الأمر:

  • --enable-private-cluster: يفعل وضع العنقود الخاص.
  • --private-dns-zone [system|none]: يضبط منطقة DNS الخاصة للعناصر. system هي القيمة الافتراضية عند تكوين منطقة DNS خاصة. إذا حذفت ، --private-dns-zoneفإن AKS ينشئ منطقة DNS خاصة في مجموعة موارد العقد. none يعطل إنشاء منطقة DNS خاصة.
  • --assign-identity <resource-id>: معرف الموارد لهوية مدارة معينة من قبل المستخدم مع أدوار Private DNS مساهم المنطقة وأدوار Network Contributor.
az aks create \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --assign-identity <resource-id> \
    --private-dns-zone [system|none] \
    --generate-ssh-keys
  1. اتبع الخطوات 1-3 في إنشاء عنقود AKS خاص مع شبكات متقدمة أو إنشاء عنقود AKS خاص مع شبكة أساسية افتراضية لإعداد تكوين Terraform وإنشاء الموارد اللازمة حسب سيناريوك. يستخدم هذا المثال شبكات متقدمة.

  2. أضف الكود التالي إلى main.tf لإنشاء عنقود AKS خاص مع منطقة DNS خاصة تديرها AKS:

    resource "azurerm_kubernetes_cluster" "this" {
     name                = var.aks_cluster_name
     location            = azurerm_resource_group.this.location
     resource_group_name = azurerm_resource_group.this.name
     dns_prefix          = "aks-system-dns"
     private_cluster_enabled = true
     private_dns_zone_id     = "System"
     default_node_pool {
       name           = "system"
       node_count     = 1
       vm_size        = "Standard_DS2_v2"
       vnet_subnet_id = azurerm_subnet.aks.id
     }
     identity {
       type = "SystemAssigned"
     }
     network_profile {
       network_plugin    = "azure"
       load_balancer_sku = "standard"
       dns_service_ip    = "10.2.0.10"
       service_cidr      = "10.2.0.0/24"
     }
    }
    
  3. اتبع الخطوات لتهيئة Terraform، وتنسيق والتحقق من تكوين Terraform، وإنشاء خطة تنفيذ Terraform، وتطبيق تكوين Terraform، والاتصال بعنقود AKS.

إنشاء مجموعة AKS خاصة بدون منطقة DNS خاصة

  1. اتبع الخطوات 1-3 في إنشاء عنقود AKS خاص مع شبكات متقدمة أو إنشاء عنقود AKS خاص مع شبكة أساسية افتراضية لإعداد تكوين Terraform وإنشاء الموارد اللازمة حسب سيناريوك. يستخدم هذا المثال شبكات متقدمة.

  2. أضف الكود التالي لإنشاء main.tf عنقود AKS بدون منطقة DNS خاصة:

    resource "azurerm_kubernetes_cluster" "this" {
     name                = var.aks_cluster_name
     location            = azurerm_resource_group.this.location
     resource_group_name = azurerm_resource_group.this.name
     dns_prefix          = "aks-no-dns"
     private_cluster_enabled = true
     private_dns_zone_id     = "None"
     default_node_pool {
       name           = "system"
       node_count     = 1
       vm_size        = "Standard_DS2_v2"
       vnet_subnet_id = azurerm_subnet.aks.id
     }
     identity {
       type = "SystemAssigned"
     }
     network_profile {
       network_plugin    = "azure"
       load_balancer_sku = "standard"
       dns_service_ip    = "10.2.0.10"
       service_cidr      = "10.2.0.0/24"
     }
    }
    
  3. اتبع الخطوات لتهيئة Terraform، وتنسيق والتحقق من تكوين Terraform، وإنشاء خطة تنفيذ Terraform، وتطبيق تكوين Terraform، والاتصال بعنقود AKS.

إنشاء مجموعة AKS خاصة مع منطقة DNS خاصة مخصصة أو منطقة فرعية DNS خاصة

أنشئ عنقود AKS خاص باستخدام منطقة DNS خاصة مخصصة أو منطقة فرعية باستخدام الأمر az aks create .

المعلمات الرئيسية في هذا الأمر:

  • --enable-private-cluster: يفعل وضع العنقود الخاص.
  • --private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>]: معرف الموارد لمنطقة DNS خاصة أو منطقة فرعية موجودة بالصيغة التالية للسحابة العالمية Azure: privatelink.<region>.azmk8s.io أو <subzone>.privatelink.<region>.azmk8s.io.
  • --assign-identity <resource-id>: معرف الموارد لهوية مدارة معينة من قبل المستخدم مع أدوار Private DNS مساهم المنطقة وأدوار Network Contributor.
az aks create \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --assign-identity <resource-id> \
    --private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>] \
    --generate-ssh-keys

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

لتكوينات DNS المخصصة، يجب استخدام هوية مدارة معينة من قبل المستخدم مع أدوار Private DNS Zone Contributor وأدوار Network Contributor.

  1. اتبع الخطوات 1-3 في إنشاء عنقود AKS خاص مع شبكات متقدمة أو إنشاء عنقود AKS خاص مع شبكة أساسية افتراضية لإعداد تكوين Terraform وإنشاء الموارد اللازمة حسب سيناريوك. يستخدم هذا المثال شبكات متقدمة.

  2. أضف الكود إلى main.tf لإنشاء مجموعة AKS خاصة مع منطقة DNS خاصة أو منطقة فرعية مخصصة:

    resource "azurerm_user_assigned_identity" "aks" {
     name                = "aks-custom-dns-id"
     location            = azurerm_resource_group.this.location
     resource_group_name = azurerm_resource_group.this.name
    }
    resource "azurerm_private_dns_zone" "aks" {
     name                = "privatelink.eastus.azmk8s.io"
     resource_group_name = azurerm_resource_group.this.name
    }
    resource "azurerm_private_dns_zone_virtual_network_link" "link" {
     name                  = "aks-dns-link"
     resource_group_name   = azurerm_resource_group.this.name
     private_dns_zone_name = azurerm_private_dns_zone.aks.name
     virtual_network_id    = azurerm_virtual_network.this.id
    }
    resource "azurerm_role_assignment" "dns" {
     scope                = azurerm_private_dns_zone.aks.id
     role_definition_name = "Private DNS Zone Contributor"
     principal_id         = azurerm_user_assigned_identity.aks.principal_id
    }
    resource "azurerm_role_assignment" "network" {
     scope                = azurerm_virtual_network.this.id
     role_definition_name = "Network Contributor"
     principal_id         = azurerm_user_assigned_identity.aks.principal_id
    }
    resource "azurerm_kubernetes_cluster" "this" {
     name                = var.aks_cluster_name
     location            = azurerm_resource_group.this.location
     resource_group_name = azurerm_resource_group.this.name
     dns_prefix          = "aks-custom-dns"
     private_cluster_enabled = true
     private_dns_zone_id     = azurerm_private_dns_zone.aks.id
     default_node_pool {
       name           = "system"
       node_count     = 1
       vm_size        = "Standard_DS2_v2"
       vnet_subnet_id = azurerm_subnet.aks.id
     }
     identity {
       type         = "UserAssigned"
       identity_ids = [azurerm_user_assigned_identity.aks.id]
     }
     network_profile {
       network_plugin    = "azure"
       load_balancer_sku = "standard"
       dns_service_ip    = "10.2.0.10"
       service_cidr      = "10.2.0.0/24"
     }
     depends_on = [
       azurerm_role_assignment.dns,
       azurerm_role_assignment.network
     ]
    }
    
  3. اتبع الخطوات لتهيئة Terraform، وتنسيق والتحقق من تكوين Terraform، وإنشاء خطة تنفيذ Terraform، وتطبيق تكوين Terraform، والاتصال بعنقود AKS.

إنشاء مجموعة AKS خاصة مع منطقة DNS خاصة مخصصة ومجال فرعي مخصص

أنشئ عنقود AKS خاص مع منطقة DNS خاصة ونطاق فرعي مخصص باستخدام az aks create الأمر.

المعلمات الرئيسية في هذا الأمر:

  • --enable-private-cluster: يفعل وضع العنقود الخاص.
  • --private-dns-zone <custom-private-dns-zone-resource-id>: معرف الموارد لمنطقة DNS خاصة موجودة بالتنسيق التالي للسحابة العالمية Azure: privatelink.<region>.azmk8s.io.
  • --fqdn-subdomain <subdomain>: النطاق الفرعي المستخدم لشبكة FQDN العنقودية داخل منطقة DNS الخاصة المخصصة.
  • --assign-identity <resource-id>: معرف الموارد لهوية مدارة معينة من قبل المستخدم مع أدوار Private DNS مساهم المنطقة وأدوار Network Contributor.
az aks create \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --assign-identity <resource-id> \
    --private-dns-zone <custom-private-dns-zone-resource-id> \
    --fqdn-subdomain <subdomain> \
    --generate-ssh-keys
  1. اتبع الخطوات 1-3 في إنشاء عنقود AKS خاص مع شبكات متقدمة أو إنشاء عنقود AKS خاص مع شبكة أساسية افتراضية لإعداد تكوين Terraform وإنشاء الموارد اللازمة حسب سيناريوك. يستخدم هذا المثال شبكات متقدمة.

  2. أضف الكود التالي لإنشاء main.tf عنقود AKS خاص مع منطقة DNS خاصة ونطاق فرعي مخصص:

    resource "azurerm_kubernetes_cluster" "this" {
     name                = var.aks_cluster_name
     location            = azurerm_resource_group.this.location
     resource_group_name = azurerm_resource_group.this.name
     dns_prefix          = "aks-subdomain"
     private_cluster_enabled = true
     private_dns_zone_id     = azurerm_private_dns_zone.aks.id
     fqdn_subdomain          = "team1"
     default_node_pool {
       name           = "system"
       node_count     = 1
       vm_size        = "Standard_DS2_v2"
       vnet_subnet_id = azurerm_subnet.aks.id
     }
     identity {
       type         = "UserAssigned"
       identity_ids = [azurerm_user_assigned_identity.aks.id]
     }
     network_profile {
       network_plugin    = "azure"
       load_balancer_sku = "standard"
       dns_service_ip    = "10.2.0.10"
       service_cidr      = "10.2.0.0/24"
     }
    }
    
  3. اتبع الخطوات لتهيئة Terraform، وتنسيق والتحقق من تكوين Terraform، وإنشاء خطة تنفيذ Terraform، وتطبيق تكوين Terraform، والاتصال بعنقود AKS.

قم بتحديث عنقود AKS خاص موجود من منطقة DNS خاصة إلى عام

يمكنك التحديث فقط من byo (أحضر جهازك الخاص) أو system إلى none. لا يتم دعم أي تركيبة أخرى من قيم التحديث.

تحذير

عند تحديث مجموعة خاصة من byo أو system إلى none، تتغير عقد العامل لاستخدام FQDN عام. في مجموعة AKS تستخدم مجموعات توسعة الأجهزة الظاهرية في Azure، يتم إجراء node image upgrade لتحديث عقدك باستخدام FQDN العام.

تحديث مجموعة خاصة من أو إلى باستخدام byo الأمر مع system تعيين المعلمة على none.az aks update--private-dns-zonenone

az aks update \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --private-dns-zone none
  1. أضف الكود التالي إلى الموجود main.tf لتحديث تجمع AKS الخاص من منطقة DNS خاصة إلى عام. يستخدم هذا المثال شبكات متقدمة. يمكنك تعديله ليستخدم الشبكة الأساسية الافتراضية عن طريق تغيير موارد ومعلمات Terraform ذات الصلة.

    resource "azurerm_kubernetes_cluster" "this" {
     name                = var.aks_cluster_name
     location            = azurerm_resource_group.this.location
     resource_group_name = azurerm_resource_group.this.name
     dns_prefix          = "aks-update"
     private_cluster_enabled = true
     private_dns_zone_id     = "None"
     default_node_pool {
       name           = "system"
       node_count     = 1
       vm_size        = "Standard_DS2_v2"
       vnet_subnet_id = azurerm_subnet.aks.id
     }
     identity {
       type         = "UserAssigned"
       identity_ids = [azurerm_user_assigned_identity.aks.id]
     }
     network_profile {
       network_plugin    = "azure"
       load_balancer_sku = "standard"
       dns_service_ip    = "10.2.0.10"
       service_cidr      = "10.2.0.0/24"
     }
    }
    
  2. طبق تكوين Terraform المحدث باستخدام terraform plan أوامر و terraform apply .

    terraform plan
    terraform apply
    

تهيئة Terraform

قم بتهيئة Terraform في الدليل الذي يحتوي على ملفك main.tf باستخدام الأمر.terraform init يقوم هذا الأمر بتنزيل مزود Azure المطلوب لإدارة موارد Azure باستخدام Terraform.

terraform init

تنسيق والتحقق من تكوين تيرافورم

تنسيق والتحقق من تكوين Terraform باستخدام terraform fmt أوامر و terraform validate .

terraform fmt
terraform validate

إنشاء خطة تنفيذ Terraform

إنشاء خطة تنفيذ Terraform باستخدام terraform plan الأمر . هذا الأمر يعرض لك الموارد التي سيخلقها Terraform أو يعدلها في اشتراكك في Azure.

terraform plan -var="subscription_id=<your-subscription-id>"

تطبيق تكوين Terraform

بعد مراجعة وتأكيد خطة التنفيذ، طبق تكوين Terraform باستخدام terraform apply الأمر. يقوم هذا الأمر بإنشاء أو تعديل الموارد المحددة في ملف main.tf الخاص بك في اشتراكك Azure.

terraform apply -var="subscription_id=<your-subscription-id>"

تكوين kubectl للاتصال بعنقود AKS خاص

لإدارة نظام مجموعة Kubernetes، استخدم سطر أوامر العميلkubectl. kubectl مثبت بالفعل إذا كنت تستخدم Azure Cloud Shell. لتثبيت kubectl محليا، استخدم az aks install-cli الأمر .

  1. قم بتكوين kubectl للاتصال بنظام مجموعة Kubernetes باستخدام أمر az aks get-credentials. هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها.

    az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>
    
  2. تحقق من الاتصال بالمجموعة باستخدام kubectl get الأمر . يعمل هذا الأمر على استرجاع قائمة نظام المجموعة العنقودية.

    kubectl get nodes
    

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

    NAME                                STATUS   ROLES   AGE    VERSION
    aks-nodepool1-12345678-vmss000000   Ready    agent   3h6m   v1.15.11
    aks-nodepool1-12345678-vmss000001   Ready    agent   3h6m   v1.15.11
    aks-nodepool1-12345678-vmss000002   Ready    agent   3h6m   v1.15.11