Partager via


Créer un cluster Azure Kubernetes Service (AKS) privé

Cet article vous aide à déployer un cluster AKS basé sur une liaison privée. Si vous souhaitez créer un cluster AKS sans liaison privée ou tunnel requis, consultez Créer un cluster Azure Kubernetes Service (AKS) avec l’intégration du réseau virtuel du serveur d’API.

Vue d’ensemble des clusters privés dans AKS

Dans un cluster privé, le plan de contrôle ou le serveur d’API a des adresses IP internes définies dans le document RFC1918 - Allocation d’adresses pour le document Internet privé . En utilisant un cluster privé, vous pouvez vous assurer que le trafic réseau entre votre serveur d’API et vos pools de nœuds reste uniquement sur le réseau privé.

Le plan de contrôle ou le serveur d’API se trouve dans un groupe de ressources Azure géré par AKS, et votre cluster ou groupe de nœuds se trouve dans votre groupe de ressources. Le serveur et le pool de nœuds peuvent communiquer entre eux via le service Azure Private Link dans le réseau virtuel du serveur d’API et un point de terminaison privé exposé sur le sous-réseau de votre cluster AKS.

Lorsque vous créez un cluster AKS privé, AKS crée des noms de domaine complets privés et publics (FQDN) avec des zones DNS correspondantes par défaut. Pour obtenir des options de configuration DNS détaillées, consultez Configurer une zone DNS privée, une sous-zone DNS privée ou un sous-domaine personnalisé.

Disponibilité des régions

Les clusters privés sont disponibles dans les régions publiques, Azure Government et Microsoft Azure gérés par les régions 21Vianet où AKS est pris en charge.

Conditions préalables pour les clusters AKS privés

  • Azure CLI version 2.28.0 ou ultérieure. Exécutez az --version pour rechercher la version, puis exécutez az upgrade pour mettre à niveau la version. Si vous avez besoin d’installer ou de mettre à niveau, consultez Installer Azure CLI.
  • Si vous utilisez Azure Resource Manager (ARM) ou l’API REST Azure, la version de l’API AKS doit être 2021-05-01 ou ultérieure.
  • Pour utiliser un serveur DNS personnalisé, ajoutez l’adresse IP publique Azure 168.63.129.16 comme serveur DNS en amont dans le serveur DNS personnalisé et veillez à ajouter cette adresse IP publique comme premier serveur DNS. Pour plus d’informations sur l’adresse IP Azure, voir Qu'est-ce que l'adresse IP 168.63.129.16 ?
  • Les clusters AKS existants activés avec l’intégration au réseau virtuel du serveur d’API peuvent avoir le mode cluster privé activé. Pour plus d’informations, consultez Activer ou désactiver le mode cluster privé sur un cluster existant avec l’intégration du réseau virtuel du serveur d’API.

Important

Depuis le 30 novembre 2025, Azure Kubernetes Service (AKS) ne prend plus en charge ou fournit des mises à jour de sécurité pour Azure Linux 2.0. L’image de nœud Azure Linux 2.0 est figée à la version 202512.06.0. À compter du 31 mars 2026, les images de nœud seront supprimées et vous ne pourrez pas mettre à l’échelle vos pools de nœuds. Migrez vers une version Azure Linux prise en charge en mettant à niveau vos pools de nœuds vers une version Kubernetes prise en charge ou en migrant vers osSku AzureLinux3. Pour plus d’informations, consultez [Retrait] Pools de nœuds Azure Linux 2.0 sur AKS.

Limitations et considérations relatives aux clusters AKS privés

  • Vous ne pouvez pas appliquer de plages d’adresses IP autorisées au point de terminaison du serveur d’API privé. Elles s’appliquent uniquement au serveur d’API public.
  • Les limitations du service Azure Private Link s’appliquent aux clusters privés.
  • Les agents hébergés par Microsoft Azure DevOps avec des clusters privés ne sont pas pris en charge. Envisagez d’utiliser des agents auto-hébergés.
  • Si vous devez activer Azure Container Registry sur un cluster AKS privé, configurez une liaison privée pour le registre de conteneurs dans le réseau virtuel de cluster ou configurez le peering entre le réseau virtuel du registre de conteneurs et le réseau virtuel du cluster privé.
  • La suppression ou la modification du point de terminaison privé dans le sous-réseau du client entraîne l’arrêt du cluster.
  • Le service Azure Private Link est pris en charge seulement sur Azure Load Balancer Standard. Azure Load Balancer De base n’est pas pris en charge.

