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

Dans un cluster privé, le plan de contrôle ou le serveur d’API a des adresses IP internes qui sont définies dans le document RFC1918 - Address Allocation for Private Internets (RFC1918 - Allocation d’adresses pour les réseaux Internet privés). 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 sur le réseau privé uniquement.

Le plan de contrôle ou le serveur d’API est dans un groupe de ressources Azure managé par Azure Kubernetes Service (AKS). Votre cluster ou pool de nœuds est dans votre groupe de ressources. Le serveur et le cluster ou le pool de nœuds peuvent communiquer entre eux par le biais du service Azure Private Link dans le réseau virtuel du serveur d’API et d’un point de terminaison privé exposé dans le sous-réseau de votre cluster AKS.

Quand vous provisionnez un cluster AKS privé, AKS crée par défaut un FQDN privé avec une zone DNS privée et un FQDN public supplémentaire avec un enregistrement A correspondant dans le DNS public Azure. Les nœuds d’agent continuent d’utiliser un enregistrement A dans la zone DNS privé pour résoudre l’adresse IP privée du point de terminaison privé pour la communication avec le serveur d’API.

L’objectif de cet article est de vous aider à 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 l’article Création d’un cluster Azure Kubernetes Service doté de l’intégration au réseau virtuel du serveur d’API (préversion).

Disponibilité des régions

Le cluster privé est disponible dans les régions public Azure Government et Microsoft Azure 21Vianet où AKS est pris en charge.

Prérequis

  • 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 devez installer ou mettre à niveau, voir Installer Azure CLI.
  • Extension aks-preview version 0.5.29 ou supérieure.
  • 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.
  • 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.
  • 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é, puis veillez à ajouter cette adresse IP publique en tant que premier serveur DNS. Pour plus d’informations sur l’adresse IP Azure, consultez Qu’est-ce que l’adresse IP 168.63.129.16 ?

Remarque

Le pool de nœuds Linux Azure est désormais en disponibilité générale (GA). Pour en savoir plus sur les avantages et les étapes de déploiement, consultez la Présentation de l’hôte de conteneur Linux Azure pour AKS.

Limites

  • Les plages d’adresses IP autorisées ne peuvent pas être appliquées au point de terminaison du serveur d’API privé, elles sont uniquement applicables 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 pour utiliser un cluster AKS privé, configurez une liaison privée pour le registre de conteneurs dans le réseau virtuel du cluster ou configurez le peering entre le réseau virtuel Container Registry et le réseau virtuel du cluster privé.
  • La conversion de clusters AKS existants en clusters privés n’est pas prise en charge.
  • La suppression ou la modification du point de terminaison privé dans le sous-réseau du client entraîne l’arrêt du fonctionnement du cluster.

Créer un cluster AKS privé

Créer un groupe de ressources

Créez un groupe de ressources avec la commande az group create. Vous pouvez également utiliser un groupe de ressources existant pour votre cluster AKS.

az group create -l eastus -n myResourceGroup

Mise en réseau de base par défaut

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.

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster  

Mise en réseau avancée

Créez un cluster privé avec la mise en réseau avancée à l’aide de la commande az aks create avec les indicateurs suivants :

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 

Utiliser des domaines personnalisés

Si vous voulez configurer des domaines personnalisés qui peuvent être résolus seulement en interne, consultez la section Utiliser des domaines personnalisés.

Désactiver un FQDN public

Désactiver un FQDN public sur un nouveau cluster AKS

Désactivez un nom de domaine complet (FQDN) public lors de la création d’un cluster AKS privé à l’aide de l’indicateur --disable-public-fqdn.

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <private-dns-zone-mode> --disable-public-fqdn

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 -n <private-cluster-name> -g <private-cluster-resource-group> --disable-public-fqdn

Configurer une zone DNS privée

