Configurazione del routing in uscita dal piano di controllo - Amazon EKS

View a markdown version of this page

Configurazione del routing in uscita dal piano di controllo - Amazon EKS

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 su che si trova 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à.

Configurazione del routing in uscita dal piano di controllo

Per impostazione predefinita, Amazon EKS gestisce la rete in uscita dal piano di controllo di Kubernetes alle risorse nel tuo VPC. Usa il routing in uscita del piano di controllo per modificare questo comportamento e gestire tu stesso il percorso di rete. Questo ti dà il pieno controllo sul modo in cui il traffico proveniente dalle interfacce di rete elastiche (ENI) del piano di controllo raggiunge le tue risorse VPC. È possibile eseguire il routing attraverso i propri gateway NAT, firewall o dispositivi di ispezione.

Diagramma di architettura che mostra il kube-apiserver che invia il traffico attraverso un ENI con più account nella sottorete VPC del cliente a una tabella di routing e a un dispositivo di uscita come un gateway NAT e quindi verso Internet per raggiungere gli endpoint webhook e OIDC

Modalità di routing in uscita

Amazon EKS supporta le seguenti modalità di routing in uscita dal piano di controllo:

Modalità Description

AWS_MANAGED

Comportamento predefinito. Amazon EKS gestisce il percorso di uscita dagli ENI del piano di controllo. Non è necessario configurare gateway NAT o altra infrastruttura di routing per controllare il traffico aereo.

CUSTOMER_ROUTED

Gestisci il percorso di uscita dal piano di controllo nelle tue sottoreti VPC. Sei responsabile di garantire che il piano di controllo possa raggiungere gli endpoint richiesti (come server webhook, provider OIDC e altre risorse). Fornisci un percorso di uscita, ad esempio un gateway NAT, un'istanza NAT, un gateway di transito o un'appliance firewall. È inoltre possibile configurare la tabella di routing, l'ACL di rete e le regole del gruppo di sicurezza che consentono questo traffico.

Importante

In CUSTOMER_ROUTED modalità, sei responsabile di garantire la corretta connettività di rete dal piano di controllo. Le configurazioni errate nella rete VPC possono causare il fallimento delle operazioni del piano di controllo. Queste configurazioni errate includono un percorso di uscita mancante, ACL di rete restrittivi o gruppi di sicurezza errati. Le operazioni interessate includono le chiamate webhook di ammissione e l'autenticazione OIDC.

Prerequisiti

Il tuo VPC e le tue sottoreti devono soddisfare i requisiti di rete standard di Amazon EKS. Per ulteriori informazioni, consulta Visualizzazione di requisiti di rete di Amazon EKS per VPC e sottoreti.

In CUSTOMER_ROUTED modalità, il server API Kubernetes invia il traffico rivolto ai clienti in uscita attraverso le interfacce di rete tra account. Amazon EKS crea già queste interfacce nelle tue sottoreti per la comunicazione tra piano di controllo e nodo. Questo traffico include le chiamate ai webhook di ammissione e ai provider OIDC. Amazon EKS non crea interfacce di rete di uscita separate. Questa modalità modifica il modo in cui vengono utilizzate le interfacce esistenti. Le sottoreti che contengono queste interfacce devono soddisfare i seguenti requisiti:

  • Le sottoreti devono avere un percorso verso gli endpoint che il piano di controllo deve raggiungere (come server webhook e provider OIDC). Per gli endpoint esterni al tuo VPC, di solito si tratta di un percorso predefinito verso un dispositivo di uscita. Il percorso predefinito è 0.0.0.0/0 per IPv4 e per IPv6. ::/0 Il dispositivo di uscita può essere un gateway NAT, un'istanza NAT, un firewall o un gateway di transito verso un VPC di uscita centralizzato. La scelta del dispositivo di uscita è tua; Amazon EKS richiede solo che il percorso funzioni.

  • I gruppi di sicurezza sulle interfacce di rete con più account devono consentire il traffico in uscita sulle porte richieste dai carichi di lavoro (ad esempio, la porta 443 per webhook e provider OIDC).

  • Gli ACL di rete sulle sottoreti devono consentire il traffico in uscita e il corrispondente intervallo di porte temporanee in entrata per il traffico di ritorno.

