Sdílet prostřednictvím


Vytvoření privátního clusteru Azure Kubernetes Service (AKS)

Tento článek vám pomůže nasadit cluster AKS založený na privátním propojení pomocí Azure CLI nebo Terraformu. Pokud vás zajímá vytvoření clusteru AKS bez požadovaného privátního propojení nebo tunelu, přečtěte si téma Vytvoření clusteru Azure Kubernetes Service (AKS) s integrací virtuální sítě API Serveru.

Přehled privátních clusterů v AKS

V soukromém clusteru má kontrolní rovina nebo API server interní IP adresy, které jsou definovány v dokumentu RFC1918 - Přidělování adres pro soukromý internet. Pomocí privátního clusteru můžete zajistit, aby síťový provoz mezi vaším serverem API a fondy uzlů zůstal pouze v privátní síti.

Řídicí rovina nebo server rozhraní API se nachází ve skupině prostředků Azure spravované službou AKS a cluster nebo fond uzlů se nachází ve vlastní skupině prostředků. Server a fond uzlů spolu můžou komunikovat prostřednictvím služby Azure Private Link ve virtuální síti serveru API a privátního koncového bodu vystaveného v podsíti clusteru AKS.

Když vytvoříte privátní cluster AKS, AKS ve výchozím nastavení vytvoří privátní i veřejné plně kvalifikované názvy domén (FQDN) s odpovídajícími zónami DNS. Podrobné možnosti konfigurace DNS najdete v tématu Konfigurace privátní zóny DNS, privátního subzone DNS nebo vlastní subdomény.

Dostupnost regionu

Privátní clustery jsou dostupné ve veřejných oblastech, Azure Government a Microsoft Azure provozovaných 21vianetovými oblastmi, kde se podporuje AKS.

Důležité

Všechny funkce Microsoft Defender for Cloud budou oficiálně vyřazeny v oblasti Azure v Číně dne 18. srpna 2026. Vzhledem k tomuto nadcházejícímu vyřazení už zákazníci Azure v Číně nebudou moct připojit nová předplatná ke službě. Nové předplatné je jakékoli předplatné, které ještě nebylo nasazeno do služby Microsoft Defender for Cloud před 18. srpnem 2025, datem oznámení o vyřazení z provozu. Další informace o ukončení podpory najdete v tématu Microsoft Defender for Cloud vyřazení v Microsoft Azure provozovaném společností 21Vianet Oznámení.

Zákazníci by měli spolupracovat se zástupci svých účtů pro Microsoft Azure provozovaných společností 21Vianet, aby posoudili dopad tohoto vyřazení na vlastní provoz.

Požadavky pro privátní clustery AKS

  • Aktivní Azure předplatné. Pokud nemáte předplatné Azure, vytvořte si účet free než začnete.

  • Nastavte kontext předplatného az account set pomocí příkazu. Například:

    az account set --subscription "00000000-0000-0000-0000-000000000000"
    
  • Azure CLI verze 2.28.0 nebo vyšší. Pomocí příkazu najděte svoji verzi az --version . Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.

  • Pokud používáte Azure Resource Manager (ARM) nebo rozhraní REST API Azure, musí být verze rozhraní API AKS 2021-05-01 nebo vyšší.

  • Pokud chcete použít vlastní server DNS, přidejte Azure veřejnou IP adresu 168.63.129.16 jako nadřazený server DNS na vlastním serveru DNS a nezapomeňte tuto veřejnou IP adresu přidat jako first server DNS. Další informace o IP adrese Azure najdete v tématu Co je IP adresa 168.63.129.16?

    • Zóna DNS clusteru by měla být přesměrována na 168.63.129.16. Další informace o názvech zón najdete v konfiguraci zóny DNS Azure services.
  • Existující clustery AKS s povolenou integrací API Server VNet mohou mít povolený režim privátního clusteru. Další informace najdete v tématu Povolení nebo zakázání režimu privátního clusteru v existujícím clusteru s integrací virtuální sítě serveru API.

  • Pokud potřebujete povolit Azure Container Registry v privátním clusteru AKS, nastavte privátní propojení registru kontejneru ve virtuální síti clusteru nebo nastavte partnerský vztah mezi virtuální sítí registru kontejneru a virtuální sítí privátního clusteru.

  • kubectl nainstalován. Můžete jej lokálně nainstalovat pomocí příkazu az aks install-cli.

