Contribuisci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Limitare il traffico di rete dei Pod con le policy di rete Kubernetes
È possibile utilizzare le policy di rete di Kubernetes per limitare il traffico di rete da e verso i pod. Per ulteriori informazioni, consulta Network Policies
È necessario configurare quanto segue per utilizzare questa funzionalità:
-
Impostare l’applicazione delle policy all’avvio del Pod. Si effettua nel container
aws-nodedel CNIDaemonSetdi VPC. -
Abilitare il parametro della policy di rete per il componente aggiuntivo.
-
Configurare il cluster per l’utilizzo della policy di rete di Kubernetes
Prima di iniziare, esaminare le seguenti informazioni. Per ulteriori informazioni, consulta Considerazioni.
Prerequisiti
Di seguito sono indicati i prerequisiti per la funzionalità:
Versione minima del cluster
Un cluster Amazon EKS esistente. Per implementarne uno, consulta Nozioni di base su Amazon EKS. Il cluster deve eseguire una delle versioni Kubernetes e della piattaforma elencate nella tabella seguente. Sono supportate anche tutte le versioni di Kubernetes e della piattaforma successive a quelle elencate. Puoi controllare la tua versione attuale di Kubernetes my-cluster sostituendo il seguente comando con il nome del cluster e quindi eseguendo il comando modificato:
aws eks describe-cluster --name my-cluster --query cluster.version --output text
| Versione di Kubernetes | Versione della piattaforma |
|---|---|
|
|
|
|
|
|
Versione minima VPC CNI
Per creare sia policy di rete Kubernetes standard che policy di rete di amministrazione, devi eseguire 1.21 la versione del plugin VPC CNI. È possibile verificare la versione attuale con il seguente comando.
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
Se la versione è precedente alla 1.21, consulta la pagina Aggiornamento di CNI di Amazon VPC (componente aggiuntivo Amazon EKS) per eseguire l’aggiornamento alla versione 1.21 o successiva.
Versione minima del kernel Linux
I nodi devono avere una versione del kernel Linux 5.10 o successiva. È possibile verificare la versione del kernel con uname -r. Se utilizzi le versioni più recenti di Amazon Linux ottimizzato per Amazon EKS, Amazon Linux accelerato ottimizzato per Amazon EKS e Bottlerocket AMIs, dispongono già della versione AMIs del kernel richiesta.
La versione v20231116 o successive delle AMI Amazon Linux accelerate ottimizzate per Amazon EKS dispone della versione del kernel 5.10.
Passaggio 1: Impostare l’applicazione delle policy all’avvio del Pod
Il plug-in CNI di Amazon VPC per Kubernetes configura le policy di rete per i pod parallelamente al provisioning dei pod. Fino a quando tutte le policy non saranno configurate per il nuovo pod, i container nel nuovo si avvieranno con una policy di autorizzazione predefinita. Questa è chiamata modalità standard. Una policy di autorizzazione predefinita prevede che tutto il traffico in entrata e in uscita sia consentito da e verso i nuovi pod. Ad esempio, ai pod non verrà applicata alcuna regola del firewall (tutto il traffico è consentito) finché il nuovo pod non verrà aggiornato con le policy attive.
Con la variabile NETWORK_POLICY_ENFORCING_MODE impostata su strict, i pod che utilizzano il CNI di VPC iniziano con una policy di negazione predefinita, poi vengono configurate le policy. Questa è detta modalità rigorosa. In modalità rigorosa, è necessario disporre di una policy di rete per ogni endpoint a cui i pod devono accedere nel cluster. Questo requisito si applica ai pod CoreDNS. La policy di negazione predefinita non è configurata per i pod con rete host.
È possibile modificare la policy di rete predefinita impostando la variabile di ambiente NETWORK_POLICY_ENFORCING_MODE su strict nel container aws-node del CNI di VPC DaemonSet.
env: - name: NETWORK_POLICY_ENFORCING_MODE value: "strict"
Passaggio 2: Abilitare il parametro della policy di rete per il componente aggiuntivo
Per impostazione predefinita, per i parametri la funzionalità di policy di rete utilizza la porta 8162 sul nodo. Inoltre, la funzionalità utilizza la porta 8163 per le sonde sanitarie. Se esegui un’altra applicazione sui nodi o all’interno dei pod che deve utilizzare queste porte, l’app non viene eseguita. Dalla versione VPC CNI v1.14.1 o successiva, puoi modificare queste porte.
Per abilitare il parametro della policy di rete per il componente aggiuntivo, procedere come indicato di seguito.
Console di gestione AWS
-
Aprire la Console Amazon EKS
. -
Nel riquadro di navigazione a sinistra, seleziona Cluster, quindi seleziona il nome del cluster per cui desideri configurare il componente aggiuntivo CNI di Amazon VPC.
-
Selezionare la scheda Componenti aggiuntivi.
-
Selezionare la casella nella parte superiore destra della casella del componente aggiuntivo e scegli Modifica.
-
Nella pagina Configura
Amazon VPC CNI:-
Selezionare una
v1.14.0-eksbuild.3o versione successiva nell’elenco Versione. -
Scegliere Impostazioni di configurazione facoltative.
-
Inserisci la chiave JSON
"enableNetworkPolicy":e il valore"true"nei Valori di configurazione. Il testo risultante deve essere un oggetto JSON valido. Se questa chiave e questo valore sono gli unici dati nella casella di testo, racchiudi la chiave e il valore tra parentesi graffe{ }.L’esempio seguente ha la funzionalità delle policy di rete abilitata e i parametri e le sonde dell’integrità sono impostati sui numeri di porta predefiniti:
{ "enableNetworkPolicy": "true", "nodeAgent": { "healthProbeBindAddr": "8163", "metricsBindAddr": "8162" } }
-
Helm
Se il plug-in CNI di Amazon VPC per Kubernetes è stato installato attraverso helm, è possibile aggiornare la configurazione per scrivere le porte.
-
Esegui il seguente comando per modificare le porte. Imposta il numero di porta nel valore, rispettivamente, della chiave
nodeAgent.metricsBindAddronodeAgent.healthProbeBindAddr.helm upgrade --set nodeAgent.metricsBindAddr=8162 --set nodeAgent.healthProbeBindAddr=8163 aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
kubectl
-
Apri la
DaemonSetdelaws-nodenell’editor.kubectl edit daemonset -n kube-system aws-node -
Sostituire i numeri di porta negli argomenti del comando seguente nel
args:del containeraws-network-policy-agentnel manifesto del daemonsetaws-nodedella CNI del VPC.- args: - --metrics-bind-addr=:8162 - --health-probe-bind-addr=:8163
Passaggio 3: Configurare il cluster per l’utilizzo delle policy di rete di Kubernetes
È possibile impostarlo per un componente aggiuntivo di Amazon EKS o come un componente aggiuntivo autogestito.
Utilizzando la AWS CLI, puoi configurare il cluster per utilizzare le politiche di rete Kubernetes eseguendo il comando seguente. Sostituire my-cluster con il nome del cluster e l’ARN del ruolo IAM con il ruolo che si sta utilizzando.
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"}'
Per configurarlo utilizzando la console di AWS gestione, segui i passaggi seguenti:
-
Aprire la Console Amazon EKS
. -
Nel riquadro di navigazione a sinistra, seleziona Cluster, quindi seleziona il nome del cluster per cui desideri configurare il componente aggiuntivo CNI di Amazon VPC.
-
Selezionare la scheda Componenti aggiuntivi.
-
Selezionare la casella nella parte superiore destra della casella del componente aggiuntivo e scegli Modifica.
-
Nella pagina Configura
Amazon VPC CNI:-
Selezionare una
v1.14.0-eksbuild.3o versione successiva nell’elenco Versione. -
Scegliere Impostazioni di configurazione facoltative.
-
Inserisci la chiave JSON
"enableNetworkPolicy":e il valore"true"nei Valori di configurazione. Il testo risultante deve essere un oggetto JSON valido. Se questa chiave e questo valore sono gli unici dati nella casella di testo, racchiudi la chiave e il valore tra parentesi graffe{ }. Di seguito è riportato l’esempio dell’abilitazione della policy di rete:{ "enableNetworkPolicy": "true" }Lo screenshot seguente mostra un esempio di tale scenario.
-
Helm
Se il plug-in CNI di Amazon VPC per Kubernetes è stato installato attraverso helm, è possibile aggiornare la configurazione per abilitare la policy di rete.
-
Esegui il comando seguente per abilitare la policy di rete.
helm upgrade --set enableNetworkPolicy=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
kubectl
-
Apri la
ConfigMapdelamazon-vpc-cninell’editor.kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml -
Aggiungi la seguente riga ai
datanellaConfigMap.enable-network-policy-controller: "true"Dopo aver aggiunto la riga, la
ConfigMapdovrebbe essere simile al seguente esempio.apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-network-policy-controller: "true" -
Apri la
DaemonSetdelaws-nodenell’editor.kubectl edit daemonset -n kube-system aws-node-
Sostituire il valore
falsecontruenell’argomento del comando--enable-network-policy=falseinargs:nel containeraws-network-policy-agentnel manifesto del daemonsetaws-nodedella CNI di VPC.- args: - --enable-network-policy=true
-
Passaggio 4. Fasi successive
Dopo aver completato la configurazione, confermare che i pod aws-node siano in esecuzione sul cluster.
kubectl get pods -n kube-system | grep 'aws-node\|amazon'
Di seguito viene riportato un output di esempio.
aws-node-gmqp7 2/2 Running 1 (24h ago) 24h aws-node-prnsh 2/2 Running 1 (24h ago) 24h
Nei pod aws-node sono presenti 2 container nelle versioni 1.14 e successive. Nelle versioni precedenti e se le policy di rete sono disabilitate, nei pod aws-node è presente un solo container.
Ora è possibile implementare le policy di rete di Kubernetes per il cluster.
Per implementare le policy di rete Kubernetes, puoi creare Kubernetes NetworkPolicy o ClusterNetworkPolicy oggetti e distribuirli nel tuo cluster. NetworkPolicygli oggetti sono limitati a un namespace, mentre gli ClusterNetworkPolicy oggetti possono essere estesi all'intero cluster o a più namespace. Le policy vengono implementate per consentire o negare il traffico tra Pod in base a selettori di etichette, namespace e intervalli di indirizzi IP. Per ulteriori informazioni sulla creazione di oggetti NetworkPolicy, consultare Network Policies
L’applicazione di oggetti NetworkPolicy di Kubernetes viene implementata con Extended Berkeley Packet Filter (eBPF). Relativo alle implementazioni basate su iptables, offre caratteristiche di latenza e prestazioni inferiori, tra cui un utilizzo ridotto della CPU e l’evitamento delle ricerche sequenziali. Inoltre, le sonde eBPF forniscono l’accesso a dati contestuali che aiutano a eseguire il debug di problemi complessi a livello di kernel e a migliorare l’osservabilità. Amazon EKS supporta un esportatore basato su eBPF che sfrutta le sonde per registrare i risultati delle policy su ogni nodo ed esportare i dati in raccoglitori di log esterni per facilitare il debug. Per ulteriori informazioni, consulta eBPF documentation