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 :

  • Assurez-vous d'avoir activé l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Assurez-vous d'avoir installé Google Cloud CLI.
  • Configurez les paramètres par défaut de Google Cloud CLI pour votre projet en utilisant l'une des méthodes suivantes :
    • Utilisez gcloud init si vous souhaitez suivre les étapes de définition des paramètres par défaut du projet.
    • Utilisez gcloud config pour définir individuellement l'ID, la zone et la région de votre projet.

    gcloud init

    1. Exécutez gcloud init et suivez les instructions :

      gcloud init

      Si vous utilisez SSH sur un serveur distant, utilisez l'option --console-only pour empêcher la commande d'ouvrir un navigateur :

      gcloud init --console-only
    2. Suivez les instructions pour autoriser gcloud CLI à utiliser votre compte Google Cloud.
    3. Créez ou sélectionnez une configuration.
    4. Choisissez un projet Google Cloud.
    5. Choisissez une zone Compute Engine par défaut.
    6. Choisissez une région Compute Engine par défaut.

    gcloud config

    1. Définissez votre ID de projet par défaut :
      gcloud config set project PROJECT_ID
    2. Définissez votre région Compute Engine par défaut (par exemple, us-central1) :
      gcloud config set compute/region COMPUTE_REGION
    3. Définissez votre zone Compute Engine par défaut (par exemple, us-central1-c) :
      gcloud config set compute/zone COMPUTE_ZONE
    4. Mettez à jour gcloud vers la dernière version :
      gcloud components update

    En définissant des emplacements par défaut, vous pouvez éviter les erreurs gcloud CLI telles que celle-ci : One of [--zone, --region] must be supplied: Please specify location.

Exigences

L'utilisation de la règle NAT de sortie GKE nécessite les éléments suivants :

  • Cluster en version 1.23.4-gke.1600 ou ultérieure, ou 1.22.7-gke.1500 ou ultérieure
  • Cluster en mode Autopilot avec GKE Dataplane V2 activé.

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"
    

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