

 **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.

# Limiter les adresses IP externes pouvant être attribuées aux services
<a name="restrict-service-external-ip"></a>

Les services Kubernetes peuvent être atteints depuis l'intérieur d'un cluster via :
+ Une adresse IP de cluster affectée automatiquement par Kubernetes
+ Toute adresse IP que vous spécifiez pour la propriété `externalIPs` dans une spécification de service. Les adresses IP externes ne sont pas gérées par Kubernetes et relèvent de la responsabilité de l'administrateur du cluster. Les adresses IP externes spécifiées avec `externalIPs` sont différentes de l'adresse IP externe affectée à un service de type `LoadBalancer` par un fournisseur de cloud.

Pour en savoir plus sur les services Kubernetes, consultez [Service](https://kubernetes.io/docs/concepts/services-networking/service/) dans la documentation Kubernetes. Vous pouvez restreindre les adresses IP qui peuvent être spécifiées pour `externalIPs` dans une spécification de service.

1. Déployez `cert-manager` pour gérer les certificats webhook. Pour plus d'informations, consultez la documentation [cert-manager](https://cert-manager.io/docs/).

   ```
   kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
   ```

1. Vérifiez que les pods `cert-manager` sont en cours d’exécution.

   ```
   kubectl get pods -n cert-manager
   ```

   L'exemple qui suit illustre un résultat.

   ```
   NAME                                       READY   STATUS    RESTARTS   AGE
   cert-manager-58c8844bb8-nlx7q              1/1     Running   0          15s
   cert-manager-cainjector-745768f6ff-696h5   1/1     Running   0          15s
   cert-manager-webhook-67cc76975b-4v4nk      1/1     Running   0          14s
   ```

1. Vérifiez vos services existants pour vous assurer qu’aucun d’entre eux ne dispose d’adresses IP externes qui ne sont pas contenues dans le bloc CIDR auquel vous voulez limiter les adresses.

   ```
   kubectl get services -A
   ```

   L'exemple qui suit illustre un résultat.

   ```
   NAMESPACE                      NAME                                    TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)         AGE
   cert-manager                   cert-manager                            ClusterIP      10.100.102.137   <none>          9402/TCP        20m
   cert-manager                   cert-manager-webhook                    ClusterIP      10.100.6.136     <none>          443/TCP         20m
   default                        kubernetes                              ClusterIP      10.100.0.1       <none>          443/TCP         2d1h
   externalip-validation-system   externalip-validation-webhook-service   ClusterIP      10.100.234.179   <none>          443/TCP         16s
   kube-system                    kube-dns                                ClusterIP      10.100.0.10      <none>          53/UDP,53/TCP   2d1h
   my-namespace                   my-service                              ClusterIP      10.100.128.10    192.168.1.1     80/TCP          149m
   ```

   Si l’une des valeurs est une adresse IP qui ne se trouve pas dans le bloc auquel vous voulez restreindre l’accès, vous devrez modifier les adresses pour qu’elles se trouvent dans le bloc, puis redéployer les services. Par exemple, le service `my-service` dans la sortie précédente a une adresse IP externe qui ne se trouve pas dans le bloc CIDR de l’exemple de l’étape 5.

1. Téléchargez le manifeste du webhook IP externe. Vous pouvez également afficher le [code source pour le webhook](https://github.com/kubernetes-sigs/externalip-webhook) sur GitHub.

   ```
   curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml
   ```

1. Spécifiez des blocs d'adresse CIDR. Ouvrez le fichier téléchargé dans l'éditeur et supprimez le `\#` au début des lignes suivantes.

   ```
   #args:
   #- --allowed-external-ip-cidrs=10.0.0.0/8
   ```

   Remplacez `10.0.0.0/8` par votre propre bloc d'adresse CIDR. Vous pouvez spécifier autant de blocs que vous le souhaitez. Si vous spécifiez plusieurs blocs, ajoutez une virgule entre les blocs.

1. Si votre cluster ne se trouve pas dans la région AWS `us-west-2`, remplacez `us-west-2`, `602401143452` et `amazonaws.com` dans le fichier par les commandes suivantes. Avant d’exécuter les commandes, remplacez *region-code* et *111122223333* par la valeur correspondant à votre région AWS dans la liste de la section [Afficher les registres d’images de conteneurs Amazon pour les modules complémentaires Amazon EKS](add-ons-images.md).

   ```
   sed -i.bak -e 's|602401143452|111122223333|' externalip-webhook.yaml
   sed -i.bak -e 's|us-west-2|region-code|' externalip-webhook.yaml
   sed -i.bak -e 's|amazonaws.com||' externalip-webhook.yaml
   ```

1. Appliquez le manifeste à votre cluster.

   ```
   kubectl apply -f externalip-webhook.yaml
   ```

   Toute tentative de déploiement d’un service sur votre cluster avec une adresse IP spécifiée pour `externalIPs` qui ne figure pas dans les blocs que vous avez spécifiés à l’étape Spécifier les blocs CIDR échouera.