Důležité

Počínaje datem 30. listopadu 2025 Azure Kubernetes Service (AKS) již nepodporuje a neposkytuje aktualizace zabezpečení pro Azure Linux 2.0. Image uzlu Azure Linux 2.0 je zmražena ve verzi 202512.06.0. Od 31. března 2026 se image uzlů odeberou a nebudete moct škálovat fondy uzlů. Migrace na podporovanou verzi Azure Linuxu probíhá buď upgradováním vašich fondů uzlů na podporovanou verzi Kubernetes, nebo migrací na osSku AzureLinux3. Další informace najdete v problému GitHub vyřazení a ve vyhlášení o vyřazení aktualizací Azure. Pokud chcete mít přehled o oznámeních a aktualizacích, sledujte poznámky k verzi AKS.

Omezení

  • Rozsahy autorizovaných IP adres se vztahují pouze na veřejný server rozhraní API. Tyto rozsahy nemůžete použít na koncový bod privátního serveru rozhraní API.
  • omezení služby Azure Private Link platí pro privátní clustery.
  • Pro Azure DevOps agenty hostované Microsoftem neexistuje podpora s privátními clustery. Zvažte použití agentů hostovaných z vlastních zdrojů.
  • Odstranění nebo úprava privátního koncového bodu v podsíti zákazníka způsobí, že cluster přestane fungovat.
  • služba Azure Private Link je podporována pouze v Azure Load Balancer standardu. Základní Azure Load Balancer se nepodporuje.

Architektura hub a spoke s vlastním DNS pro privátní AKS clustery

Architektura hub a radiály se běžně používá k nasazování sítí v Azure. V mnoha z těchto nasazení jsou nastavení DNS v paprskových virtuálních sítích nakonfigurovaná tak, aby odkazovala na centrální předávací nástroj DNS, který umožňuje místní a Azure překlad DNS.

Následující diagram znázorňuje architekturu hub a spoke soukromého clusteru AKS s vlastním DNS.

Soukromý klastr ve formátu paprsku a středu

  • Při vytvoření privátního clusteru se ve skupině prostředků spravovaných clusterem ve výchozím nastavení vytvoří privátní koncový bod (1) a privátní zóna DNS (2). Klastr používá záznam A v privátní zóně k vyřešení IP adresy privátního koncového bodu pro komunikaci s API serverem.
  • Privátní zóna DNS je propojená pouze s virtuální sítí, ke které jsou uzly clusteru připojené (3), což znamená, že privátní koncový bod je možné přeložit pouze hostiteli v této propojené virtuální síti. Ve scénářích, kdy ve virtuální síti (výchozí) není nakonfigurovaný žádný vlastní DNS, funguje bez problému, protože hostitelé jsou nasměrováni na 168.63.129.16 pro DNS, který díky spojení může překládat záznamy v privátní zóně DNS.
  • Pokud zachováte výchozí chování privátní zóny DNS, AKS se pokusí propojit zónu přímo s paprskovou virtuální sítí, která je hostitelem clusteru, i když je zóna již propojená s virtuální sítí centra.
    • V paprskových virtuálních sítích, které používají vlastní servery DNS, může tato akce selhat, pokud spravovaná identita clusteru nemá v paprskové virtuální síti přispěvatele sítě . Pokud chcete zabránit selhání, zvolte jednu z následujících podporovaných konfigurací:
      • Vlastní privátní zóna DNS: Zadejte existující privátní zónu a nastavte privateDNSZone / --private-dns-zone její ID prostředku. Tuto zónu propojte s příslušnou VNet (například hub VNet) a nastavte publicDNS na false / použijte --disable-public-fqdn.
      • Pouze veřejný DNS: Zakažte vytváření privátní zóny nastavením privateDNSZone / --private-dns-zonenonena výchozí hodnotu () a ponechejte publicDNS ji na výchozí hodnotě (true) / nepoužívejte --disable-public-fqdn.
  • Pokud používáte směrovací tabulku byo (Bring your Own) se službou kubenet a BYO DNS s privátními clustery, vytvoření clusteru selže. Je třeba přidružit RouteTable ve skupině prostředků uzlu k podsíti poté, co se vytvoření clusteru nezdařilo, aby byla úspěšně dokončena jeho tvorba.

