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 avecexternalIPs
sont différentes de l'adresse IP externe affectée à un service de typeLoadBalancer
par un fournisseur de cloud.
En savoir plus sur Kubernetes services, voir ServiceexternalIPs
dans une spécification de service.
-
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
-
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
-
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. -
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
-
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/8
Remplacez-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. -
Si votre cluster ne se trouve pas dans la
us-west-2
AWS régionus-west-2
, remplacez602401143452
, etamazonaws.com
dans le fichier par les commandes suivantes. Avant d'exécuter les commandes, remplacezregion-code
and111122223333
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
-
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