Créer une passerelle NAT managée ou affectée par l’utilisateur pour votre cluster Azure Kubernetes Service (AKS)

S’applique à : ✔️ AKS Automatic ✔️ AKS Standard

Pour la plupart des charges de travail de production, AKS Automatic est l’option par défaut recommandée pour un environnement de production sur AKS. Les clusters automatiques AKS incluent une passerelle NAT managée préconfigurée.

Dans AKS Standard, vous pouvez créer ou configurer une passerelle NAT managée lorsque vous souhaitez une connectivité sortante gérée par AKS pour votre cluster. Pour les scénarios de mise en réseau BYO (bring-your-own), utilisez une passerelle NAT affectée par l’utilisateur.

Bien que vous puissiez router le trafic de sortie via un Azure Load Balancer, il existe des limitations sur le nombre de flux sortants de trafic que vous pouvez avoir. Azure NAT Gateway prend en charge jusqu’à 64 512 flux de trafic UDP sortant et TCP par adresse IP avec un maximum de 16 adresses IP. Trois types de trafic sortant prennent en charge une passerelle NAT : managedNATGatewayV2 (préversion), managedNATGateway et userAssignedNATGateway.

Cet article explique comment créer un cluster AKS avec une passerelle NAT managée et une passerelle NAT affectée par l’utilisateur pour le trafic sortant. Il vous montre également comment désactiver OutboundNAT pour Windows.

Important

Le type managedNATGatewayV2 sortant est actuellement en préversion. Consultez les conditions d’utilisation Supplemental pour les préversions Microsoft Azure pour connaître les conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou qui ne sont pas encore publiées dans la disponibilité générale.

Prérequis

Les clusters automatiques AKS incluent une passerelle NAT managée préconfigurée. Les étapes décrites dans cet article concernent principalement les scénarios de mise en réseau AKS Standard et personnalisés.

  • Vérifiez que vous utilisez la dernière version de Azure CLI.
  • Vérifiez que vous utilisez Kubernetes version 1.20.x ou ultérieure.
  • La passerelle NAT managée n’est pas compatible avec les réseaux virtuels personnalisés.

Important

Dans les clusters non privés, le trafic du cluster du serveur d’API est routé et traité via le type de trafic sortant du cluster. Pour éviter que le trafic du serveur d’API ne soit traité comme du trafic public, envisagez d’utiliser un cluster privé, ou consultez la fonctionnalité Intégration au réseau virtuel du serveur d’API.

Passerelle NAT managée dans AKS

AKS Automatic utilise une passerelle NAT managée dans sa configuration par défaut préconfigurée, prête pour la production. Utilisez cette section si vous utilisez AKS Standard ou si vous devez comprendre comment la passerelle NAT managée se comporte dans un cluster AKS.

La passerelle NAT managée est l’option sortante gérée par AKS. AKS crée et gère la passerelle NAT pour fournir une connectivité sortante pour vos nœuds de cluster.

Utilisez la passerelle NAT managée lorsque vous souhaitez :

  • Connectivité sortante gérée par AKS avec moins de surcharge opérationnelle.
  • Chemin sortant par défaut convivial pour la production.
  • Gestion de sortie plus simple qu’un déploiement de passerelle NAT géré par le client.
  • Modèle de mise en réseau AKS standard sans apporter votre propre ressource de passerelle NAT.

Créer un cluster AKS avec une passerelle NAT Gateway managée

Paramètres IP de sortie

Le tableau suivant décrit chaque paramètre IP sortant et quand l’utiliser :