Hub and spoke avec DNS personnalisée pour les clusters AKS privés

Les architectures hub-and-spoke sont couramment utilisées pour déployer des réseaux dans Azure. Dans la plupart de ces déploiements, les paramètres DNS des réseaux virtuels spoke sont configurés pour faire référence à un redirecteur DNS central afin d’autoriser la résolution DNS locale et basée sur Azure.

Hub-and-spoke de cluster privé

Gardez à l’esprit les considérations suivantes lors du déploiement de clusters AKS privés dans des architectures hub-and-spoke avec dns personnalisé :

  • Lorsqu’un cluster privé est créé, un point de terminaison privé (1) et une zone DNS privée (2) sont créés dans le groupe de ressources géré par cluster par défaut. Le cluster utilise un enregistrement A dans la zone privée pour résoudre l’adresse IP du point de terminaison privé pour la communication avec le serveur d’API.

  • La zone DNS privée est liée uniquement au réseau virtuel auquel les nœuds de cluster sont attachés (3), ce qui signifie que le point de terminaison privé ne peut être résolu que par les hôtes de ce réseau virtuel lié. Dans les scénarios où aucun DNS personnalisé n'est configuré sur le réseau virtuel (par défaut), cela fonctionne sans problème car les hôtes pointent vers 168.63.129.16 pour le DNS qui peut résoudre les enregistrements dans la zone DNS privée grâce à la connexion.

  • Si vous conservez le comportement de zone DNS privée par défaut, AKS tente de lier la zone directement au réseau virtuel spoke qui héberge le cluster même si la zone est déjà liée à un réseau virtuel hub.

    Dans les réseaux virtuels spoke qui utilisent des serveurs DNS personnalisés, cette action peut échouer si l’identité managée du cluster ne dispose pas du contributeur réseau sur le réseau virtuel spoke.

    Pour éviter l’échec, choisissez l’une des configurations prises en charge suivantes :

    • Zone DNS privée personnalisée : fournissez une zone privée précréée et définissez privateDNSZone / --private-dns-zone son ID de ressource. Liez cette zone au réseau virtuel approprié (par exemple, le réseau virtuel hub) et définissez publicDNS à false / utiliser --disable-public-fqdn.
    • DNS public uniquement : désactivez la création de zone privée en définissant privateDNSZone / --private-dns-zonesur noneet en laissant publicDNS à sa valeur par défaut (true) / n’utilisez --disable-public-fqdnpas .
  • Si vous utilisez votre propre table de routage (BYO) avec kubenet et votre propre DNS avec des clusters privés, la création du cluster échoue. Vous devez associer RouteTable dans le groupe de ressources du nœud au sous-réseau après l’échec de la création du cluster afin que la création réussisse.

Gardez à l’esprit les limitations suivantes lors de l’utilisation d’un DNS personnalisé avec des clusters AKS privés :

  • La configuration de privateDNSZone / --private-dns-zone sur noneetpublicDNS: false / --disable-public-fqdn en même temps n’est pas pris en charge.
  • Le transfert conditionnel ne prend pas en charge les sous-domaines.

Créer un cluster AKS privé avec mise en réseau de base par défaut

  1. Créez un groupe de ressources à l’aide de la commande az group create. Vous pouvez également utiliser un groupe de ressources existant pour votre cluster AKS.

    az group create \
        --name <private-cluster-resource-group> \
        --location <location>
    
  2. Créez un cluster privé avec la mise en réseau de base par défaut à l’aide de la commande az aks create avec l’indicateur --enable-private-cluster.

    Paramètres clés dans cette commande :

    • --enable-private-cluster: active le mode de cluster privé.
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --generate-ssh-keys
    
  3. Configurez kubectl pour vous connecter au cluster AKS privé.

