Restriction des adresses IP externes pouvant être affectées à des services - Amazon EKS

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 des adresses IP externes pouvant être affectées à des services

Kubernetes les services sont accessibles depuis l'intérieur d'un cluster via :

  • Une adresse IP de cluster attribué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.

En savoir plus sur Kubernetes services, voir Service dans le 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.

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
  2. Vérifiez que le cert-manager Pods sont en train de courir.

    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
  3. Passez en revue vos services existants pour vous assurer qu'aucun d'entre eux ne possède d'adresse IP externe qui ne soit contenue dans le CIDR bloc auquel vous souhaitez 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 correspond à des adresses IP qui ne se trouvent pas dans le bloc auquel vous souhaitez restreindre l'accès, vous devez modifier les adresses pour qu'elles se trouvent dans le bloc et redéployer les services. Par exemple, le my-service service indiqué dans la sortie précédente possède une adresse IP externe qui ne figure pas dans l'exemple de CIDR bloc de l'étape 5.

  4. Téléchargez le manifeste du webhook IP externe. Vous pouvez également consulter le code source du webhook sur GitHub.

    curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml
  5. Spécifiez CIDR les blocs. 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

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

  6. Si votre cluster ne se trouve pas dans la us-west-2 AWS régionus-west-2, remplacez602401143452, et amazonaws.com dans le fichier par les commandes suivantes. Avant d'exécuter les commandes, remplacez region-code and 111122223333 avec la valeur de votre AWS région figurant dans la liste dans Afficher les registres d'images de conteneurs Amazon pour les EKS modules complémentaires Amazon.

    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
  7. 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 ne figurant pas dans les blocs que vous avez spécifiés à l'étape Spécifier les CIDR blocs échouera. externalIPs