Paramètre Input Version de l’adresse IP Qui gère les adresses IP publiques
--nat-gateway-managed-outbound-ip-count Valeur dans l'intervalle de [1, 16]. Nombre souhaité d'adresses IPv4 sortantes pour la connexion via la passerelle NAT. IPv4 Azure
--nat-gateway-managed-outbound-ipv6-count Valeur dans l'intervalle de [1, 16]. Nombre souhaité d'adresses IPv6 sortantes pour la connexion sortante d'une passerelle NAT. IPv6 Azure
--nat-gateway-outbound-ips IDs de ressource IP publique, séparés par des virgules, pour la connexion sortante de la passerelle NAT. IPv4 ou IPv6 Client
--nat-gateway-outbound-ip-prefixes Identifiants de ressources de préfixes d’adresses IP publiques, séparés par des virgules, pour la connexion sortante de la passerelle NAT. IPv4 ou IPv6 Client

Créer un cluster AKS avec une passerelle NAT StandardV2 managée (managedNATGatewayV2)

Important

Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les versions d'essai sont fournies « en l’état » et « selon disponibilité », et elles sont exclues des contrats de niveau de service et de la garantie limitée. Les versions préliminaires AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Par conséquent, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :

  • Créez un cluster AKS avec une passerelle NAT StandardV2 managée à l’aide de la commande avec les paramètres , , , , et .
  • Lorsque vous configurez des adresses IP sortantes pour un managedNATgatewayV2, utilisez l’une des approches suivantes. Vous ne pouvez pas utiliser les adresses IP sortantes gérées par Azure et définies par le client.
    • Adresses IP gérées par Azure : utilisez --nat-gateway-managed-ip-outbound-count et --nat-gateway-managed-outbound-ipv6-count pour permettre à Azure d’allouer et de gérer automatiquement les adresses IP publiques sortantes pour votre compte.
    • Adresses IP définies par le client : utilisez --nat-gateway-outbound-ips et --nat-gateway-outbound-ip-prefixes apportez vos propres adresses IP publiques ou préfixes préprovisionnés, ce qui vous permet de contrôler entièrement les adresses spécifiques utilisées pour le trafic sortant. La passerelle NAT StandardV2 nécessite l’utilisation de nouvelles adresses IP publiques StandardV2. Les adresses IP publiques de référence SKU standard existantes ne fonctionnent pas avec la passerelle NAT StandardV2.

Installer l’extension aks-preview Azure CLI

Le type de trafic managedNATGatewayV2 sortant est actuellement en version préliminaire. Pour utiliser ce type de trafic sortant, installez l’extension Azure CLI aks-preview et enregistrez l’indicateur de fonctionnalité ManagedNATGatewayV2Preview.

Installez ou mettez à jour l’extension Azure CLI preview à l’aide de la commande az extension add ou az extension update. La version minimale de l’extension aks-preview Azure CLI est 20.0.0b1.

# Install the aks-preview extension
az extension add --name aks-preview

# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

Inscrire l’indicateur de fonctionnalité ManagedNATGatewayV2Preview

  1. Inscrivez l’indicateur de fonctionnalité ManagedNATGatewayV2Preview à l’aide de la commande az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    
  2. Vérifiez la réussite de l’inscription à l’aide de la az feature show commande. L’inscription prend quelques minutes.

    az feature show --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    

    Une fois que la fonctionnalité Registered est affichée, actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la commande az provider register.

Créer un cluster AKS avec une passerelle NAT StandardV2 managée