Vous pouvez configurer des zones DNS privées à l’aide des paramètres suivants :

  • system : il s’agit de la valeur par défaut. Si l’argument --private-dns-zone est omis, AKS crée une zone DNS privée dans le groupe de ressources du nœud.
  • none : la valeur par défaut est DNS public. AKS ne va pas créer une zone DNS privée.
  • CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID : ce paramètre vous oblige à créer une zone DNS privée au format suivant pour le cloud Azure mondial : privatelink.<region>.azmk8s.io ou <subzone>.privatelink.<region>.azmk8s.io. Vous aurez besoin de l’ID de ressource de la zone DNS privée pour une utilisation ultérieure. Vous avez également besoin d’une identité attribuée par l’utilisateur ou d’un principal de service avec au moins les rôles Collaborateur de zone DNS privée et Contributeur de réseau. Lors du déploiement à l’aide de l’intégration au réseau virtuel du serveur d’API, une zone DNS privée prend en charge le format de dénomination private.<region>.azmk8s.io ou <subzone>.private.<region>.azmk8s.io.
    • 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.
    • « fqdn-subdomain » peut être utilisé avec « CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID » uniquement pour fournir des fonctionnalités de sous-domaine à privatelink.<region>.azmk8s.io.
    • 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.
    • Si vous spécifiez un <subzone>, le nom <subzone> est limité à 32 caractères.

Remarque

CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID peut être configuré à l’aide d’un modèle ARM en plus d’Azure CLI. privateDNSZone accepte la zone DNZ privée resourceID, comme indiqué dans l’exemple suivant :

properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}

Important

Le paramètre CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID ne peut plus être modifié une fois le cluster créé et ne peut pas être supprimé. Dans le cas contraire, le cluster rencontrera des problèmes lors des opérations de mise à niveau.

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

Créez un cluster AKS privé avec une zone DNS privée à l’aide de la commande az aks create avec les indicateurs suivants :

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone [system|none]

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

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

# The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone or custom private dns subzone resourceID>

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

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

# 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 -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone resourceID> --fqdn-subdomain <subdomain>

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

Notes

Cette fonctionnalité nécessite la aks-preview version de l’extension > = 0.5.97

Mettez à jour un cluster privé à partir de byo ou system vers none à l’aide de la az aks update commande avec les indicateurs suivants :

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

Notes

Vous pouvez mettre à jour uniquement à partir de byo ou system vers none. Aucune autre combinaison de valeurs de mise à jour n’est prise en charge.

Options de connexion au cluster privé

Le point de terminaison du serveur d’API n’a pas d’adresse IP publique. Pour gérer le serveur d’API, vous devez utiliser une machine virtuelle qui a accès au réseau virtuel (VNet) Azure du cluster AKS. Vous pouvez établir une connectivité réseau au cluster privé de différentes manières :

Notes

La création d’une machine virtuelle dans le même réseau virtuel que le cluster AKS est l’option la plus simple. ExpressRoute et les VPN présentent des coûts et une complexité de mise en réseau supplémentaires. L’appairage de réseaux virtuels implique la planification de vos plages CIDR réseau pour veiller à ce qu'aucune plage ne se chevauche.

Peering de réseau virtuel

L’appairage de réseaux virtuels est un moyen d’accéder à votre cluster privé. Pour utiliser l’appairage de réseaux virtuels, vous devez configurer une liaison entre le réseau virtuel et la zone DNS privée.

  1. À partir de votre navigateur, accédez au portail Azure.
  2. Dans le portail Azure, accédez au groupe de ressources du nœud.
  3. Sélectionnez la zone DNS privée.
  4. Dans le volet gauche, sélectionnez Réseau virtuel.
  5. Créez un lien permettant d’ajouter le réseau virtuel de la machine virtuelle à la zone DNS privée. Il faut quelques minutes pour que le lien de zone DNS soit disponible.
  6. Dans le portail Azure, accédez au groupe de ressources contenant le réseau virtuel de votre cluster.
  7. Dans le volet de droite, sélectionnez le réseau virtuel. Le nom du réseau virtuel est au format aks-vnet-*.
  8. Dans le volet de gauche, sélectionnez Appairages.
  9. Sélectionnez Ajouter, ajoutez le réseau virtuel de la machine virtuelle, puis créez l’appairage. Pour en savoir plus, consultez Peering de réseaux virtuels.