In CUSTOMER_ROUTED modalità, il piano di controllo risolve i nomi host utilizzando la configurazione DNS del VPC. Ciò consente al piano di controllo di raggiungere gli endpoint nelle zone private ospitate di Route 53 e il DNS locale inoltrato tramite gli endpoint Route 53 Resolver.

  • Il set di opzioni DHCP VPC deve essere incluso nell'elenco dei server dei nomi di dominio. AmazonProvidedDNS Ciò è necessario affinché il piano di controllo risolva i nomi DNS all'interno del VPC. Se il cluster utilizza endpoint webhook esterni o provider OIDC con nomi DNS pubblici, il resolver deve risolvere anche i nomi host pubblici. Assicurati che il resolver sia in grado di gestire sia la risoluzione VPC che quella DNS pubblica.

La tabella seguente riassume il traffico che il piano di controllo invia attraverso il tuo VPC in modalità: CUSTOMER_ROUTED

Traffico Destinazione Porta Note

Webhook di ammissione

Endpoint Webhook (URL definiti dal cliente)

443 (in genere)

Solo se i webhook sono configurati. Lascia il VPC attraverso il dispositivo di uscita se l'endpoint è esterno.

Scoperta dell'OIDC

URL dell'emittente OIDC

443

Solo se è configurato un provider OIDC. Lascia il VPC attraverso il dispositivo di uscita se l'emittente è esterno.

Server API aggregati

Endpoint del server API del cliente

443

Solo se configurato. Lascia il VPC attraverso il dispositivo di uscita se l'endpoint è esterno.

API Kubelet

Indirizzi IP del nodo di lavoro

10250

Si tratta del traffico tra il piano di controllo e i nodi attraverso il cluster ENI; non attraversa il dispositivo di uscita. Richiede che le tabelle di routing, i gruppi di sicurezza e gli ACL di rete consentano il traffico attraverso il cluster ENI tra il piano di controllo e i nodi.

Nota

Solo il traffico elencato in questa tabella è influenzato dalla configurazione dell'uscita. EKS-managed il traffico del piano di controllo (ad esempio la comunicazione con etcd, CloudWatch Logs e servizi EKS interni) continua attraverso il percorso di rete AWS gestito e non è influenzato dalla configurazione del VPC.

Crea un cluster con i dati di uscita indirizzati dal cliente

È possibile specificare la modalità di uscita del piano di controllo quando si crea un nuovo cluster.

Esempio
AWS CLI

Eseguire il seguente comando seguente. Sostituisci i placeholder values con i valori in tuo possesso.

aws eks create-cluster \ --name my-cluster \ --role-arn arn:aws:iam::111122223333:role/myAmazonEKSClusterRole \ --resources-vpc-config "subnetIds=subnet-ExampleID1,subnet-ExampleID2,securityGroupIds=sg-ExampleID1,controlPlaneEgressMode=CUSTOMER_ROUTED" \ --kubernetes-network-config "ipFamily=ipv4" \ --region region-code

È possibile utilizzarlo ipFamily=ipv6 per i cluster IPv6. Quando utilizzi IPv6 con CUSTOMER_ROUTED modalità, assicurati che le sottoreti dispongano di un gateway Internet di sola uscita per il traffico IPv6 oltre a un gateway NAT per il traffico IPv4.

Esempio
Console di gestione AWS
  1. Aprire la Console Amazon EKS.

  2. Scegli Add cluster (Aggiungi cluster), quindi scegli Create (Crea).

  3. Nella pagina Rete, per Control plane egress, seleziona Customer routed.

  4. Completa la configurazione del cluster rimanente e scegli Crea.