Les commandes suivantes créent le groupe de ressources requis, l’adresse IP publique et les ressources de préfixe d’adresse IP publique à attacher à la passerelle NAT et le cluster AKS avec une passerelle NAT StandardV2 gérée.

  1. Créez un groupe de ressources à l’aide de la commande az group create.

    # Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names
    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export MY_RG="myResourceGroup$RANDOM_SUFFIX"
    export MY_AKS="myNatV2Cluster$RANDOM_SUFFIX"
    export MY_IP="myNatOutboundIP$RANDOM_SUFFIX"
    export MY_IP_PREFIX="myNatOutboundIPPrefix$RANDOM_SUFFIX"
    
    # Create the resource group
    az group create --name $MY_RG --location "eastus2"
    
  2. Créez une adresse IP publique IPv4 redondante interzone et un préfixe d’adresse IP publique à l’aide de la az network public-ip create commande. Stocker $MY_IP et $MY_IP_PREFIX pour utiliser comme adresses IP sortantes pour la passerelle NAT StandardV2 gérée.

    # Create a zone redundant IPv4 public IP address and store the ID to $MY_IP_ID for later use
    export MY_IP_ID=$(az network public-ip create \
        --resource-group $MY_RG \
        --name $MY_IP \
        --location eastus2 \
        --sku StandardV2 \
        --allocation-method Static \
        --version IPv4 \
        --zone 1 2 3 \
        --query publicIp.id \
        --output tsv)
    
    # Create a zone redundant IPv4 public IP prefix and store the ID to $MY_IP_PREFIX_ID for later use
    export MY_IP_PREFIX_ID=$(az network public-ip prefix create \
        --resource-group $MY_RG \
        --name $MY_IP_PREFIX \
        --location eastus2 \
        --length 31 \
        --sku StandardV2 \
        --version IPv4 \
        --zone 1 2 3 \
        --query id \
        --output tsv)
    
  3. Créez le cluster AKS et spécifiez l’adresse IP publique ($MY_IP_ID) et le préfixe d’adresse IP publique ($MY_IP_PREFIX_ID) à l’aide de az aks create avec les paramètres --outbound-type managedNATGatewayV2, --nat-gateway-outbound-ips et --nat-gateway-outbound-ip-prefixes.

    az aks create \
        --resource-group $MY_RG \
        --name $MY_AKS \
        --node-count 3 \
        --outbound-type managedNATGatewayV2 \
        --nat-gateway-outbound-ips $MY_IP_ID \
        --nat-gateway-outbound-ip-prefixes $MY_IP_PREFIX_ID \
        --nat-gateway-idle-timeout 4 \
        --generate-ssh-keys
    

Mettez à jour les adresses IP sortantes, les préfixes d’adresses IP sortantes, le nombre d'adresses IP sortantes gérées ou le délai d’inactivité à l'aide de la commande avec le paramètre az aks update, --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-count, --nat-gateway-managed-outbound-ipv6-count, ou --nat-gateway-idle-timeout. Impossible de mettre à jour managedNATGatewayV2 après sa création pour basculer entre les adresses IP sortantes définies par le client et celles gérées. La configuration IP sortante est déterminée lorsque la passerelle NAT StandardV2 est initialement créée et reste immuable.

Créer un cluster AKS avec une passerelle NAT standard managée (managedNATGateway)

  • Créez un cluster AKS avec une passerelle NAT standard managée à l’aide de la az aks create commande avec --outbound-type managedNATGateway, --nat-gateway-managed-outbound-ip-countet --nat-gateway-idle-timeout des paramètres. Si vous souhaitez que la passerelle NAT fonctionne hors de la zone de disponibilité spécifique, spécifiez la zone à l’aide --zonesde .
  • Vous ne pouvez pas utiliser une ressource de passerelle NAT managée dans plusieurs zones de disponibilité. Pour la connectivité sortante redondante entre zones, envisagez d’utiliser managedNATgatewayV2.
  • Si vous ne spécifiez pas de zone lors de la création d’une passerelle NAT managée, la passerelle NAT est déployée sur aucune zone par défaut. Lorsque la passerelle NAT n’est pas dans une zone, Azure place la ressource dans une zone pour vous. Pour plus d’informations sur le modèle de déploiement non zonal, consultez la passerelle NAT non zonale.

Créer un cluster AKS avec un userAssignedNatGateway