Hub-and-spoke avec DNS personnalisé

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. Lors du déploiement d’un cluster AKS dans un environnement de mise en réseau de ce type, certaines considérations particulières doivent être prises en compte :

Private cluster hub and spoke

  • Quand un cluster privé est approvisionné, un point de terminaison privé (1) et une zone DNS privée (2) sont créés par défaut dans le groupe de ressources managé par le cluster. 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). Cela signifie que le point de terminaison privé peut uniquement être résolu 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 l’adresse 168.63.129.16 pour le DNS qui peut résoudre les enregistrements dans la zone DNS privée en raison de la liaison.
  • Dans les scénarios où le réseau virtuel contenant votre cluster présente des paramètres DNS personnalisés (4), le déploiement du cluster échoue, sauf si la zone DNS privée est liée au réseau virtuel qui contient les programmes de résolution DNS personnalisés (5). Ce lien peut être créé manuellement après la création de la zone privée lors de l’approvisionnement du cluster ou via l’automatisation lors de la détection de la création de la zone à l’aide de mécanismes de déploiement basés sur les événements (par exemple, Azure Event Grid et Azure Functions). Pour éviter l’échec du cluster lors du déploiement initial, le cluster peut être déployé avec l’ID de ressource de zone DNS privé. Cela fonctionne uniquement avec le type de ressource Microsoft.ContainerService/managedCluster et l’API version 2022-07-01. L’utilisation d’une version antérieure avec un modèle ARM ou une définition de ressource Bicep n’est pas prise en charge.

Notes

Le transfert conditionnel ne prend pas en charge les sous-domaines.

Notes

Si vous utilisez l’apport de votre propre table de routage avec kubenet et l’apport de votre propre DNS avec un cluster privé, la création du cluster échouera. 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.

Utiliser une connexion de point de terminaison privé

Un point de terminaison privé peut être configuré de telle façon qu’un réseau virtuel n’a pas besoin d’être appairé pour communiquer avec le cluster privé. Pour utiliser un point de terminaison privé, créez un point de terminaison privé dans votre réseau virtuel, puis créez une liaison entre votre réseau virtuel et une nouvelle zone DNS privée.

Important

Si le réseau virtuel est configuré avec des serveurs DNS personnalisés, le DNS privé doit être configuré de manière appropriée pour l’environnement. Pour plus d’informations, consultez la documentation sur la résolution de noms pour les réseaux virtuels.

Créer une ressource Point de terminaison privé

Créez une ressource Point de terminaison privé dans votre réseau virtuel :

  1. À partir de votre navigateur, accédez au portail Azure.
  2. Dans le menu du Portail Azure, sélectionnez Créer une ressource.
  3. Recherchez Point de terminaison privé et sélectionnez Créer> Point de terminaison privé.
  4. Cliquez sur Créer.
  5. Sous l’onglet De base, configurez les options suivantes :
    • Détails du projet :
      • Sélectionnez un abonnement Azure.
      • Sélectionnez le Groupe de ressources dans lequel votre réseau virtuel se trouve.
    • Détails de l’instance :
      • Entrez un Nom pour le point de terminaison privé, comme myPrivateEndpoint.
      • Sélectionnez une Région pour le point de terminaison privé.

Important

Vérifiez que la région sélectionnée est identique au réseau virtuel à partir duquel vous souhaitez vous connecter. Dans le cas contraire, votre réseau virtuel ne s’affiche pas dans l’onglet Configuration.

  1. Sélectionnez Suivant : Ressource, puis configurez les options suivantes :
    • Méthode de connexion: sélectionnez Se connecter à une ressource Azure dans mon répertoire.
    • Abonnement : sélectionnez l’abonnement dans lequel se trouve votre cluster privé.
    • Type de ressource : sélectionnez Microsoft.ContainerService/managedClusters.
    • Ressource : sélectionnez votre cluster privé.
    • Sous-ressource cible : sélectionnez management.
  2. Sélectionnez Suivant : Réseau virtuel, puis configurez les options suivantes :
    • Réseau :
      • Réseau virtuel : Sélectionnez votre réseau virtuel.
      • Sous-réseau : Sélectionnez votre sous-réseau.
  3. Sélectionnez Suivant : DNS>Suivant : Balises et (éventuellement) configurez des valeurs de clé en fonction de vos besoins.
  4. Sélectionnez Suivant : Vérifier + créer>Créer.