Per AWS CloudFormation, imposta ControlPlaneEgressMode: CUSTOMER_ROUTEDResourcesVpcConfig. Il supporto Terraform per questo campo sarà disponibile in una versione futura del AWS Provider.

Nota

Il passaggio a CUSTOMER_ROUTED è un'operazione unidirezionale. Dopo aver abilitato l'uscita indirizzata dal cliente su un cluster, non è possibile tornare a. AWS_MANAGED

Aggiornare un cluster esistente

È possibile modificare la modalità di uscita del piano di controllo su un cluster esistente utilizzando il comando. update-cluster-config

aws eks update-cluster-config \ --name my-cluster \ --resources-vpc-config "controlPlaneEgressMode=CUSTOMER_ROUTED" \ --region region-code

Monitora lo stato dell'aggiornamento:

aws eks describe-update \ --name my-cluster \ --update-id update-id \ --region region-code

L'aggiornamento è completo quando viene visualizzato lo statoSuccessful. Il tipo di aggiornamento èControlPlaneEgressUpdate. L'aggiornamento viene in genere completato entro 10 minuti.

Importante

Il passaggio a CUSTOMER_ROUTED è un'operazione unidirezionale. Dopo aver abilitato l'uscita indirizzata dal cliente su un cluster, non è possibile tornare a. AWS_MANAGED

Prima di passare, verifica che il tuo VPC soddisfi i requisiti in. Prerequisiti Se il piano di controllo perde la connettività agli endpoint richiesti dopo l'aggiornamento, operazioni come le chiamate webhook di ammissione e l'autenticazione OIDC possono fallire.

Considerazioni sull'IPv6

Se si esegue un cluster IPv6 con uscita indirizzata dal cliente, è necessario configurare i percorsi di uscita IPv4 e IPv6.

Quando si esegue ipFamily=ipv6 un cluster CUSTOMER_ROUTED IPv6 () con uscita:

  • Agli ENI del piano di controllo vengono assegnati indirizzi IPv4 e IPv6.

  • È necessario configurare i percorsi di uscita IPv4 e IPv6:

    • IPv4: una route predefinita (0.0.0.0/0) verso il dispositivo di uscita (ad esempio, un gateway NAT).

    • IPv6: un ::/0 percorso verso un dispositivo di uscita IPv6 (ad esempio, un gateway Internet solo in uscita).

  • I gruppi di sicurezza e i NACL devono consentire il traffico su entrambe le versioni IP.

  • Se il tuo provider OIDC o gli endpoint webhook lo sono IPv4-only, assicurati che il NAT IPv4 sia funzionante.

Considerazioni