Cette configuration nécessite une mise en réseau autonome (via Azure CNI) et que la passerelle NAT est préconfigurée sur le sous-réseau. Les passerelles NAT Standard et StandardV2 sont prises en charge pour cela outbound-type. Les commandes suivantes créent les ressources nécessaires pour déployer une ressource de passerelle NAT StandardV2 pour votre cluster AKS.

  1. Créez un groupe de ressources à l’aide de la commande az group create.

    # Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names
    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export MY_RG="myResourceGroup$RANDOM_SUFFIX"
    
    # Create the resource group
    az group create --name $MY_RG --location southcentralus
    
  2. Créez une identité gérée pour les autorisations réseau et stockez l’ID dans $IDENTITY_ID pour une utilisation ultérieure.

    export IDENTITY_NAME="myNatClusterId$RANDOM_SUFFIX"
    export IDENTITY_ID=$(az identity create \
        --resource-group $MY_RG \
        --name $IDENTITY_NAME \
        --location southcentralus \
        --query id \
        --output tsv)
    

    Exemple de sortie :

    /xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxx
    
  3. Créez une adresse IP publique StandardV2 pour la passerelle NAT à l’aide de la az network public-ip create commande. Une passerelle NAT StandardV2 nécessite une adresse IP publique StandardV2.

    export PIP_NAME="myNatGatewayPip$RANDOM_SUFFIX"
    az network public-ip create \
        --resource-group $MY_RG \
        --name $PIP_NAME \
        --location southcentralus \
        --allocation-method Static \
        --version IPv4 \
        --zone 1 2 3 \
        --sku standard-v2
    
  4. Créez la passerelle NAT StandardV2 à l’aide de la az network nat gateway create commande.

    export NATGATEWAY_NAME="myNatGateway$RANDOM_SUFFIX"
    az network nat gateway create \
        --resource-group $MY_RG \
        --name $NATGATEWAY_NAME \
        --location southcentralus \
        --public-ip-addresses $PIP_NAME \
        --sku StandardV2
        --idle-timeout 4
    

    Important

    Pour garantir la redondance de zone, déployez une ressource de passerelle NAT StandardV2, qui s’étend sur plusieurs zones de disponibilité dans une région. Cette configuration garantit une connectivité sortante continue même si une seule zone échoue. Pour plus d’informations sur la passerelle NAT StandardV2 et ses avantages, consultez la passerelle NAT StandardV2. Par comparaison, une ressource de passerelle NAT Standard fournit une résilience uniquement dans la zone de disponibilité dans laquelle vous la déployez.

  5. Créer un réseau virtuel en utilisant la commande az network vnet create.

    export VNET_NAME="myVnet$RANDOM_SUFFIX"
    az network vnet create \
        --resource-group $MY_RG \
        --name $VNET_NAME \
        --location southcentralus \
        --address-prefixes 172.16.0.0/20 
    
  6. Créez un sous-réseau dans le réseau virtuel à l’aide de la passerelle NAT et stockez l’ID dans $SUBNET_ID pour une utilisation ultérieure.

    export SUBNET_NAME="myNatCluster$RANDOM_SUFFIX"
    export SUBNET_ID=$(az network vnet subnet create \
        --resource-group $MY_RG \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 172.16.0.0/22 \
        --nat-gateway $NATGATEWAY_NAME \
        --query id \
        --output tsv)
    
  7. Créez un cluster AKS à l’aide du sous-réseau avec la passerelle NAT et l’identité managée avec la commande az aks create.

    export AKS_NAME="myNatCluster$RANDOM_SUFFIX"
    az aks create \
        --resource-group $MY_RG \
        --name $AKS_NAME \
        --location southcentralus \
        --network-plugin azure \
        --vnet-subnet-id $SUBNET_ID \
        --outbound-type userAssignedNATGateway \
        --assign-identity $IDENTITY_ID \
        --generate-ssh-keys
    

Considérations relatives à la production

Lorsque vous utilisez une passerelle NAT managée en production, planifiez le comportement du trafic sortant, l’accès au serveur d’API et la résilience des charges de travail.

  • Utilisez AKS Automatic lorsque vous souhaitez la configuration par défaut recommandée, prête pour la production, pour la plupart des charges de travail AKS.
  • Utilisez la passerelle NAT managée dans AKS Standard lorsque vous souhaitez une connectivité sortante gérée par AKS sans apporter votre propre passerelle NAT.
  • Utilisez un cluster privé ou une intégration au réseau virtuel du serveur d’API lorsque vous souhaitez réduire l’exposition du trafic du serveur d’API.
  • Passez en revue les exigences d’adresse IP sortante avant de passer en ligne.
  • Si vos charges de travail dépendent d’adresses sortantes fixes, vérifiez que la passerelle NAT managée répond à ces exigences avant le déploiement.
  • Si vous devez gérer NAT indépendamment d’AKS, utilisez une passerelle NAT affectée par l’utilisateur.