Omezení privátních clusterů AKS s vlastním DNS

  • Nastavení privateDNSZone / --private-dns-zone na noneapublicDNS: false / --disable-public-fqdn současně není podporováno.
  • Podmíněné přesměrování nepodporuje subdomény.

Vytvoření skupiny zdrojů

Vytvořte skupinu prostředků pomocí příkazu az group create. Můžete také použít existující skupinu prostředků pro cluster AKS.

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

Vytvoření privátního clusteru AKS s výchozími základními sítěmi

Vytvořte privátní cluster s výchozími základními sítěmi pomocí az aks create příkazu s příznakem --enable-private-cluster .

Klíčové parametry v tomto příkazu:

  • --enable-private-cluster: Povolí režim privátního clusteru.
az aks create \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --generate-ssh-keys
  1. Vytvořte soubor s názvem main.tf a přidejte následující kód, který definuje verzi Terraformu a určí zprostředkovatele 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. Do main.tf přidejte následující kód, který vytvoří vstupní proměnné pro ID předplatného Azure, název skupiny prostředků, umístění a název clusteru AKS. Podle potřeby můžete upravit výchozí hodnoty.

    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. Přidejte následující kód pro main.tf a vytvořte skupinu prostředků Azure:

    resource "azurerm_resource_group" "this" {
      name     = var.resource_group_name
      location = var.location
    }
    
  4. Přidejte následující kód do main.tf pro vytvoření privátního clusteru AKS se základním síťováním:

    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. Postupujte podle kroků pro inicializaci Terraformu, formátování a ověření konfigurace Terraformu, vytvoření plánu provádění Terraformu, použití konfigurace Terraformu a připojení ke clusteru AKS.

Vytvoření privátního clusteru AKS s pokročilými sítěmi

Pomocí příkazu vytvořte privátní cluster s pokročilými sítěmi az aks create .

Klíčové parametry v tomto příkazu:

  • --enable-private-cluster: Povolí režim privátního clusteru.
  • --network-plugin azure: Určuje síťový modul plug-in Azure CNI.
  • --vnet-subnet-id <subnet-id>: ID prostředku existující podsítě ve virtuální síti.
  • --dns-service-ip <dns-service-ip>: Dostupná IP adresa v rozsahu adres služby Kubernetes, která se má použít pro službu DNS clusteru. Například: 10.2.0.10.
  • --service-cidr <service-cidr>: Rozsah IP adres v notaci CIDR, ze kterého se mají přiřazovat IP adresy clusteru služeb IP. Například: 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. Vytvořte soubor s názvem main.tf a přidejte následující kód, který definuje verzi Terraformu a určí zprostředkovatele 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. Do main.tf přidejte následující kód, který vytvoří vstupní proměnné pro ID předplatného Azure, název skupiny prostředků, umístění, název clusteru AKS, název virtuální sítě a název podsítě. Podle potřeby můžete upravit výchozí hodnoty.

    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. Do main.tf přidejte následující kód pro vytvoření skupiny prostředků Azure, virtuální sítě a podsítě:

    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. Přidáním následujícího kódu main.tf vytvořte cluster AKS s pokročilými sítěmi:

    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. Postupujte podle kroků pro inicializaci Terraformu, formátování a ověření konfigurace Terraformu, vytvoření plánu provádění Terraformu, použití konfigurace Terraformu a připojení ke clusteru AKS.

Použití vlastních domén s privátními clustery AKS

Pokud chcete konfigurovat vlastní domény, které mohou být vyřešeny pouze interně, podívejte se na Použití vlastních domén.

Zakázání veřejného plně kvalifikovaného názvu domény v privátním clusteru AKS

Zakázat veřejné FQDN na novém clusteru

Při vytváření privátního clusteru AKS deaktivujte veřejný FQDN pomocí příkazu az aks create s příznakem --disable-public-fqdn.