Une fois la ressource créée, enregistrez l’adresse IP privée du point de terminaison privé pour une utilisation ultérieure.

Créer une zone DNS privée

Une fois le point de terminaison privé créé, créez une zone DNS privée portant le même nom que la zone DNS privée créée par le cluster privé :

  1. Accédez au groupe de ressources du nœud dans le portail Azure.
  2. Sélectionnez la zone DNS privée et enregistrez :
    • Le nom de la zone DNS privée, qui suit le modèle *.privatelink.<region>.azmk8s.io.
    • Le nom de l’enregistrement A (à l’exception du nom DNS privé).
    • La durée de vie (TTL).
  3. Dans le portail Azure, sélectionnez Créer une ressource.
  4. Recherchez Zone DNS privée, puis sélectionnez Créer > Zone DNS privée.
  5. Sous l’onglet De base, configurez les options suivantes :
    • Détails du projet :
      • Sélectionnez votre abonnement.
      • Sélectionnez le groupe de ressources dans lequel vous avez créé le point de terminaison privé.
    • Détails de l’instance :
      • Entrez le nom de la zone DNS récupéré lors des étapes précédentes.
      • La région correspond par défaut à l’emplacement de votre groupe de ressources.
  6. Sélectionnez Vérifier + créer>Créer.

Créer un enregistrement A

Une fois la zone DNS privée créée, créez un enregistrement A qui associe le point de terminaison privé au cluster privé :

  1. Accédez à la zone DNS privée créée dans les étapes précédentes.
  2. Sur la page Vue d’ensemble, sélectionnez Jeu d’enregistrements.
  3. Sous l’onglet Ajouter un jeu d’enregistrements, configurez les options suivantes :
    • Nom : entrez le nom récupéré à partir de l’enregistrement A dans la zone DNS du cluster privé.
    • Type : sélectionnez A – Enregistrement d’adresse.
    • TTL : entrez le numéro de l’enregistrement A dans la zone DNS du cluster privé.
    • Unité de durée de vie : modifiez la valeur de la liste déroulante pour qu’elle corresponde à celle de l’enregistrement A de la zone DNS du cluster privé.
    • Adresse IP : entrez l’adresse IP du point de terminaison privé que vous avez créé.

Important

Lors de la création de l’enregistrement A, n’utilisez pas le nom de domaine complet (FQDN), mais uniquement le nom.

Une fois l’enregistrement A créé, liez la zone DNS privée au réseau virtuel qui va accéder au cluster privé :

  1. Accédez à la zone DNS privée créée dans les étapes précédentes.
  2. Dans le volet gauche, sélectionnez Liens de réseau virtuel.
  3. Sélectionnez Ajouter, puis configurez les options suivantes :
    • Nom du lien : entrez le nom de la liaison de réseau virtuel.
    • Abonnement : sélectionnez l’abonnement dans lequel se trouve votre cluster privé.
    • Réseau virtuel : sélectionnez le réseau virtuel de votre cluster privé.
  4. Sélectionnez OK pour créer la liaison.

Attendez quelques minutes que l’opération se termine. Une fois la liaison de réseau virtuel créée, vous pouvez y accéder à partir de l’onglet Liens de réseaux virtuels que vous avez utilisé à l’étape 2.

Avertissement

Si le cluster privé est arrêté et redémarré, le service de liaison privée d’origine du cluster privé est supprimé et recréé, ce qui interrompt la connexion entre votre point de terminaison privé et le cluster privé. Pour résoudre ce problème, supprimez et recréez tous les points de terminaison privés créés par l’utilisateur et liés au cluster privé. Si les points de terminaison privés recréés ont de nouvelles adresses IP, vous devez également mettre à jour les enregistrements DNS.

Étapes suivantes

Pour connaître les meilleures pratiques associées, consultez Meilleures pratiques relatives à la connectivité réseau et à la sécurité dans AKS.