Désactiver OutboundNAT pour Windows

Windows OutboundNAT peut provoquer certains problèmes de connexion et de communication avec vos pods AKS. Un exemple de problème est la réutilisation du port de nœud. Dans cet exemple, Windows OutboundNAT utilise des ports pour traduire votre adresse IP de pod en adresse IP hôte de nœud Windows, ce qui peut entraîner une connexion instable au service externe en raison d’un problème d’épuisement des ports.

Windows active OutboundNAT par défaut. Vous pouvez désormais désactiver manuellement OutboundNAT lors de la création de pools d’agents Windows.

Conditions préalables et limitations

  • Vous avez besoin d’un cluster AKS existant avec v1.26 ou version ultérieure. Si vous utilisez Kubernetes version 1.25 ou antérieure, mettez à jour votre configuration de déploiement.
  • Vous ne pouvez pas définir le type de trafic sortant du cluster sur LoadBalancer. Vous pouvez le définir sur NAT Gateway ou UDR :
    • Passerelle NAT : la passerelle NAT gère automatiquement les connexions NAT et est plus puissante que Standard Load Balancer. Vous risquez d’entraîner des frais supplémentaires à l’aide de cette option.
    • UDR (UserDefinedRouting) : vous devez garder à l’esprit les limitations de port lors de la configuration des règles d’acheminement.
    • Pour passer d’un équilibreur de charge à une passerelle NAT, vous pouvez ajouter une passerelle NAT au réseau virtuel ou exécuter az aks upgrade pour mettre à jour le type sortant.

Remarque

UserDefinedRouting présente les limites suivantes :

  • Le SNAT par Load Balancer (doit utiliser l’OutboundNAT par défaut) dispose de 64 ports sur l’IP hôte.
  • SNAT par Pare-feu Azure (désactiver OutboundNAT) a 2 496 ports par adresse IP publique.
  • Le SNAT via NAT Gateway (désactiver OutboundNAT) dispose de 64 512 ports par adresse IP publique.
  • Si la plage de ports Pare-feu Azure n'est pas suffisante pour votre application, vous devez utiliser la passerelle NAT.
  • Pare-feu Azure ne fait pas de SNAT avec des règles réseau lorsque l'adresse IP de destination se trouve dans une plage d'adresses IP privées, conformément à l'IANA RFC 1918, ou à l'espace d'adressage partagé défini par l'IANA RFC 6598.

Désactiver manuellement OutboundNAT pour Windows

  • Désactivez manuellement OutboundNAT pour Windows lors de la création de pools d’agents Windows à l’aide de la commande az aks nodepool add avec l’indicateur --disable-windows-outbound-nat.

    Remarque

    Vous pouvez utiliser un cluster AKS existant, mais vous devrez peut-être mettre à jour le type de sortie et ajouter un pool de nœuds pour activer --disable-windows-outbound-nat.

    export WIN_NODEPOOL_NAME="win$(head -c 1 /dev/urandom | xxd -p)"
    az aks nodepool add \
        --resource-group $MY_RG \
        --cluster-name $MY_AKS \
        --name $WIN_NODEPOOL_NAME \
        --node-count 3 \
        --os-type Windows \
        --disable-windows-outbound-nat
    

    Exemple de sortie :

    {
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myNatClusterxxx/agentPools/mynpxxx",
      "name": "mynpxxx",
      "osType": "Windows",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroupxxx",
      "type": "Microsoft.ContainerService/managedClusters/agentPools"
    }
    

Pour plus d’informations sur Azure NAT Gateway et AKS Automatic, consultez les articles suivants :