

 **Aidez à améliorer cette page** 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Restriction du trafic réseau des pods à l’aide des politiques réseau Kubernetes
<a name="cni-network-policy-configure"></a>

Les politiques réseau Kubernetes permettent de restreindre le trafic réseau entrant et sortant de vos pods. Pour plus d’informations, consultez [Politiques réseau](https://kubernetes.io/docs/concepts/services-networking/network-policies/) dans la documentation Kubernetes.

Pour utiliser cette fonctionnalité, vous devez effectuer les configurations suivantes :

1. Configurez l’application des politiques au démarrage du pod. Cette opération s’effectue dans le conteneur `aws-node` du `DaemonSet` VPC CNI.

1. Activez le paramètre de politique réseau pour le module complémentaire.

1. Configuration de votre cluster pour qu’il utilise la politique réseau Kubernetes

Avant de commencer, consultez les points à prendre en compte. Pour de plus amples informations, veuillez consulter [Considérations](cni-network-policy.md#cni-network-policy-considerations).

## Conditions préalables
<a name="cni-network-policy-prereqs"></a>

Prérequis pour l’utilisation de cette fonctionnalité :

### Version minimale du cluster
<a name="cni-network-policy-minimum"></a>

Un cluster Amazon EKS existant. Pour en déployer un, consultez [Mise en route avec Amazon EKS](getting-started.md). Le cluster doit exécuter l'une des versions de Kubernetes et de la plateforme répertoriées dans le tableau suivant. Toute version de Kubernetes et de la plateforme ultérieure à celles indiquées est également prise en charge. Vous pouvez vérifier votre version actuelle de Kubernetes {{my-cluster}} en remplaçant la commande suivante par le nom de votre cluster, puis en exécutant la commande modifiée :

```
aws eks describe-cluster --name my-cluster --query cluster.version --output text
```


| Version de Kubernetes | Version de la plateforme | 
| --- | --- | 
|  `1.27.4`  |  `eks.5`  | 
|  `1.26.7`  |  `eks.6`  | 

### Version minimale du VPC CNI
<a name="cni-network-policy-minimum-vpc"></a>

Pour créer à la fois des politiques réseau Kubernetes standard et des politiques réseau d'administration, vous devez exécuter `1.21` la version du plugin VPC CNI. Vous pouvez voir la version que vous utilisez actuellement à l'aide de la commande suivante.

```
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
```

Si votre version est antérieure à `1.21`, consultez la section [Mettre à jour le CNI Amazon VPC (module complémentaire Amazon EKS)](vpc-add-on-update.md) pour mettre à jour  vers la version `1.21` ou ultérieure.

### Version minimale du noyau Linux
<a name="cni-network-policy-minimum-linux"></a>

Vos nœuds doivent avoir la version du noyau Linux `5.10` ou ultérieure. Vous pouvez vérifier votre version du noyau avec `uname -r`. Si vous utilisez les dernières versions d'Amazon Linux optimisé pour Amazon EKS, d'Amazon Linux accéléré optimisé pour Amazon EKS et de Bottlerocket AMIs, ils disposent déjà de la version de noyau requise. AMIs

La version `v20231116` ou ultérieure de l'AMI Amazon Linux accélérée et optimisée pour Amazon EKS dispose de la version `5.10` du noyau.

## Étape 1 : configurer l’application des politiques au démarrage du pod
<a name="cni-network-policy-configure-policy"></a>

Le plug-in Amazon VPC CNI pour Kubernetes configure les politiques réseau pour les pods en parallèle du processus de provisionnement des pods. Tant que toutes les politiques ne sont pas appliquées au nouveau pod, les conteneurs de ce pod démarrent avec une *politique d’autorisation par défaut*. Ce mode de fonctionnement est appelé *mode standard*. Une politique d’autorisation par défaut signifie que tout le trafic entrant et sortant est autorisé vers et depuis les nouveaux pods. Par exemple, aucune règle de pare-feu ne sera appliquée aux pods (tout le trafic est autorisé) tant que le nouveau pod ne sera pas mis à jour avec les politiques actives.

Lorsque la variable `NETWORK_POLICY_ENFORCING_MODE` est définie sur `strict`, les pods qui utilisent le plug-in VPC CNI commencent *par une politique de refus par défaut*, puis les politiques sont configurées. Ce mode de fonctionnement est appelé *mode strict*. En mode strict, vous devez définir une politique réseau pour chaque point de terminaison auquel vos pods doivent accéder dans le cluster. Cette exigence s’applique également aux pods CoreDNS. La politique de refus par défaut n’est pas configurée pour les pods disposant d’un réseau hôte.

Vous pouvez modifier la politique réseau par défaut en définissant la variable d’environnement `NETWORK_POLICY_ENFORCING_MODE` sur `strict` dans le conteneur `aws-node` du `DaemonSet` VPC CNI.

```
env:
  - name: NETWORK_POLICY_ENFORCING_MODE
    value: "strict"
```

## Étape 2∘: activer le paramètre de politique réseau pour le module complémentaire
<a name="enable-network-policy-parameter"></a>

La fonctionnalité de politique réseau utilise le port `8162` du nœud pour les métriques par défaut. En outre, la fonctionnalité utilise le port `8163` pour les sondes de santé. Si vous exécutez une autre application sur les nœuds ou dans les pods qui doivent utiliser ces ports, l'application ne s'exécutera pas. À partir de la version VPC CNI `v1.14.1` ou ultérieure, vous pouvez modifier ces ports.

Suivez la procédure ci-dessous pour activer le paramètre de politique réseau du module complémentaire.

### AWS Management Console
<a name="cni-network-policy-console"></a>

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Dans le panneau de navigation de gauche, sélectionnez **Clusters**, puis sélectionnez le nom du cluster pour lequel vous souhaitez configurer le module complémentaire Amazon VPC CNI.

1. Choisissez l’onglet **Modules complémentaires**.

1. Cochez la case en haut à droite de la zone du module complémentaire, puis sélectionnez **Edit** (Modifier).

1. Sur la page **Configurer `Amazon VPC CNI`** :

   1. Sélectionnez une version `v1.14.0-eksbuild.3` ou ultérieure dans la liste **Version**.

   1. Sélectionnez **Paramètres de configuration facultatifs**.

   1. Saisissez la clé JSON `"enableNetworkPolicy":` et valeur `"true"` dans **Valeurs de configuration**. Le texte obtenu doit être un objet JSON valide. Si cette clé et cette valeur sont les seules données de la zone de texte, entourez-les d'accolades `{ }`.

      L’exemple suivant présente une configuration où la fonctionnalité de politique réseau est activée, et où les sondes de surveillance et métriques utilisent les numéros de port par défaut :

      ```
      {
          "enableNetworkPolicy": "true",
          "nodeAgent": {
              "healthProbeBindAddr": "8163",
              "metricsBindAddr": "8162"
          }
      }
      ```

### Helm
<a name="cni-network-helm"></a>

Si vous avez installé le plug-in Amazon VPC CNI pour Kubernetes via `helm`, vous pouvez mettre à jour la configuration pour modifier les ports.

1. Exécutez la commande suivante pour modifier les ports. Définissez le numéro de port dans la valeur de la clé `nodeAgent.metricsBindAddr` ou de la clé `nodeAgent.healthProbeBindAddr`.

   ```
   helm upgrade --set nodeAgent.metricsBindAddr=8162 --set nodeAgent.healthProbeBindAddr=8163 aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
   ```

### kubectl
<a name="cni-network-policy-kubectl"></a>

1. Ouvrez le `aws-node` `DaemonSet` dans votre éditeur.

   ```
   kubectl edit daemonset -n kube-system aws-node
   ```

1. Remplacez les numéros de port dans les arguments de commande suivants pour le `args:` du conteneur `aws-network-policy-agent` dans le manifeste daemonset `aws-node` du VPC CNI.

   ```
       - args:
               - --metrics-bind-addr=:8162
               - --health-probe-bind-addr=:8163
   ```

## Étape 3 : configurer votre cluster pour qu’il utilise la politique réseau Kubernetes
<a name="cni-network-policy-setup"></a>

Cette configuration peut être appliquée à un module complémentaire Amazon EKS ou à un module complémentaire autogéré.

### Module complémentaire d'Amazon EKS
<a name="cni-network-policy-setup-procedure-add-on"></a>

À l'aide de la AWS CLI, vous pouvez configurer le cluster pour utiliser les politiques réseau Kubernetes en exécutant la commande suivante. Remplacez `my-cluster` par le nom de votre cluster et l'ARN du rôle IAM par le rôle que vous utilisez.

```
aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.14.0-eksbuild.3 \
    --service-account-role-arn arn:aws: iam::123456789012:role/AmazonEKSVPCCNIRole \
    --resolve-conflicts PRESERVE --configuration-values '{"enableNetworkPolicy": "true"}'
```

Pour le configurer à l'aide AWS de la console de gestion, suivez les étapes ci-dessous :

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Dans le panneau de navigation de gauche, sélectionnez **Clusters**, puis sélectionnez le nom du cluster pour lequel vous souhaitez configurer le module complémentaire Amazon VPC CNI.

1. Choisissez l’onglet **Modules complémentaires**.

1. Cochez la case en haut à droite de la zone du module complémentaire, puis sélectionnez **Edit** (Modifier).

1. Sur la page **Configurer `Amazon VPC CNI`** :

   1. Sélectionnez une version `v1.14.0-eksbuild.3` ou ultérieure dans la liste **Version**.

   1. Sélectionnez **Paramètres de configuration facultatifs**.

   1. Saisissez la clé JSON `"enableNetworkPolicy":` et valeur `"true"` dans **Valeurs de configuration**. Le texte obtenu doit être un objet JSON valide. Si cette clé et cette valeur sont les seules données de la zone de texte, entourez-les d'accolades `{ }`. L’exemple suivant montre que la politique réseau est activée :

      ```
      { "enableNetworkPolicy": "true" }
      ```

      La capture d'écran suivante montre un exemple de ce scénario.  
![<shared id="consolelong"/> affichant le module complémentaire VPC CNI avec la politique réseau activée dans la configuration facultative.](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/console-cni-config-network-policy.png)

### Module complémentaire autogéré
<a name="cni-network-policy-setup-procedure-self-managed-add-on"></a>

Si vous avez installé le plug-in Amazon VPC CNI pour Kubernetes via `helm`, vous pouvez mettre à jour la configuration afin d’activer la politique réseau.

1. Exécutez la commande suivante pour activer la stratégie réseau.

   ```
   helm upgrade --set enableNetworkPolicy=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
   ```

1. Ouvrez le `amazon-vpc-cni` `ConfigMap` dans votre éditeur.

   ```
   kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
   ```

1. Ajoutez la ligne suivante dans les `data` de `ConfigMap`.

   ```
   enable-network-policy-controller: "true"
   ```

   Une fois la ligne ajoutée, votre `ConfigMap` doit ressembler à l’exemple ci-dessous.

   ```
   apiVersion: v1
    kind: ConfigMap
    metadata:
     name: amazon-vpc-cni
     namespace: kube-system
    data:
     enable-network-policy-controller: "true"
   ```

1. Ouvrez le `aws-node` `DaemonSet` dans votre éditeur.

   ```
   kubectl edit daemonset -n kube-system aws-node
   ```

   1. Remplacez `false` par `true` dans l'argument de commande `--enable-network-policy=false` pour le `args:` du conteneur `aws-network-policy-agent` dans le manifeste daemonset du `aws-node` VPC CNI.

      ```
           - args:
              - --enable-network-policy=true
      ```

## Étape 4 : Étapes suivantes
<a name="cni-network-policy-setup-procedure-confirm"></a>

Après avoir terminé la configuration, vérifiez que les pods `aws-node` sont en cours d’exécution dans votre cluster.

```
kubectl get pods -n kube-system | grep 'aws-node\|amazon'
```

L'exemple qui suit illustre un résultat.

```
aws-node-gmqp7                                          2/2     Running   1 (24h ago)   24h
aws-node-prnsh                                          2/2     Running   1 (24h ago)   24h
```

Les pods `aws-node` comportent deux conteneurs à partir des versions `1.14` et ultérieures. Dans les versions précédentes et si la stratégie réseau est désactivée, il n'y a qu'un seul conteneur dans les pods du `aws-node`.

Vous pouvez maintenant déployer des politiques réseau Kubernetes dans votre cluster.

Pour implémenter les politiques réseau Kubernetes, vous pouvez créer des Kubernetes `NetworkPolicy` ou des `ClusterNetworkPolicy` objets et les déployer sur votre cluster. `NetworkPolicy`les objets sont limités à un espace de noms, tandis que les `ClusterNetworkPolicy` objets peuvent être étendus à l'ensemble du cluster ou à plusieurs espaces de noms. Vous mettez en œuvre des politiques pour autoriser ou refuser le trafic entre les pods en fonction des sélecteurs d’étiquettes, des espaces de noms et des plages d’adresses IP. Pour plus d’informations sur la création des objets `NetworkPolicy`, consultez [Politiques réseau](https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource) dans la documentation Kubernetes.

L’application des objets `NetworkPolicy` Kubernetes repose sur l’Extended Berkeley Packet Filter (eBPF). Concernant les implémentations basées sur les `iptables`, il offre des caractéristiques de latence et de performance plus faibles, notamment une utilisation réduite du processeur et l'évitement des recherches séquentielles. De plus, les sondes eBPF fournissent des données contextuelles détaillées permettant de déboguer les problèmes complexes au niveau du noyau et d’améliorer l’observabilité. Amazon EKS prend en charge un exportateur basé sur eBPF qui exploite ces sondes pour enregistrer les résultats des politiques sur chaque nœud et exporter les données vers des collecteurs de journaux externes afin de faciliter le débogage. Pour plus d’informations, consultez [documentation eBPF](https://ebpf.io/what-is-ebpf/#what-is-ebpf).