Klíčové parametry v tomto příkazu:

  • --disable-public-fqdn: Zakáže veřejný plně kvalifikovaný název domény (FQDN) pro server rozhraní API.
  • --assign-identity <resource-id>: Určuje spravovanou identitu, která se má použít pro cluster.
  • --private-dns-zone [system|none]: Určuje privátní zónu DNS, která se má použít pro cluster. system je výchozí hodnota při konfiguraci privátní zóny DNS. Pokud vynecháte --private-dns-zone, AKS vytvoří privátní zónu DNS ve skupině prostředků uzlu. none zakáže vytvoření privátní zóny 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. Postupujte podle kroků 1 až 3 v části Vytvoření privátního clusteru AKS s pokročilými sítěmi nebo vytvořte privátní cluster AKS s výchozími základními sítěmi a nastavte konfiguraci Terraformu a vytvořte potřebné prostředky v závislosti na vašem scénáři. Tento příklad používá pokročilé sítě.

  2. Přidejte následující kód do main.tf pro vytvoření privátního clusteru AKS s identitou přiřazenou uživatelem a zakázaným veřejným 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. Postupujte podle kroků pro inicializaci Terraformu, formátování a ověření konfigurace Terraformu, vytvoření plánu provádění Terraformu, použití konfigurace Terraformu a připojení ke clusteru AKS.

Zakázat veřejný FQDN na stávajícím clusteru

Zakázat veřejné FQDN na stávajícím AKS clusteru pomocí příkazu az aks update s příznakem --disable-public-fqdn.

Klíčové parametry v tomto příkazu:

  • --disable-public-fqdn: Zakáže veřejný plně kvalifikovaný název domény (FQDN) pro server rozhraní API.
az aks update \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --disable-public-fqdn
  1. Přidejte do existujícího main.tf kódu následující kód, který zakáže veřejný plně kvalifikovaný název domény v existujícím clusteru AKS. Tento příklad používá pokročilé sítě. Můžete ho upravit tak, aby používal výchozí základní sítě, a to změnou příslušných prostředků a parametrů Terraformu.

    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. Použijte aktualizovanou konfiguraci Terraformu pomocí příkazů terraform plan a terraform apply.

    terraform plan
    terraform apply
    

Možnosti konfigurace privátního DNS

Privátní nastavení DNS pro privátní cluster AKS můžete nakonfigurovat pomocí Azure CLI (s parametrem --private-dns-zone) nebo šablonou Azure Resource Manager (ARM) (s vlastností privateDNSZone). Následující tabulka popisuje možnosti, které jsou k dispozici pro --private-dns-zone parametr / privateDNSZone vlastnost:

Setting Description
system Výchozí hodnota při konfiguraci privátní zóny DNS. Pokud vynecháte --private-dns-zone / privateDNSZone, AKS vytvoří privátní zónu DNS ve skupině prostředků uzlu.
none Pokud nastavíte --private-dns-zone / privateDNSZone na none, AKS nevytvoří privátní zónu DNS.
<custom-private-dns-zone-resource-id> Pokud chcete tento parametr použít, musíte pro Azure globální cloud vytvořit privátní zónu DNS v následujícím formátu: privatelink.<region>.azmk8s.io nebo <subzone>.privatelink.<region>.azmk8s.io. Pro budoucí použití potřebujete ID prostředku privátní zóny DNS. Potřebujete také uživatelsky přiřazenou identitu nebo zřizovatele služeb s rolemi Privátní DNS Zone Contributor a Network Contributor. Pro clustery, které využívají integraci VNet serveru API, privátní zóna DNS podporuje formát pojmenování private.<region>.azmk8s.io nebo <subzone>.private.<region>.azmk8s.io. Po vytvoření clusteru nemůžete tyto prostředky změnit ani odstranit, protože to může způsobit problémy s výkonem a selhání upgradu clusteru. Můžete použít --fqdn-subdomain <subdomain> s <custom-private-dns-zone-resource-id> pouze k poskytování schopností subdomény pro privatelink.<region>.azmk8s.io. Pokud zadáváte subzónu, platí pro její název limit 32 znaků.

Důležité informace o privátním DNS

Při konfiguraci privátního DNS pro privátní cluster AKS mějte na paměti následující skutečnosti:

  • Pokud je privátní zóna DNS v jiném předplatném než cluster AKS, musíte v obou předplatných zaregistrovat poskytovatele Microsoft.ContainerService Azure.
  • Pokud je váš cluster AKS nakonfigurovaný s služba Active Directory instančním objektem, AKS nepodporuje použití spravované identity přiřazené systémem s vlastní privátní zónou DNS. Cluster musí používat ověřování spravované identity přidělené uživatelem.

Vytvořte privátní AKS cluster s privátní DNS zónou

Pomocí příkazu vytvořte privátní cluster AKS s privátní zónou az aks create DNS.