Tieni presente i seguenti punti quando utilizzi l'uscita dal piano di controllo indirizzato dal cliente:

  • La tua responsabilità: in CUSTOMER_ROUTED modalità, sei il proprietario del percorso di rete dal piano di controllo agli endpoint esterni. Se il percorso si interrompe, le operazioni del piano di controllo che dipendono da esso (come le chiamate webhook di ammissione e l'autenticazione OIDC) possono fallire finché non si ripristina la connettività.

  • VPC-internal il traffico non viene alterato: il traffico tra il piano di controllo e i nodi (ad esempio, l'API kubelet sulla porta 10250) attraverso il cluster ENI non dipende dal dispositivo di uscita utilizzato.

  • EKS Auto Mode: il routing in uscita del piano di controllo funziona allo stesso modo sui cluster Standard e Auto Mode perché l'architettura del piano di controllo è identica.

  • Funzionalità EKS: le funzionalità EKS (come ArgoCD, ACK e KRO) vengono eseguite in un'infrastruttura gestita separata. AWS Il traffico proveniente dai controller EKS Capabilities non viene indirizzato attraverso il tuo VPC tramite questa funzionalità.

  • Osservabilità: Se abiliti i log di flusso VPC sulle sottoreti del tuo VPC o del cluster, puoi osservare il traffico in uscita che attraversa il tuo VPC. Ciò include le chiamate agli endpoint webhook e OIDC. Se i log di flusso VPC non sono abilitati, questo traffico non viene registrato.

Chiave di condizione IAM

Amazon EKS supporta la chiave eks:controlPlaneEgressMode condizionale. Puoi utilizzare questa chiave nelle policy IAM o nelle policy di controllo dei servizi (SCP) per controllare quale modalità di uscita i chiamanti possono specificare quando creano o aggiornano i cluster.

La chiave condizionale si applica alle seguenti azioni:

  • eks:CreateCluster

  • eks:UpdateClusterConfig

Ad esempio, il seguente SCP nega la creazione e gli aggiornamenti della configurazione del cluster a meno che il chiamante non specifichi: CUSTOMER_ROUTED

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireCustomerRoutedControlPlane", "Effect": "Deny", "Action": [ "eks:CreateCluster", "eks:UpdateClusterConfig" ], "Resource": "*", "Condition": { "StringNotEquals": { "eks:controlPlaneEgressMode": "CUSTOMER_ROUTED" } } } ] }

Utilizza questa policy per far sì che tutti i cluster nuovi e aggiornati dell'organizzazione utilizzino la modalità di uscita. CUSTOMER_ROUTED

Configurazione del provider OIDC

Se il cluster utilizza un provider di identità OIDC, il piano di controllo deve essere in grado di raggiungere l'endpoint di rilevamento OIDC tramite HTTPS (porta 443). Questo vale per i ruoli IAM per gli account di servizio o per un provider di identità OIDC associato per l'autenticazione del cluster. Non è prevista alcuna OIDC-specific impostazione; utilizza lo stesso percorso di uscita configurato in Prerequisiti. Prerequisiti Per consentirlo:

  1. Verifica che le sottoreti del piano di controllo abbiano un percorso che copra l'endpoint OIDC (in genere un percorso predefinito verso il dispositivo di uscita, come un gateway NAT).

  2. Verifica che il gruppo di sicurezza del cluster consenta il protocollo TCP 443 in uscita.

  3. Verifica che i NACL della sottorete consentano il traffico TCP 443 in uscita e il traffico effimero di ritorno in entrata (porte 1024—65535).

L'endpoint dipende dal tuo provider:

  • Provider OIDC Amazon EKS (predefinito): oidc.eks.region-code.amazonaws.com

  • Provider OIDC personalizzato: l'URL dell'emittente che hai configurato.

Se l'autenticazione OIDC fallisce, per la procedura di risoluzione dei problemi, consulta. Provider OIDC non raggiungibile

Verifica la connettività

Dopo aver configurato l'CUSTOMER_ROUTEDuscita, verifica che il piano di controllo possa raggiungere le tue risorse VPC:

  1. Controlla la modalità di uscita corrente: conferma che il cluster stia utilizzando la modalità prevista.

    aws eks describe-cluster --name my-cluster \ --query "cluster.resourcesVpcConfig.controlPlaneEgressMode" \ --region region-code
  2. Controlla lo stato del cluster: il cluster deve essere in ACTIVE stato.

    aws eks describe-cluster --name my-cluster --query "cluster.status" --region region-code
  3. Verifica la connettività del webhook: se hai configurato i webhook di ammissione, crea una risorsa che attivi il webhook e confermi che ha esito positivo.

  4. Verifica la registrazione del nodo: avvia un nodo e conferma che si unisca correttamente al cluster.

    kubectl get nodes
  5. Verifica l'OIDC: se utilizzi i ruoli IAM per gli account di servizio (IRSA), verifica che i pod possano assumere i propri ruoli IAM.

Per la risoluzione dei problemi più comuni, consulta. Risoluzione dei problemi relativi all'uscita del piano di controllo

📝 Modifica questa pagina su GitHub