Créer un cluster AKS privé avec mise en réseau avancée

  1. Créez un groupe de ressources à l’aide de la commande az group create. Vous pouvez également utiliser un groupe de ressources existant pour votre cluster AKS.

    az group create \
        --name <private-cluster-resource-group> \
        --location <location>
    
  2. Créez un cluster privé avec une mise en réseau avancée à l’aide de la az aks create commande.

    Paramètres clés dans cette commande :

    • --enable-private-cluster: active le mode de cluster privé.
    • --network-plugin azure: spécifie le plug-in de mise en réseau Azure CNI.
    • --vnet-subnet-id: ID de ressource d’un sous-réseau existant dans un réseau virtuel.
    • --dns-service-ip: adresse IP disponible dans la plage d’adresses du service Kubernetes à utiliser pour le service DNS de cluster.
    • --service-cidr: plage d’adresses IP de notation CIDR à partir de laquelle attribuer des adresses IP de cluster de service.
    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 10.2.0.10 \
        --service-cidr 10.2.0.0/24
        --generate-ssh-keys
    
  3. Configurez kubectl pour vous connecter au cluster AKS privé.

Utiliser des domaines personnalisés avec des clusters AKS privés

Si vous souhaitez configurer des domaines personnalisés qui ne peuvent être résolus qu’en interne, consultez Utiliser des domaines personnalisés.

Désactiver un nom de domaine complet public sur un cluster AKS privé

Désactiver un nom de domaine complet public sur un nouveau cluster

  • Désactivez un nom de domaine complet public lors de la création d’un cluster AKS privé à l’aide de la commande az aks create avec l’indicateur --disable-public-fqdn.

    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 <private-dns-zone-mode> \
        --disable-public-fqdn \
        --generate-ssh-keys
    

Désactiver un FQDN public sur un cluster existant

  • Désactivez un FQDN public sur un cluster AKS existant à l’aide de la commande az aks update avec l’indicateur --disable-public-fqdn.

    az aks update \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --disable-public-fqdn
    

Configurer une zone DNS privée, une sous-zone DNS privée ou un sous-domaine personnalisé pour un cluster AKS privé

Vous pouvez configurer des paramètres DNS privés pour un cluster AKS privé à l’aide d’Azure CLI (avec le --private-dns-zone paramètre) ou d’un modèle Azure Resource Manager (ARM) (avec la privateDNSZone propriété). Le tableau suivant présente les options disponibles pour le --private-dns-zone paramètre/ privateDNSZone propriété :

Réglage Descriptif
system Valeur par défaut lors de la configuration d’une zone DNS privée. Si vous omettez --private-dns-zone / privateDNSZone, AKS crée une zone DNS privée dans le groupe de ressources de nœud.
none Si vous définissez --private-dns-zone / privateDNSZone sur none, AKS ne crée pas de zone DNS privée.
<custom-private-dns-zone-resource-id> Pour utiliser ce paramètre, vous devez créer une zone DNS privée au format suivant pour le cloud global Azure : privatelink.<region>.azmk8s.io ou <subzone>.privatelink.<region>.azmk8s.io. Vous avez besoin de l’ID de ressource de la zone DNS privée pour une utilisation ultérieure. Vous avez également besoin d’une identité ou d’un principal de service affecté par l’utilisateur avec les rôles Contributeur de zone DNS privé et Contributeur réseau . Pour les clusters utilisant l’intégration au réseau virtuel du serveur d’API, une zone DNS privée prend en charge le format de nommage de private.<region>.azmk8s.io ou <subzone>.private.<region>.azmk8s.io. Vous ne pouvez pas modifier ou supprimer cette ressource après avoir créé le cluster, car elle peut entraîner des problèmes de performances et des échecs de mise à niveau de cluster. Vous pouvez utiliser --fqdn-subdomain <subdomain> avec<custom-private-dns-zone-resource-id> uniquement pour fournir des fonctionnalités de sous-domaine à privatelink.<region>.azmk8s.io. Si vous spécifiez une sous-zone, il existe une limite de 32 caractères pour le <subzone> nom.

Gardez à l’esprit les considérations suivantes lors de la configuration du DNS privé pour un cluster AKS privé :

  • Si la zone DNS privée se trouve dans un autre abonnement que le cluster AKS, vous devez inscrire le fournisseur Azure Microsoft.ContainerServices dans les deux abonnements.
  • Si votre cluster AKS est configuré avec un principal de service Active Directory, AKS ne prend pas en charge l’utilisation d’une identité managée affectée par le système avec une zone DNS privée personnalisée. Le cluster doit utiliser l’authentification par identité managée déléguée à l’utilisateur.

