Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Limiter les adresses IP externes pouvant être attribuées aux services
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é
externalIPsdans 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 avecexternalIPssont différentes de l'adresse IP externe affectée à un service de typeLoadBalancerpar un fournisseur de cloud.
Pour en savoir plus sur les services Kubernetes, consultez ServiceexternalIPs dans une spécification de service.
-
Déployez
cert-managerpour 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 les pods
cert-managersont en cours d’exécution.kubectl get pods -n cert-managerL'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 -
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 -AL'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 149mSi 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-servicedans 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. -
Téléchargez le manifeste du webhook IP externe. Vous pouvez également afficher le code source pour le webhook
sur GitHub. curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml -
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/8Remplacez
10.0.0.0/8par 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. -
Si votre cluster ne se trouve pas dans la région AWS
us-west-2, remplacezus-west-2,602401143452etamazonaws.comdans le fichier par les commandes suivantes. Avant d’exécuter les commandes, remplacezregion-codeet111122223333par 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.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.yamlToute tentative de déploiement d’un service sur votre cluster avec une adresse IP spécifiée pour
externalIPsqui ne figure pas dans les blocs que vous avez spécifiés à l’étape Spécifier les blocs CIDR échouera.