Utiliser la règle NAT de sortie pour configurer le masquage d'adresses IP dans les clusters Autopilot


Cette page explique comment configurer les clusters créés dans le mode Autopilot de Google Kubernetes Engine (GKE) pour effectuer un masquage d'adresses IP avec la règle NAT de sortie.

Pour en savoir plus sur le masquage d'adresses IP en mode GKE standard, consultez la section Configurer un agent de masquage d'adresses IP.

Présentation

La règle NAT de sortie de GKE vous permet de configurer le comportement du masquage d'adresses IP pour les clusters Autopilot.

GKE accepte deux règles de sortie NAT générées automatiquement :

  • Les règles gérées par GKE qui sont fixes et non modifiables.
  • Les règles par défaut qui sont modifiables.

Cette page explique comment modifier et déployer une règle NAT de sortie en modifiant la règle par défaut ou en créant une règle NAT de sortie. Cette page vous explique également comment supprimer une règle NAT de sortie créée.

Pour en savoir plus sur le comportement des règles NAT de sortie, consultez la section Comportement du masquage du trafic pour les clusters Autopilot.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.
  • Assurez-vous de disposer d'un cluster Autopilot exécutant la version 1.23.4-gke.1600 ou ultérieure, ou 1.22.7-gke.1500 ou ultérieure. GKE Dataplane V2 doit être activé sur votre cluster.

  • Assurez-vous qu'une charge de travail est en cours d'exécution sur votre cluster. Pour en savoir plus, consultez la section Demander des ressources.

Vérifier l'état de la règle NAT de sortie

Vous pouvez vérifier si votre cluster exécute la définition de ressource personnalisée (CRD) de la règle NAT de sortie à l'aide de l'outil Google Cloud CLI :

  1. Récupérez les identifiants de votre cluster :

    gcloud container clusters get-credentials CLUSTER-NAME
    

    Remplacez CLUSTER_NAME par le nom du cluster.

  2. Vérifiez si la règle NAT de sortie est en cours d'exécution :

    kubectl get crds egressnatpolicies.networking.gke.io
    

    Si la règle NAT de sortie est en cours d'exécution, le résultat ressemble à ce qui suit :

     NAME                                  CREATED AT
     egressnatpolicies.networking.gke.io   2022-03-16T21:05:43Z
    
  3. Récupérez la liste des règles NAT de sortie créées :

    kubectl get egressnatpolicies
    

    Le résultat ressemble à ce qui suit :

      NAME             AGE
      default          44h
      gke-bbfa6c0e-1   44h
    

Modifier la règle par défaut existante

GKE accepte deux règles NAT générées automatiquement, la règle par défaut et la règle gérée par GKE. La règle par défaut est modifiable et configure les destinations non masquées par défaut.

Pour modifier la règle par défaut existante, procédez comme suit :

  1. Récupérez les identifiants de votre cluster :

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Remplacez CLUSTER_NAME par le nom de votre cluster.

  2. Modifiez la règle NAT de sortie par défaut :

    kubectl edit egressnatpolicies default
    
  3. Ajoutez ou supprimez des destinations avec l'action NoSNAT en tant qu'attribut cidr au format CIDR :

      apiVersion: networking.gke.io/v1
      kind: EgressNATPolicy
      metadata:
        name: default
      spec:
        action: NoSNAT
        destinations:
        - cidr:  10.0.0.0/8
        - cidr:  172.16.0.0/12
        - cidr:  192.168.0.0/16
        - cidr:  240.0.0.0/4
        - cidr:  192.0.2.0/24
        - cidr:  198.51.100.0/24
        - cidr:  203.0.113.0/24
        - cidr:  100.64.0.0/10
        - cidr:  198.18.0.0/15
        - cidr:  192.0.0.0/24
        - cidr:  192.88.99.0/24
    

    Lorsque des paquets sont envoyés à ces destinations, votre cluster ne masque pas les sources d'adresses IP et conserve les adresses IP des pods sources.

  4. Vérifiez que la règle par défaut modifiée est déployée en consultant les événements Kubernetes :

    kubectl get events
    

    Le résultat ressemble à ce qui suit :

    LAST SEEN   TYPE     REASON           OBJECT                    MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/default   Ensuring IP masquerade config for policy "default"
    

    L'application de vos modifications peut prendre jusqu'à trois minutes.

Déployer une nouvelle règle NAT de sortie

Pour ajouter des destinations avec l'action NoSNAT, vous pouvez utiliser l'une des options suivantes :

Pour créer une règle NAT de sortie qui ne fait pas partie de la règle par défaut, procédez comme suit :

  1. Enregistrez le manifeste suivant sous le nom egress_nat_policy.yaml :

    kind: EgressNATPolicy
    apiVersion: networking.gke.io/v1
    metadata:
      name: POLICY_NAME
    spec:
      action: NoSNAT
      destinations:
      - cidr: CIDR_1
      - cidr: CIDR_2
    

    Remplacez les éléments suivants :

    • POLICY_NAME : nom de votre nouvelle règle
    • CIDR_1 et CIDR_2 : plages d'adresses IP au format CIDR Lorsque des paquets sont envoyés à ces destinations, votre cluster ne masque pas les sources d'adresses IP et conserve les adresses IP des pods sources. Si vous avez besoin de plus de deux CIDR, ajoutez d'autres entrées à la liste destinations en suivant le même format.
  2. Déployez la nouvelle règle :

    kubectl create -f egress_nat_policy.yaml
    
  3. Vérifiez que votre règle est déployée en consultant les événements Kubernetes :

    kubectl get events
    

    Le résultat ressemble à ce qui suit :

    LAST SEEN   TYPE     REASON           OBJECT                              MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/mypolicy            Ensuring IP masquerade config for policy "mypolicy"
    

Supprimer une règle NAT de sortie

Pour supprimer complètement une règle NAT de sortie, exécutez la commande suivante :

kubectl delete egressnatpolicies POLICY_NAME

Remplacez POLICY_NAME par le nom de la règle que vous souhaitez supprimer.

Étape suivante