Créer un cluster AKS privé avec une zone DNS privée

  1. Créez un cluster AKS privé avec une zone DNS privée à l’aide de la az aks create commande.

    Paramètres clés dans cette commande :

    • --enable-private-cluster: active le mode de cluster privé.
    • --private-dns-zone [system|none]: configure la zone DNS privée pour le cluster. La valeur par défaut est system.
    • --assign-identity <resource-id>: ID de ressource d’une identité managée affectée par l’utilisateur avec les rôles Contributeur de zone DNS privé et Contributeur réseau .
    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
    
  2. Configurez kubectl pour vous connecter au cluster AKS privé.

Créer un cluster AKS privé avec une zone ou une sous-zone DNS privée personnalisée

  1. Créez un cluster AKS privé avec une zone DNS privée personnalisée ou une sous-zone à l’aide de la az aks create commande.

    Paramètres clés dans cette commande :

    • --enable-private-cluster: active le mode de cluster privé.
    • --private-dns-zone <custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>: ID de ressource d’une zone DNS privée ou d’une sous-zone précréée au format suivant pour le cloud global Azure : privatelink.<region>.azmk8s.io ou <subzone>.privatelink.<region>.azmk8s.io.
    • --assign-identity <resource-id>: ID de ressource d’une identité managée affectée par l’utilisateur avec les rôles Contributeur de zone DNS privé et Contributeur réseau .
    # The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io"
    
    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
    
  2. Configurez kubectl pour vous connecter au cluster AKS privé.

Créer un cluster AKS privé avec une zone DNS privée personnalisée et un sous-domaine personnalisé

  1. Créez un cluster AKS privé avec une zone DNS privée personnalisée et un sous-domaine à l’aide de la az aks create commande.

    Paramètres clés dans cette commande :

    • --enable-private-cluster: active le mode de cluster privé.
    • --private-dns-zone <custom-private-dns-zone-resource-id>: ID de ressource d’une zone DNS privée précréée au format suivant pour le cloud global Azure : privatelink.<region>.azmk8s.io.
    • --fqdn-subdomain <subdomain> : le sous-domaine à utiliser pour le FQDN du cluster dans la zone DNS privée personnalisée.
    • --assign-identity <resource-id>: ID de ressource d’une identité managée affectée par l’utilisateur avec les rôles Contributeur de zone DNS privé et Contributeur réseau .
    # The custom private DNS zone name should be in one of the following formats: "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io"
    
    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
    
  2. Configurez kubectl pour vous connecter au cluster AKS privé.

Mettre à jour un cluster AKS privé existant à partir d’une zone DNS privée vers public

Vous pouvez uniquement effectuer une mise à jour à partir de byo (apportez votre propre) ou system vers none. Aucune autre combinaison de valeurs de mise à jour n’est prise en charge.

Avertissement

Lorsque vous mettez à jour un cluster privé de byo ou system vers none, les nœuds de l’agent changent pour utiliser un nom de domaine complet public. Dans un cluster AKS qui utilise Microsoft Azure Virtual Machine Scale Sets, une mise à niveau de l’image de nœud est effectuée pour mettre à jour vos nœuds avec le nom de domaine complet public.

  • Mettez à jour un cluster privé de byo ou system à none en utilisant la commande az aks update avec le paramètre --private-dns-zone défini sur none.

    az aks update \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --private-dns-zone none
    

Configurer kubectl pour se connecter à un cluster AKS privé

Pour gérer un cluster Kubernetes, utilisez le client de ligne de commande Kubernetes, kubectl. Si vous utilisez Azure Cloud Shell, kubectl est déjà installé. Pour installer kubectl localement, utilisez la commande az aks install-cli .

  1. Configurez kubectl pour se connecter à votre cluster Kubernetes à l’aide de la commande az aks get-credentials. Cette commande télécharge les informations d’identification et configure l’interface CLI Kubernetes pour les utiliser.

    az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>
    
  2. Vérifiez la connexion à votre cluster à l’aide de la commande kubectl get. Cette commande renvoie la liste des nœuds de cluster.

    kubectl get nodes
    

    La commande retourne une sortie similaire à l’exemple de sortie suivant :

    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