Klíčové parametry v tomto příkazu:

  • --enable-private-cluster: Povolí režim privátního clusteru.
  • --private-dns-zone [system|none]: Nakonfiguruje privátní zónu DNS pro cluster. system je výchozí hodnota při konfiguraci privátní zóny DNS. Pokud vynecháte --private-dns-zone, AKS vytvoří privátní zónu DNS ve skupině prostředků uzlu. none zakáže vytvoření privátní zóny DNS.
  • --assign-identity <resource-id>: ID prostředku uživatelsky přiřazené spravované identity s rolemi Přispěvatel zóny Privátní DNS a Přispěvatel sítě.
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. Postupujte podle kroků 1 až 3 v části Vytvoření privátního clusteru AKS s pokročilými sítěmi nebo vytvořte privátní cluster AKS s výchozími základními sítěmi a nastavte konfiguraci Terraformu a vytvořte potřebné prostředky v závislosti na vašem scénáři. Tento příklad používá pokročilé sítě.

  2. Přidejte následující kód pro main.tf vytvoření privátního clusteru AKS se zónou AKS spravovanou privátním 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-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. Postupujte podle kroků pro inicializaci Terraformu, formátování a ověření konfigurace Terraformu, vytvoření plánu provádění Terraformu, použití konfigurace Terraformu a připojení ke clusteru AKS.

Vytvoření privátního clusteru AKS bez privátní zóny DNS

  1. Postupujte podle kroků 1 až 3 v části Vytvoření privátního clusteru AKS s pokročilými sítěmi nebo vytvořte privátní cluster AKS s výchozími základními sítěmi a nastavte konfiguraci Terraformu a vytvořte potřebné prostředky v závislosti na vašem scénáři. Tento příklad používá pokročilé sítě.

  2. Přidáním následujícího kódu main.tf vytvořte cluster AKS bez privátní zóny 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. Postupujte podle kroků pro inicializaci Terraformu, formátování a ověření konfigurace Terraformu, vytvoření plánu provádění Terraformu, použití konfigurace Terraformu a připojení ke clusteru AKS.

Vytvořte privátní AKS cluster s vlastní privátní DNS zónou nebo privátní DNS podzónou

Pomocí příkazu vytvořte privátní cluster AKS s vlastní privátní zónou DNS nebo podzonem az aks create .

Klíčové parametry v tomto příkazu:

  • --enable-private-cluster: Povolí režim privátního clusteru.
  • --private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>]: ID prostředku existující privátní zóny DNS nebo podzóny ve formátu platném pro globální cloud Azure: privatelink.<region>.azmk8s.io nebo <subzone>.privatelink.<region>.azmk8s.io.
  • : ID prostředku spravované identity přiřazené uživatelem s rolemi přispěvatele zóny Privátní DNS a přispěvatele sítě .
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

Při použití vlastní privátní zóny DNS zodpovídáte za vytváření a správu infrastruktury DNS místo toho, abyste se spoléhali na Azure spravované DNS. To zahrnuje vytvoření zóny DNS, jeho propojení s vaší virtuální sítí a přiřazení potřebných oprávnění ke správě záznamů AKS.

Pro vlastní konfigurace DNS musíte použít uživatelsky přiřazenou spravovanou identitu s rolemi Privátní DNS Zone Contributor (Přispěvatel zóny Privátní DNS) a Network Contributor (Přispěvatel sítě).

  1. Postupujte podle kroků 1 až 3 v části Vytvoření privátního clusteru AKS s pokročilými sítěmi nebo vytvořte privátní cluster AKS s výchozími základními sítěmi a nastavte konfiguraci Terraformu a vytvořte potřebné prostředky v závislosti na vašem scénáři. Tento příklad používá pokročilé sítě.

  2. Přidejte kód k main.tf pro vytvoření privátního clusteru AKS s vlastní privátní DNS zónou nebo podzónou:

    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. Postupujte podle kroků pro inicializaci Terraformu, formátování a ověření konfigurace Terraformu, vytvoření plánu provádění Terraformu, použití konfigurace Terraformu a připojení ke clusteru AKS.

Vytvořte soukromý AKS cluster s vlastní privátní DNS zónou a vlastním subdoménou.

Pomocí příkazu vytvořte privátní cluster AKS s vlastní privátní zónou DNS a subdoménou az aks create .

