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 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).

Vue d’ensemble

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 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 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 l’enregistrement A dans la zone DNS privé afin de résoudre l’adresse IP privée du point de terminaison privé pour la communication avec le serveur d’API.

Disponibilité dans les régions

Les clusters privés sont disponibles 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.
  • 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 ?
  • 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, voir Activer ou désactiver le mode cluster privé sur un cluster existant avec l’intégration au réseau virtuel du serveur d’API.

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. Utilisez plutôt des agents autohé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 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.
  • 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.

Créer un cluster AKS privé

  1. 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 \
        --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.

    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --generate-ssh-keys
    

Établir une connexion au cluster privé

Pour gérer un cluster Kubernetes, utilisez kubectl, le client de ligne de commande Kubernetes. 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 afin de vous connecter à votre cluster Kubernetes avec 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. Pour vérifier la connexion à votre cluster, exécutez la commande kubectl get. Cette commande renvoie la liste des nœuds de cluster.

    kubectl get nodes
    

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 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 <resourceID> \
        --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

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 : cela vous oblige à 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 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. 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.
    • 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.
    • Vous pouvez utiliser fqdn-subdomain avecCUSTOM_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. Le cluster doit utiliser l’authentification d’identité managée affectée par l’utilisateur.
    • Si vous spécifiez un <subzone>, il existe une limite de 32 caractères pour le nom <subzone>.

Remarque

Vous pouvez configurer CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID à l’aide d’un modèle ARM ou d’Azure CLI. privateDNSZone accepte la zone DNZ privée resourceID comme illustré dans l’exemple suivant :

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

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 \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resourceID> \
        --private-dns-zone [system|none] \
        --generate-ssh-keys
    

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 \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resourceID> \
        --private-dns-zone <custom private dns zone or custom private dns subzone resourceID> \
        --generate-ssh-keys
    

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 \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resourceID> \
        --private-dns-zone <custom private dns zone resourceID> \
        --fqdn-subdomain <subdomain> \
        --generate-ssh-keys
    

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

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. Avant de mettre à jour, veillez à vous connecter au cluster privé.

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 d’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é à partir de byo ou system vers none à l’aide de la az aks update commande avec les indicateurs suivants :

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

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 :

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.

Appairage de réseaux virtuels

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. Dans le Portail Azure, accédez à votre groupe de ressources de nœud et sélectionnez votre ressource de zone DNS privée.
  2. Dans le menu du service, sous Gestion DNS, sélectionnez Liens de réseau virtuel>Ajouter.
  3. Dans la page Ajouter un lien de réseau virtuel, configurez les paramètres suivants :
    • Nom du lien : entrez le nom du lien de réseau virtuel.
    • Réseau virtuel : sélectionnez le réseau virtuel qui contient la machine virtuelle.
  4. Sélectionnez Créer pour créer le lien de réseau virtuel.
  5. Accédez au groupe de ressources qui contient le réseau virtuel de votre cluster et sélectionnez votre ressource de réseau virtuel.
  6. Dans le menu du service, sous Paramètres, sélectionnez Peerings>Ajouter.
  7. Sur la page Ajouter un Peering, configurez les paramètres suivants :
    • Nom du lien de Peering : entrez un nom pour le lien de Peering.
    • Réseau virtuel : sélectionnez le réseau virtuel de la machine virtuelle.
  8. Sélectionnez Ajouter pour créer le lien de Peering.

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.

Hub-and-spoke de cluster privé

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 :

  • 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é. Créez un point d’extrémité privé dans le réseau virtuel contenant les ressources consommées, puis créez un lien entre votre réseau virtuel et une nouvelle zone DNS privée dans le même réseau.

Important

Si le réseau virtuel est configuré avec des serveurs DNS personnalisés, le DNS privé doit être convenablement configuré de manière 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. Dans la page d’accueil du Portail Azure, sélectionnez Créer une ressource.
  2. Recherchez Point de terminaison privé et sélectionnez Créer>Point de terminaison privé.
  3. Sélectionnez Créer.
  4. Sous l’onglet Informations de base, configurez les paramètres suivants :
    • Détails du projet
      • Abonnement : sélectionnez l’abonnement dans lequel se trouve votre cluster privé.
      • Groupe de ressources : Sélectionnez le groupe de ressources qui contient votre réseau virtuel.
    • Détails de l’instance
      • Nom : entrez un nom pour votre point de terminaison privé, tel que myPrivateEndpoint.
      • Région : sélectionnez la même région que votre réseau virtuel.
  5. Sélectionnez Suivant : Ressource et configurez les paramètres suivants :
    • 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.
  6. Sélectionnez Suivant : Réseau virtuel et configurez les paramètres suivants :
    • Mise en réseau
      • Réseau virtuel : Sélectionnez votre réseau virtuel.
      • Sous-réseau : Sélectionnez votre sous-réseau.
  7. Sélectionnez Suivant : DNS>Suivant : Balises et (éventuellement) configurez des valeurs de clé en fonction de vos besoins.
  8. 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 vous créez le point de terminaison privé, créez une zone DNS privée portant le même nom que la zone DNS privée créée par le cluster privé : N’oubliez pas de créer cette zone DNS dans le réseau virtuel contenant les ressources consommatrices.

  1. Dans le Portail Azure, accédez à votre groupe de ressources de nœud et sélectionnez votre ressource de zone DNS privée.
  2. Dans le menu du service, sous Gestion DNS, sélectionnez Recordsets et notez les éléments suivants :
    • 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 la page d’accueil du 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 Informations de base, configurez les paramètres suivants :
    • 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
      • Nom : entrez le nom de la zone DNS récupérée à partir 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. Dans le menu du service, sous Gestion DNS, sélectionnez Recordsets>Ajouter.
  3. Dans la page Ajouter un jeu d’enregistrements, configurez les paramètres suivants :
    • 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éé.
  4. Sélectionnez Ajouter pour créer l’enregistrement A.

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 menu du service, sous Gestion DNS, sélectionnez Liens de réseau virtuel>Ajouter.
  3. Dans la page Ajouter un lien de réseau virtuel, configurez les paramètres suivants :
    • 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 Créer pour créer le lien.

Attendez quelques minutes que l’opération se termine. Une fois le lien de réseau virtuel créé, 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.
  • Si vous mettez à jour les enregistrements DNS dans la zone DNS privée, vérifiez que l’hôte à partir duquel vous essayez de vous connecter utilise les enregistrements DNS mis à jour. Vous pouvez le vérifier à l’aide de la commande nslookup. Si vous remarquez que les mises à jour ne sont pas reflétées dans la sortie, vous devrez peut-être vider le cache DNS sur votre ordinateur et réessayer.

Étapes suivantes

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