Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel helpt u bij het implementeren van een op private link gebaseerd AKS-cluster met behulp van Azure CLI of Terraform. Zie
Overzicht van privéclusters in AKS
In een privécluster heeft het besturingsvlak of de API-server interne IP-adressen die zijn gedefinieerd in het document RFC1918 - Adrestoewijzing voor privéinternet . Met behulp van een privécluster kunt u ervoor zorgen dat netwerkverkeer tussen uw API-server en uw knooppuntgroepen alleen in het privénetwerk blijft.
Het besturingsvlak of de API-server bevindt zich in een door AKS beheerde Azure resourcegroep en uw cluster of knooppuntgroep bevindt zich in uw resourcegroep. De server en de cluster- of knooppuntgroep kunnen met elkaar communiceren via de Azure Private Link-service in het virtuele netwerk van de API-server en een privé-eindpunt dat wordt weergegeven in het subnet van uw AKS-cluster.
Wanneer u een privé-AKS-cluster maakt, maakt AKS standaard zowel privé- als openbare FQDN's (Fully Qualified Domain Names) met bijbehorende DNS-zones. Zie Een privé-DNS-zone, privé-DNS-subzone of aangepast subdomein configureren voor gedetailleerde OPTIES voor DNS-configuratie.
Regionale beschikbaarheid
Privéclusters zijn beschikbaar in openbare regio's, Azure Government en Microsoft Azure beheerd door 21Vianet-regio's waar AKS wordt ondersteund.
Belangrijk
Alle Microsoft Defender voor Cloud functies worden officieel buiten gebruik gesteld in de Azure in de regio China op 18 augustus 2026. Vanwege deze aanstaande buitengebruikstelling kunnen Azure in China-klanten geen nieuwe abonnementen meer onboarden voor de service. Een nieuw abonnement is een abonnement dat nog niet is toegevoegd aan de Microsoft Defender voor Cloud-service vóór 18 augustus 2025, de datum van de aankondiging van de buitengebruikstelling. Zie Microsoft Defender voor Cloud Buitengebruikstelling in Microsoft Azure dat beheerd wordt door 21Vianet Aankondiging voor meer informatie over de buitengebruikstelling.
Klanten moeten samenwerken met hun accountvertegenwoordigers voor Microsoft Azure beheerd door 21Vianet om de impact van deze buitengebruikstelling op hun eigen activiteiten te beoordelen.
Vereisten voor privé-AKS-clusters
Een actief Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een vrij account voordat u begint.
Stel de abonnementscontext in met behulp van de
az account setopdracht. Voorbeeld:az account set --subscription "00000000-0000-0000-0000-000000000000"Azure CLI versie 2.28.0 of hoger. Zoek uw versie met behulp van de
az --versionopdracht. ZieInstall Azure CLI als u de Azure CLI wilt installeren of upgraden.Als u Azure Resource Manager (ARM) of de Azure REST API gebruikt, moet de AKS-API-versie 2021-05-01 of hoger zijn.
Als u een aangepaste DNS-server wilt gebruiken, voegt u het openbare IP-adres Azure 168.63.129.16 toe als de upstream-DNS-server op de aangepaste DNS-server en voegt u dit openbare IP-adres toe als de first DNS-server. Zie
Wat is IP-adres 168.63.129.16? - De DNS-zone van het cluster moet zijn wat u doorstuurt naar 168.63.129.16. Meer informatie over zonenamen vindt u in Azure services DNS-zoneconfiguratie.
Bestaande AKS-clusters die zijn ingeschakeld met API Server VNet-integratie, kunnen de privécluster-modus inschakelen. Zie de modus Privécluster in- of uitschakelen voor een bestaand cluster met API Server VNet-integratie voor meer informatie.
Als u Azure Container Registry wilt inschakelen op een privé-AKS-cluster, stelt u een privékoppeling in voor het containerregister in het virtuele clusternetwerk (VNet) of stelt u peering in tussen het VNet van het containerregister en het VNet van het privécluster.
kubectl geïnstalleerd. U kunt deze lokaal installeren met behulp van de
az aks install-cliopdracht.
- Terraform lokaal geïnstalleerd. Zie Terraform installeren voor installatie-instructies.
Belangrijk
Vanaf November 30, 2025 biedt Azure Kubernetes Service (AKS) geen beveiligingsupdates meer voor Azure Linux 2.0. De Azure Linux 2.0-knooppuntimage is vastgezet op de 202512.06.0 release. Vanaf 31 maart 2026 worden knooppuntafbeeldingen verwijderd en kunt u uw knooppoolen niet schalen. Migreer naar een ondersteunde Azure Linux-versie door upgrading van uw knooppuntgroepen naar een ondersteunde Kubernetes-versie of migratie naar osSku AzureLinux3. Voor meer informatie, zie het GitHub-issue Retirement en de Azure Updates-retirement aankondiging. Als u op de hoogte wilt blijven van aankondigingen en updates, volgt u de releaseopmerkingen van AKS.
Beperkingen
- IP-autorisatiebereiken zijn alleen van toepassing op de openbare API-server. U kunt deze bereiken niet toepassen op het eindpunt van de privé-API-server.
- Azure Private Link servicebeperkingen van toepassing op privéclusters.
- Er is geen ondersteuning voor Azure DevOps Microsoft gehoste agents met privéclusters. Overweeg om zelfgehoste agents te gebruiken.
- Als u het privé-eindpunt in het subnet van de klant verwijdert of wijzigt, werkt het cluster niet meer.
- Azure Private Link service wordt alleen ondersteund op Standard Azure Load Balancer. Basic Azure Load Balancer wordt niet ondersteund.
Hub en spoke met aangepaste DNS voor privé-AKS-clusters
Hub- en spoke-architecturen worden vaak gebruikt voor het implementeren van netwerken in Azure. In veel van deze implementaties worden DNS-instellingen in de spoke-VNets geconfigureerd om te verwijzen naar een centrale DNS-doorstuurserver voor on-premises en Azure-gebaseerde DNS-omzetting.
In het volgende diagram ziet u een hub- en spoke-architectuur voor een privé-AKS-cluster met aangepaste DNS:
- Wanneer een privécluster wordt gemaakt, worden standaard een privé-eindpunt (1) en een privé-DNS-zone (2) gemaakt in de door het cluster beheerde resourcegroep. Het cluster maakt gebruik van een
Arecord in de privézone om het IP-adres van het privé-eindpunt voor communicatie met de API-server op te lossen. - De privé-DNS-zone is alleen gekoppeld aan het VNet waaraan de clusterknooppunten zijn gekoppeld (3), wat betekent dat het privé-eindpunt alleen kan worden omgezet door hosts in dat gekoppelde VNet. In scenario's waarin geen aangepaste DNS is geconfigureerd op het VNet (standaard), werkt het zonder probleem als hosts wijzen op 168.63.129.16 voor DNS die records in de privé-DNS-zone kunnen resolveren door de koppeling.
- Als u het standaardgedrag van de privé-DNS-zone behoudt, probeert AKS de zone rechtstreeks te koppelen aan het spoke-VNet dat als host fungeert voor het cluster, zelfs wanneer de zone al is gekoppeld aan een hub-VNet.
- In spoke-VNets die gebruikmaken van aangepaste DNS-servers, kan deze actie mislukken als de beheerde identiteit van het cluster geen netwerkbijdrager op het spoke-VNet heeft. Kies een van de volgende ondersteunde configuraties om de fout te voorkomen:
-
Aangepaste privé-DNS-zone: geef een bestaande privézone op en stel deze in op
privateDNSZone/--private-dns-zonede resource-id. Koppel die zone aan het juiste VNet (bijvoorbeeld het hub-VNet) en stel hetpublicDNSin opfalse/ gebruik--disable-public-fqdn. -
Alleen openbare DNS: schakel privézone-aanmaak uit door
privateDNSZone/--private-dns-zonein te stellen opnoneenpublicDNSop zijn standaardwaarde te laten (true) /--disable-public-fqdnniet te gebruiken.
-
Aangepaste privé-DNS-zone: geef een bestaande privézone op en stel deze in op
- In spoke-VNets die gebruikmaken van aangepaste DNS-servers, kan deze actie mislukken als de beheerde identiteit van het cluster geen netwerkbijdrager op het spoke-VNet heeft. Kies een van de volgende ondersteunde configuraties om de fout te voorkomen:
- Als u een byo-routetabel (Bring Your Own) gebruikt met kubenet en BYO DNS met privéclusters, mislukt het maken van clusters. Om de creatie succesvol te maken, moet u nadat het maken van het cluster is mislukt, de
RouteTablein de knooppuntresourcegroep aan het subnet koppelen.
Beperkingen voor privé-AKS-clusters met aangepaste DNS
- Instellen
privateDNSZone/--private-dns-zoneopnoneenpublicDNS: false/--disable-public-fqdntegelijkertijd wordt niet ondersteund. - Voorwaardelijk doorsturen biedt geen ondersteuning voor subdomeinen.
Een brongroep maken
Maak een resourcegroep met behulp van de az group create opdracht. U kunt ook een bestaande resourcegroep gebruiken voor uw AKS-cluster.
az group create \
--name <private-cluster-resource-group> \
--location <location>
Een privé-AKS-cluster maken met standaard basisnetwerken
Maak een privécluster met standaard basisnetwerken met behulp van de az aks create opdracht met de --enable-private-cluster vlag.
Belangrijke parameters in deze opdracht:
-
--enable-private-cluster: Hiermee schakelt u de privéclustermodus in.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--generate-ssh-keys
Maak een bestand met de naam
main.tfen voeg de volgende code toe om de Terraform-versie te definiëren en geef de Azure-provider op:terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} subscription_id = var.subscription_id }Voeg de volgende code toe aan
main.tfom invoervariabelen te maken voor uw Azure abonnements-id, resourcegroepnaam, locatie en AKS-clusternaam. U kunt de standaardwaarden indien nodig wijzigen.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" }Voeg de volgende code toe aan
main.tfom een Azure resourcegroep te maken:resource "azurerm_resource_group" "this" { name = var.resource_group_name location = var.location }Voeg de volgende code toe aan
main.tfom een privé-AKS-cluster te maken met basisnetwerk: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" } }Volg de stappen om Terraform te initialiseren, de Terraform-configuratie te formatteren en te valideren, een Terraform-uitvoeringsplan te maken, de Terraform-configuratie toe te passen en verbinding te maken met het AKS-cluster.
Een privé-AKS-cluster maken met geavanceerde netwerken
Maak een privécluster met geavanceerde netwerken met behulp van de az aks create opdracht.
Belangrijke parameters in deze opdracht:
-
--enable-private-cluster: Hiermee schakelt u de privéclustermodus in. -
--network-plugin azure: Deze specificeert de Azure CNI-netwerkplugin. -
--vnet-subnet-id <subnet-id>: De resource-id van een bestaand subnet in een VNet. -
--dns-service-ip <dns-service-ip>: Een beschikbaar IP-adres binnen het Kubernetes-serviceadresbereik dat moet worden gebruikt voor de DNS-clusterservice. Bijvoorbeeld:10.2.0.10. -
--service-cidr <service-cidr>: een IP-adresbereik voor CIDR-notatie van waaruit IP-adressen van serviceclusters moeten worden toegewezen. Bijvoorbeeld: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
Maak een bestand met de naam
main.tfen voeg de volgende code toe om de Terraform-versie te definiëren en geef de Azure-provider op:terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} subscription_id = var.subscription_id }Voeg de volgende code toe aan
main.tfom invoervariabelen te maken voor uw Azure abonnements-id, resourcegroepnaam, locatie, AKS-clusternaam, VNet-naam (virtueel netwerk) en subnetnaam. U kunt de standaardwaarden indien nodig wijzigen.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" }Voeg de volgende code toe aan
main.tfom een Azure resourcegroep, VNet en subnet te maken: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"] }Voeg de volgende code toe aan
main.tfom het AKS-cluster met geavanceerde netwerkvoorzieningen te maken: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" } }Volg de stappen om Terraform te initialiseren, de Terraform-configuratie te formatteren en te valideren, een Terraform-uitvoeringsplan te maken, de Terraform-configuratie toe te passen en verbinding te maken met het AKS-cluster.
Aangepaste domeinen gebruiken met privé-AKS-clusters
Als u aangepaste domeinen wilt configureren die alleen intern kunnen worden opgelost, zie Aangepaste domeinen gebruiken.
Een openbare FQDN uitschakelen op een privé-AKS-cluster
Een openbare FQDN op een nieuw cluster uitschakelen
Schakel een openbare FQDN uit bij het maken van een privé-AKS-cluster met behulp van de az aks create opdracht met de --disable-public-fqdn vlag.
Belangrijke parameters in deze opdracht:
-
--disable-public-fqdn: schakelt de openbare FQDN (Fully Qualified Domain Name) voor de API-server uit. -
--assign-identity <resource-id>: Hiermee geeft u de beheerde identiteit op die moet worden gebruikt voor het cluster. -
--private-dns-zone [system|none]: hiermee geeft u de privé-DNS-zone op die moet worden gebruikt voor het cluster.systemis de standaardwaarde bij het configureren van een privé-DNS-zone. Als u weglaat--private-dns-zone, maakt AKS een privé-DNS-zone in de knooppuntresourcegroep.noneschakelt het maken van een privé-DNS-zone uit.
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
Volg stap 1-3 in Een privé-AKS-cluster maken met geavanceerde netwerken of maak een privé-AKS-cluster met standaard basisnetwerken om de Terraform-configuratie in te stellen en de benodigde resources te maken, afhankelijk van uw scenario. In dit voorbeeld wordt gebruikgemaakt van geavanceerde netwerken.
Voeg de volgende code toe om een privé-AKS-cluster te
main.tfmaken met een door de gebruiker toegewezen identiteit en de openbare FQDN uitgeschakeld: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" } }Volg de stappen om Terraform te initialiseren, de Terraform-configuratie te formatteren en te valideren, een Terraform-uitvoeringsplan te maken, de Terraform-configuratie toe te passen en verbinding te maken met het AKS-cluster.
Een openbare FQDN op een bestaand cluster uitschakelen
Schakel een openbare FQDN uit op een bestaand AKS-cluster met behulp van de az aks update opdracht met de --disable-public-fqdn vlag.
Belangrijke parameters in deze opdracht:
-
--disable-public-fqdn: schakelt de openbare FQDN (Fully Qualified Domain Name) voor de API-server uit.
az aks update \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--disable-public-fqdn
Voeg de volgende code toe aan de bestaande
main.tfom de openbare FQDN uit te schakelen op een bestaand AKS-cluster. In dit voorbeeld wordt gebruikgemaakt van geavanceerde netwerken. U kunt deze wijzigen om standaardnetwerken te gebruiken door de relevante Terraform-resources en -parameters te wijzigen.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" } }Pas de bijgewerkte Terraform-configuratie toe met behulp van de
terraform planenterraform applyopdrachten.terraform plan terraform apply
Configuratieopties voor privé-DNS
U kunt privé-DNS-instellingen configureren voor een privé-AKS-cluster met behulp van de Azure CLI (met de parameter --private-dns-zone) of een ARM-sjabloon (Azure Resource Manager) (met de eigenschap privateDNSZone). De volgende tabel bevat een overzicht van de opties die beschikbaar zijn voor de --private-dns-zone parameter/ privateDNSZone eigenschap:
| Configuratie | Description |
|---|---|
system |
De standaardwaarde bij het configureren van een privé-DNS-zone. Als u weglaat --private-dns-zone / privateDNSZone, maakt AKS een privé-DNS-zone in de knooppuntresourcegroep. |
none |
Als u deze optie instelt --private-dns-zone / privateDNSZonenone, maakt AKS geen privé-DNS-zone. |
<custom-private-dns-zone-resource-id> |
Als u deze parameter wilt gebruiken, moet u een privé-DNS-zone maken in de volgende indeling voor Azure globale cloud: privatelink.<region>.azmk8s.io of <subzone>.privatelink.<region>.azmk8s.io. U hebt de resource-id van de privé-DNS-zone nodig voor toekomstig gebruik. U hebt ook een door de gebruiker toegewezen identiteit of service-principal nodig met de rollen Privé-DNS Zone Contributor en Network Contributor. Voor clusters die gebruikmaken van API Server VNet-integratie, ondersteunt een privé-DNS-zone de naamgevingsindeling van private.<region>.azmk8s.io of <subzone>.private.<region>.azmk8s.io. U kunt deze resources niet wijzigen of verwijderen nadat u het cluster hebt gemaakt, omdat dit prestatieproblemen en cluster-upgrades kan veroorzaken. U kunt --fqdn-subdomain <subdomain> alleen samen met <custom-private-dns-zone-resource-id> gebruiken om subdomeinmogelijkheden aan privatelink.<region>.azmk8s.io te bieden. Als u een subzone opgeeft, is er een limiet van 32 tekens voor de <subzone> naam. |
Overwegingen voor privé-DNS
Houd rekening met de volgende overwegingen bij het configureren van privé-DNS voor een privé-AKS-cluster:
- Als de privé-DNS-zone zich in een ander abonnement bevindt dan het AKS-cluster, moet u de
Microsoft.ContainerServiceAzure-provider registreren in beide abonnementen. - Als uw AKS-cluster is geconfigureerd met een Active Directory service-principal, biedt AKS geen ondersteuning voor het gebruik van een door het systeem toegewezen beheerde identiteit met een aangepaste privé-DNS-zone. Het cluster moet door de gebruiker toegewezen beheerde identiteitverificatie gebruiken.
Een privé-AKS-cluster maken met een privé-DNS-zone
Maak een privé-AKS-cluster met een privé-DNS-zone met behulp van de az aks create opdracht.
Belangrijke parameters in deze opdracht:
-
--enable-private-cluster: Hiermee schakelt u de privéclustermodus in. -
--private-dns-zone [system|none]: hiermee configureert u de privé-DNS-zone voor het cluster.systemis de standaardwaarde bij het configureren van een privé-DNS-zone. Als u weglaat--private-dns-zone, maakt AKS een privé-DNS-zone in de knooppuntresourcegroep.noneschakelt het maken van een privé-DNS-zone uit. -
--assign-identity <resource-id>: de resource-id van een door de gebruiker toegewezen beheerde identiteit met de rollen Privé-DNS Zone-inzender en Network-inzender.
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
Volg stap 1-3 in Een privé-AKS-cluster maken met geavanceerde netwerken of maak een privé-AKS-cluster met standaard basisnetwerken om de Terraform-configuratie in te stellen en de benodigde resources te maken, afhankelijk van uw scenario. In dit voorbeeld wordt gebruikgemaakt van geavanceerde netwerken.
Voeg de volgende code toe om
main.tfeen privé-AKS-cluster te maken met een door AKS beheerde privé-DNS-zone: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" } }Volg de stappen om Terraform te initialiseren, de Terraform-configuratie te formatteren en te valideren, een Terraform-uitvoeringsplan te maken, de Terraform-configuratie toe te passen en verbinding te maken met het AKS-cluster.
Een privé-AKS-cluster maken zonder een privé-DNS-zone
Volg stap 1-3 in Een privé-AKS-cluster maken met geavanceerde netwerken of maak een privé-AKS-cluster met standaard basisnetwerken om de Terraform-configuratie in te stellen en de benodigde resources te maken, afhankelijk van uw scenario. In dit voorbeeld wordt gebruikgemaakt van geavanceerde netwerken.
Voeg de volgende code toe aan
main.tfom het AKS-cluster te maken zonder privé DNS-zone.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" } }Volg de stappen om Terraform te initialiseren, de Terraform-configuratie te formatteren en te valideren, een Terraform-uitvoeringsplan te maken, de Terraform-configuratie toe te passen en verbinding te maken met het AKS-cluster.
Een privé-AKS-cluster maken met een aangepaste privé-DNS-zone of privé-DNS-subzone
Maak een privé-AKS-cluster met een aangepaste privé-DNS-zone of subzone met behulp van de az aks create opdracht.
Belangrijke parameters in deze opdracht:
-
--enable-private-cluster: Hiermee schakelt u de privéclustermodus in. -
--private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>]: de resource-id van een bestaande privé-DNS-zone of subzone in de volgende indeling voor Azure globale cloud:privatelink.<region>.azmk8s.ioof<subzone>.privatelink.<region>.azmk8s.io. -
--assign-identity <resource-id>: de resource-id van een door de gebruiker toegewezen beheerde identiteit met de rollen Privé-DNS Zone-inzender en Network-inzender.
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
Wanneer u een aangepaste privé-DNS-zone gebruikt, bent u verantwoordelijk voor het maken en beheren van de DNS-infrastructuur in plaats van te vertrouwen op Azure beheerde DNS. Dit omvat het maken van de DNS-zone, het koppelen aan uw VNet en het toewijzen van de benodigde machtigingen voor AKS voor het beheren van records.
Voor aangepaste DNS-configuraties moet u een door de gebruiker toegewezen beheerde identiteit gebruiken met de rollen Privé-DNS zonebijdrager en Network-inzender.
Volg stap 1-3 in Een privé-AKS-cluster maken met geavanceerde netwerken of maak een privé-AKS-cluster met standaard basisnetwerken om de Terraform-configuratie in te stellen en de benodigde resources te maken, afhankelijk van uw scenario. In dit voorbeeld wordt gebruikgemaakt van geavanceerde netwerken.
Voeg de code toe aan
main.tfom een privé-AKS-cluster te maken met een aangepaste private DNS-zone of subzone: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 ] }Volg de stappen om Terraform te initialiseren, de Terraform-configuratie te formatteren en te valideren, een Terraform-uitvoeringsplan te maken, de Terraform-configuratie toe te passen en verbinding te maken met het AKS-cluster.
Een privé-AKS-cluster maken met een aangepaste privé-DNS-zone en een aangepast subdomein
Maak een privé-AKS-cluster met een aangepaste privé-DNS-zone en -subdomein met behulp van de az aks create opdracht.
Belangrijke parameters in deze opdracht:
-
--enable-private-cluster: Hiermee schakelt u de privéclustermodus in. -
--private-dns-zone <custom-private-dns-zone-resource-id>: de resource-id van een bestaande privé-DNS-zone in de volgende indeling voor Azure globale cloud:privatelink.<region>.azmk8s.io. -
--fqdn-subdomain <subdomain>: het subdomein dat moet worden gebruikt voor de cluster-FQDN in de aangepaste privé-DNS-zone. -
--assign-identity <resource-id>: de resource-id van een door de gebruiker toegewezen beheerde identiteit met de rollen Privé-DNS Zone-inzender en Network-inzender.
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
Volg stap 1-3 in Een privé-AKS-cluster maken met geavanceerde netwerken of maak een privé-AKS-cluster met standaard basisnetwerken om de Terraform-configuratie in te stellen en de benodigde resources te maken, afhankelijk van uw scenario. In dit voorbeeld wordt gebruikgemaakt van geavanceerde netwerken.
Voeg de volgende code toe om een privé-AKS-cluster te
main.tfmaken met een aangepaste privé-DNS-zone en subdomein: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" } }Volg de stappen om Terraform te initialiseren, de Terraform-configuratie te formatteren en te valideren, een Terraform-uitvoeringsplan te maken, de Terraform-configuratie toe te passen en verbinding te maken met het AKS-cluster.
Een bestaand privé-AKS-cluster bijwerken van een privé-DNS-zone naar openbaar
U kunt alleen bijwerken van byo (eigen keuze) of system naar none. Er wordt geen andere combinatie van updatewaarden ondersteund.
Waarschuwing
Wanneer u een privécluster van byo of system naar none bijwerkt, worden de agentknooppunten veranderd naar een publieke FQDN. In een AKS-cluster dat gebruikmaakt van Azure-schaalvergrotingssets voor virtuele machines, wordt een upgrade van nodeinstallatiekopieën uitgevoerd om uw knooppunten bij te werken met de openbare FQDN.
Werk een privécluster bij van byo of system naar none met behulp van de az aks update opdracht met de --private-dns-zone parameter ingesteld op none.
az aks update \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--private-dns-zone none
Voeg de volgende code toe aan de bestaande
main.tfom het privé-AKS-cluster bij te werken van een privé-DNS-zone naar openbaar. In dit voorbeeld wordt gebruikgemaakt van geavanceerde netwerken. U kunt deze wijzigen om standaardnetwerken te gebruiken door de relevante Terraform-resources en -parameters te wijzigen.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" } }Pas de bijgewerkte Terraform-configuratie toe met behulp van de
terraform planenterraform applyopdrachten.terraform plan terraform apply
Terraform initialiseren
Initialiseer Terraform in de map met het main.tf bestand met behulp van de terraform init opdracht. Met deze opdracht wordt de Azure-provider gedownload die is vereist voor het beheren van Azure resources met Terraform.
terraform init
De Terraform-configuratie opmaken en valideren
Formatteer en valideer de Terraform-configuratie met behulp van de terraform fmt en terraform validate opdrachten.
terraform fmt
terraform validate
Een Terraform-uitvoeringsplan maken
Maak een Terraform-uitvoeringsplan met behulp van de terraform plan opdracht. Met deze opdracht ziet u de resources die Terraform maakt of wijzigt in uw Azure-abonnement.
terraform plan -var="subscription_id=<your-subscription-id>"
De Terraform-configuratie toepassen
Nadat u het uitvoeringsplan hebt bekeken en bevestigd, past u de Terraform-configuratie toe met behulp van de terraform apply opdracht. Met deze opdracht worden de resources gemaakt of gewijzigd die zijn gedefinieerd in uw main.tf-bestand in uw Azure-abonnement.
terraform apply -var="subscription_id=<your-subscription-id>"
Kubectl configureren om verbinding te maken met een privé-AKS-cluster
Als u een Kubernetes-cluster wilt beheren, gebruikt u de Kubernetes-opdrachtregelclient kubectl.
kubectl is al geïnstalleerd als u Azure Cloud Shell gebruikt. Als u lokaal wilt installeren kubectl , gebruikt u de az aks install-cli opdracht.
Configureer
kubectlom verbinding te maken met uw Kubernetes-cluster met behulp van hetaz aks get-credentialscommando. Bij deze opdracht worden de aanmeldgegevens gedownload en wordt de Kubernetes-opdrachtregelinterface (CLI) geconfigureerd om deze te gebruiken.az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>Controleer de verbinding met uw cluster met behulp van de
kubectl getopdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd.kubectl get nodesDe opdracht retourneert uitvoer die vergelijkbaar is met de volgende voorbeelduitvoer:
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