Klíčové parametry v tomto příkazu:

  • --enable-private-cluster: Povolí režim privátního clusteru.
  • --private-dns-zone <custom-private-dns-zone-resource-id>: ID prostředku existující privátní zóny DNS v následujícím formátu pro globální cloud Azure: privatelink.<region>.azmk8s.io.
  • --fqdn-subdomain <subdomain>: Subdoména, kterou je třeba použít pro úplný název domény clusteru v rámci vlastní soukromé zóny DNS.
  • --assign-identity <resource-id>: ID prostředku uživatelem přiřazené spravované identity s rolemi přispěvatele pro zónu Privátní DNS a přispěvatele sítě 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. Postupujte podle kroků 1 až 3 v části Vytvoření privátního clusteru AKS s pokročilými sítěmi nebo vytvořte privátní cluster AKS s výchozími základními sítěmi a nastavte konfiguraci Terraformu a vytvořte potřebné prostředky v závislosti na vašem scénáři. Tento příklad používá pokročilé sítě.

  2. Přidejte následující kód do main.tf k vytvoření privátního clusteru AKS s vlastní privátní zónou DNS a subdoménou:

    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. Postupujte podle kroků pro inicializaci Terraformu, formátování a ověření konfigurace Terraformu, vytvoření plánu provádění Terraformu, použití konfigurace Terraformu a připojení ke clusteru AKS.

Aktualizace existujícího privátního clusteru AKS z privátní zóny DNS na veřejný

Můžete aktualizovat pouze z byo (přineste si vlastní) nebo system do none. Není podporována žádná jiná kombinace hodnot aktualizace.

Výstraha

Když aktualizujete privátní cluster z byo nebo system na none, uzly agenta se změní tak, že budou používat veřejné FQDN. V clusteru AKS, který používá Škálovací sady virtuálních počítačů Azure, se provede aktualizace image uzlu k aktualizaci vašich uzlů s veřejným plně kvalifikovaným názvem domény.

Aktualizujte privátní cluster z byo nebo system na none pomocí příkazu az aks update s parametrem --private-dns-zone nastaveným na none.

az aks update \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --private-dns-zone none
  1. Do existujícího main.tf kódu přidejte následující kód pro aktualizaci privátního clusteru AKS z privátní zóny DNS na veřejný. Tento příklad používá pokročilé sítě. Můžete ho upravit tak, aby používal výchozí základní sítě, a to změnou příslušných prostředků a parametrů Terraformu.

    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. Použijte aktualizovanou konfiguraci Terraformu pomocí příkazů terraform plan a terraform apply.

    terraform plan
    terraform apply
    

Inicializujte Terraform

Inicializace Terraformu v adresáři obsahujícím váš main.tf soubor pomocí terraform init příkazu Tento příkaz stáhne poskytovatele Azure potřebného ke správě Azure prostředků pomocí Terraformu.

terraform init

Formátování a ověření konfigurace Terraformu

Naformátujte a ověřte konfiguraci Terraformu pomocí příkazů terraform fmt a terraform validate.

terraform fmt
terraform validate

Vytvoření plánu provádění Terraformu

Pomocí příkazu vytvořte plán provádění Terraformu terraform plan . Tento příkaz ukazuje prostředky, které Terraform vytvoří nebo upraví ve vašem předplatném Azure.

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

Aplikujte konfiguraci Terraformu

Po kontrole a potvrzení plánu provádění aplikujte konfiguraci Terraformu pomocí příkazu terraform apply. Tento příkaz vytvoří nebo upraví prostředky definované v souboru main.tf ve vašem předplatném Azure.

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

Konfigurace kubectl pro připojení k privátnímu clusteru AKS

Pro správu Kubernetes clusteru použijte příkazový řádkový klient Kubernetes, kubectl. kubectl je již nainstalován, pokud používáte Azure Cloud Shell. Chcete-li nainstalovat kubectl lokálně, použijte příkaz az aks install-cli.

  1. Nakonfigurujte kubectl pro připojení ke svému Kubernetes clusteru pomocí příkazu az aks get-credentials. Tento příkaz stahuje přihlašovací údaje a konfiguruje Kubernetes CLI pro jejich použití.

    az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>
    
  2. Ověřte připojení k vašemu clusteru pomocí příkazu kubectl get. Tento příkaz vrátí seznam uzlů clusteru.

    kubectl get nodes
    

    Příkaz vrátí výstup podobný následujícímu příkladu výstupu:

    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