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

Même si vous pouvez acheminer le trafic de sortie via Azure Load Balancer, il existe des limites quant au nombre de flux de trafic sortants que vous pouvez avoir. La passerelle Azure NAT Gateway autorise jusqu’à 64 512 flux de trafic UDP et TCP sortants par adresse IP, avec un maximum de 16 adresses IP.

Cet article explique comment créer un cluster Azure Kubernetes Service (AKS) avec une passerelle NAT Gateway managée et une passerelle NAT Gateway attribuée par l’utilisateur pour le trafic de sortie. Il vous montre également comment désactiver OutboundNAT sur Windows.

Avant de commencer

  • Assurez-vous que vous disposez de la version la plus récente d’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.

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

  • Créez un cluster AKS avec une nouvelle passerelle NAT managée à l’aide de la az aks create commande avec les --outbound-type managedNATGatewayparamètres , --nat-gateway-managed-outbound-ip-countet --nat-gateway-idle-timeout . Si vous souhaitez que la passerelle NAT fonctionne hors d’une zone de disponibilité spécifique, spécifiez la zone à l’aide --zonesde .

  • Si aucune zone n’est spécifiée 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 est placée dans aucune zone, Azure place la ressource dans une zone pour vous. Pour plus d’informations sur le modèle de déploiement non zonal, consultez passerelle NAT non zonale.

  • Une ressource de passerelle NAT managée ne peut pas être utilisée dans plusieurs zones de disponibilité.

      az aks create \
          --resource-group myResourceGroup \
          --name myNatCluster \
          --node-count 3 \
          --outbound-type managedNATGateway \
          --nat-gateway-managed-outbound-ip-count 2 \
          --nat-gateway-idle-timeout 4
    
  • Mettez à jour l’adresse IP sortante ou le délai d’inactivité à l’aide de la az aks update commande avec le --nat-gateway-managed-outbound-ip-count paramètre ou --nat-gateway-idle-timeout .

    az aks update \ 
        --resource-group myResourceGroup \
        --name myNatCluster\
        --nat-gateway-managed-outbound-ip-count 5
    

Créer un cluster AKS avec une passerelle NAT Gateway attribuée par l’utilisateur

Cette configuration nécessite une mise en réseau personnalisée (par le biais de Kubenet ou d’Azure CNI) et que la passerelle NAT soit préconfigurée sur le sous-réseau. Les commandes suivantes créent les ressources requises pour ce scénario.

  1. Créez un groupe de ressources avec la commande az group create.

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. Créez une identité managée pour les autorisations réseau et stockez l’ID dans $IDENTITY_ID pour une utilisation ultérieure.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. Créez une adresse IP publique pour la passerelle NAT en utilisant la commande az network public-ip create.

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. Créez la passerelle NAT à l’aide de la az network nat gateway create commande .

    az network nat gateway create \
        --resource-group myResourceGroup \
        --name myNatGateway \
        --location southcentralus \
        --public-ip-addresses myNatGatewayPip
    

    Important

    Une seule ressource de passerelle NAT ne peut pas être utilisée dans plusieurs zones de disponibilité. Pour garantir la résilience des zones, il est recommandé de déployer une ressource de passerelle NAT dans chaque zone de disponibilité et de l’affecter à des sous-réseaux contenant des clusters AKS dans chaque zone. Pour plus d'informations sur ce modèle de déploiement, voir Passerelle NAT pour chaque zone. Si aucune zone n’est configurée pour la passerelle NAT, l’emplacement de zone par défaut est « aucune zone », dans lequel Azure place la passerelle NAT dans une zone pour vous.

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

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --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.

    SUBNET_ID=$(az network vnet subnet create \
        --resource-group myResourceGroup \
        --vnet-name myVnet \
        --name myNatCluster \
        --address-prefixes 172.16.0.0/22 \
        --nat-gateway myNatGateway \
        --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.

    az aks create \
        --resource-group myResourceGroup \
        --name myNatCluster \
        --location southcentralus \
        --network-plugin azure \
        --vnet-subnet-id $SUBNET_ID \
        --outbound-type userAssignedNATGateway \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID
    

Désactiver OutboundNAT pour Windows (préversion)

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 les ports pour traduire votre adresse IP de pod en adresse IP hôte de votre 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 maintenant désactiver manuellement OutboundNAT lors de la création de pools d’agents Windows.

Prérequis

  • Si vous utilisez Kubernetes version 1.25 ou antérieure, vous devez mettre à jour votre configuration de déploiement.

  • Vous devez installer ou mettre à jour aks-preview et inscrire l’indicateur de fonctionnalité.

    1. Installez ou mettez à jour à aks-preview l’aide de la az extension add commande ou az extension update .
    # Install aks-preview
    az extension add --name aks-preview
    
    # Update aks-preview
    az extension update --name aks-preview
    
    1. Inscrivez l’indicateur de fonctionnalité à l’aide de la commande az feature register.
    az feature register --namespace Microsoft.ContainerService --name DisableWindowsOutboundNATPreview
    
    1. Vérifiez l’état de l’inscription en utilisant la commande az feature list.
    az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/DisableWindowsOutboundNATPreview')].{Name:name,State:properties.state}"
    
    1. Actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la commande az provider register.
    az provider register --namespace Microsoft.ContainerService
    

Limites

  • Vous ne pouvez pas définir le type de sortie du cluster sur LoadBalancer. Vous pouvez le définir sur NAT Gateway ou UDR :
    • NAT Gateway : l’option NAT Gateway peut gérer automatiquement la connexion NAT et est plus puissante que Standard Load Balancer. Cette option risque d’entraîner des frais supplémentaires.
    • UDR (UserDefinedRouting) : vous devez garder à l’esprit les limitations de port lors de la configuration des règles d’acheminement.
    • Si vous devez passer d’un équilibreur de charge à NAT Gateway, vous pouvez ajouter une passerelle NAT au réseau virtuel ou exécuter az aks upgrade pour mettre à jour le type de sortie.

Remarque

UserDefinedRouting présente les limites suivantes :

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

Désactiver manuellement OutboundNAT pour Windows

  • Désactiver 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.

    az aks nodepool add \
        --resource-group myResourceGroup
        --cluster-name myNatCluster
        --name mynodepool
        --node-count 3
        --os-type Windows
        --disable-windows-outbound-nat
    

Étapes suivantes

Pour plus d’informations sur la passerelle NAT Gateway, consultez la documentation relative à Azure NAT Gateway.