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.
Limitez le trafic réseau du Pod avec Kubernetes politiques du réseau
Vous pouvez utiliser un Kubernetes politique réseau pour restreindre le trafic réseau à destination et en provenance de votre Pods. Pour plus d'informations, consultez la section Politiques réseau
Vous devez configurer les éléments suivants pour utiliser cette fonctionnalité :
-
Configurez l'application des politiques sur Pod démarrage. Vous le faites dans le
aws-node
conteneur du VPC CNIDaemonSet
. -
Activez le paramètre de politique réseau pour le module complémentaire.
-
Configurez votre cluster pour utiliser le Kubernetes politique du réseau
Avant de commencer, passez en revue les considérations. Pour de plus amples informations, veuillez consulter Considérations.
Prérequis
Les conditions requises pour cette fonctionnalité sont les suivantes :
* .Version minimale du cluster Un EKS cluster Amazon existant. Pour en déployer un, consultez Commencez avec Amazon EKS. Le cluster doit être Kubernetes version 1.25
ou ultérieure. Le cluster doit exécuter l'un des Kubernetes versions et versions de plate-forme répertoriées dans le tableau suivant. Notez que tout Kubernetes et les versions de plate-forme ultérieures à celles répertoriées sont également prises en charge. Vous pouvez vérifier votre Kubernetes version en remplaçant my-cluster
dans la commande suivante avec le nom de votre cluster, puis exécutez la commande modifiée :
+
aws eks describe-cluster --name my-cluster --query cluster.version --output text
+
Version de Kubernetes | Version de la plateforme |
---|---|
|
|
|
|
|
|
* VPC CNI .Version minimale Version 1.14
ou ultérieure du Amazon VPC CNI plugin for Kubernetes sur votre cluster. 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.14
, voir Mettre à jour Amazon VPC CNI (EKSmodule complémentaire Amazon) pour passer à la version 1.14
ou ultérieure. * .Version minimale du noyau Linux Vos nœuds doivent disposer d'une 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 EKS optimisé pour Amazon, d'Amazon Linux accéléré EKS optimisé pour Amazon et de Bottlerocket AMIsAMIs, ils disposent déjà de la version de noyau requise.
+ La version accélérée EKS optimisée d'Amazon Linux v20231116
ou une AMI version ultérieure d'Amazon possède une version noyau5.10
.
Étape 1 : configurer l'application des politiques sur Pod startup
Le Amazon VPC CNI plugin for Kubernetes configure les politiques réseau pour les pods en parallèle avec le provisionnement des pods. Jusqu'à ce que toutes les politiques soient configurées pour le nouveau pod, les conteneurs du nouveau pod commenceront par une politique d'autorisation par défaut. C'est ce qu'on appelle le mode standard. Une politique d'autorisation par défaut signifie que tout le trafic entrant et sortant est autorisé à destination et en provenance des nouveaux modules. 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 NETWORK_POLICY_ENFORCING_MODE
variable est définie surstrict
, les pods qui l'utilisent VPC CNI commencent par une politique de refus par défaut, les politiques sont configurées. C'est ce qu'on appelle le mode strict. En mode strict, vous devez disposer d'une politique réseau pour chaque point de terminaison auquel vos pods doivent accéder dans votre cluster. Notez que cette exigence s'applique au CoreDNS gousses. La politique de refus par défaut n'est pas configurée pour les pods dotés d'un réseau hôte.
Vous pouvez modifier la politique réseau par défaut en définissant la variable NETWORK_POLICY_ENFORCING_MODE
d'environnement sur strict
dans le aws-node
conteneur du VPC CNIDaemonSet
.
env: - name: NETWORK_POLICY_ENFORCING_MODE value: "strict"
Étape 2 : activer le paramètre de politique réseau pour le module complémentaire
La fonctionnalité de politique réseau utilise le port 8162
du nœud pour les métriques par défaut. En outre, la fonctionnalité utilisait le port 8163
pour les sondes d'intégrité. 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. Dans VPC CNI la version v1.14.1
ou ultérieure, vous pouvez modifier ces ports.
Utilisez la procédure suivante pour activer le paramètre de politique réseau pour le module complémentaire.
- AWS Management Console
-
-
Ouvrez la EKSconsole Amazon
. -
Dans le volet de navigation de gauche, sélectionnez Clusters, puis sélectionnez le nom du cluster pour lequel vous souhaitez configurer le VPC CNI module complémentaire Amazon.
-
Choisissez l'onglet Modules complémentaires.
-
Cochez la case en haut à droite de la zone du module complémentaire, puis sélectionnez Edit (Modifier).
-
Sur le Configure
name of add-on
page :-
Sélectionnez une version
v1.14.0-eksbuild.3
ou une version ultérieure dans la liste des versions. -
Sélectionnez Paramètres de configuration facultatifs.
-
Entrez la JSON clé
"enableNetworkPolicy":
et la valeur"true"
dans Valeurs de configuration. Le texte obtenu doit être un JSON objet valide. Si cette clé et cette valeur sont les seules données de la zone de texte, entourez-les d'accolades{ }
.Dans l'exemple suivant, la fonctionnalité de politique réseau est activée et les métriques et les sondes de santé sont définies sur les numéros de port par défaut :
{ "enableNetworkPolicy": "true", "nodeAgent": { "healthProbeBindAddr": "8163", "metricsBindAddr": "8162" } }
-
-
- Helm
-
Si vous avez installé le Amazon VPC CNI plugin for Kubernetes grâce à
helm
cela, vous pouvez mettre à jour la configuration pour modifier les ports.-
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
-
-
Ouvrez le
aws-node
DaemonSet
dans votre éditeur.kubectl edit daemonset -n kube-system aws-node
-
Remplacez les numéros de port dans les arguments de commande suivants
args:
dans leaws-network-policy-agent
conteneur du manifeste du VPC CNIaws-node
daemonset.- args: - --metrics-bind-addr=:8162 - --health-probe-bind-addr=:8163
-
Étape 3 : monter le système de fichiers Berkeley Packet Filter (BPF) sur vos nœuds
Vous devez monter le système de fichiers Berkeley Packet Filter (BPF) sur chacun de vos nœuds.
Note
Si votre cluster est une version 1.27
ou une version ultérieure, vous pouvez ignorer cette étape car tous les systèmes Amazon Linux et Bottlerocket EKS optimisés AMIs pour Amazon 1.27
ou version ultérieure disposent déjà de cette fonctionnalité.
Pour toutes les autres versions de cluster, si vous mettez à niveau le système Amazon Linux EKS optimisé pour Amazon vers la version v20230703
ou ultérieure ou si vous mettez à niveau le Bottlerocket AMI vers la version v1.0.2
ou ultérieure, vous pouvez ignorer cette étape.
-
Montez le système de fichiers Berkeley Packet Filter (BPF) sur chacun de vos nœuds.
sudo mount -t bpf bpffs /sys/fs/bpf
-
Ajoutez ensuite la même commande à vos données utilisateur dans votre modèle de lancement pour vos groupes Amazon EC2 Auto Scaling.
Étape 4 : configurer votre cluster pour utiliser Kubernetes politiques du réseau
Configurer le cluster à utiliser Kubernetes politiques du réseau. Vous pouvez le définir pour un EKS module complémentaire Amazon ou un module complémentaire autogéré.
- AWS Management Console
-
-
Ouvrez la EKSconsole Amazon
. -
Dans le volet de navigation de gauche, sélectionnez Clusters, puis sélectionnez le nom du cluster pour lequel vous souhaitez configurer le VPC CNI module complémentaire Amazon.
-
Choisissez l'onglet Modules complémentaires.
-
Cochez la case en haut à droite de la zone du module complémentaire, puis sélectionnez Edit (Modifier).
-
Sur le Configure
name of addon
page :-
Sélectionnez une version
v1.14.0-eksbuild.3
ou une version ultérieure dans la liste des versions. -
Sélectionnez Paramètres de configuration facultatifs.
-
Entrez la JSON clé
"enableNetworkPolicy":
et la valeur"true"
dans Valeurs de configuration. Le texte obtenu doit être un JSON objet 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.
-
-
- AWS CLI
-
-
Exécutez la AWS CLI commande suivante.
my-cluster
Remplacez-le par le nom de votre cluster et le IAM rôle ARN 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"}'
-
- Helm
-
Si vous avez installé le Amazon VPC CNI plugin for Kubernetes grâce à
helm
cela, vous pouvez mettre à jour la configuration pour activer la politique réseau.-
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
-
- kubectl
-
-
Ouvrez le
amazon-vpc-cni
ConfigMap
dans votre éditeur.kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
-
Ajoutez la ligne suivante dans les
data
deConfigMap
.enable-network-policy-controller: "true"
Une fois que vous avez ajouté la ligne, vous
ConfigMap
devriez ressembler à l'exemple suivant.apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-network-policy-controller: "true"
-
Ouvrez le
aws-node
DaemonSet
dans votre éditeur.kubectl edit daemonset -n kube-system aws-node
-
Remplacez le
false
partrue
dans l'argument de commande--enable-network-policy=false
args:
dans leaws-network-policy-agent
conteneur du manifeste du VPC CNIaws-node
daemonset.- args: - --enable-network-policy=true
-
Étape 5. Étapes suivantes
Une fois la configuration terminée, vérifiez que les aws-node
pods sont en cours d'exécution sur 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
Il y a 2 conteneurs dans les aws-node
capsules dans les 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 désormais déployer Kubernetes politiques réseau appliquées à votre cluster.
À mettre en œuvre Kubernetes politiques réseau que vous créez Kubernetes NetworkPolicy
objets et déployez-les sur votre cluster. NetworkPolicy
les objets sont limités à un espace de noms. Vous mettez en œuvre des politiques pour autoriser ou refuser le trafic entre 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 d'NetworkPolicy
objets, consultez la section Politiques réseau
Mise en œuvre de Kubernetes NetworkPolicy
les objets sont implémentés à l'aide du Extended Berkeley Packet Filter (eBPF). Par rapport aux implémentations iptables
basées, il offre des caractéristiques de latence et de performance plus faibles, notamment une CPU utilisation réduite et l'évitement des recherches séquentielles. De plus, eBPF les sondes fournissent un accès à des données contextuelles qui aident à résoudre les problèmes complexes au niveau du noyau et à améliorer l'observabilité. Amazon EKS prend en charge un eBPFexportateur basé sur les sondes pour enregistrer les résultats des politiques sur chaque nœud et exporter les données vers des collecteurs de journaux externes pour faciliter le débogage. Pour plus d'informations, consultez la BPFdocumentation électronique