Controlla l'accesso alla rete all'endpoint API del server del cluster - Amazon EKS

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à.

Controlla l'accesso alla rete all'endpoint API del server del cluster

Questo argomento ti aiuta ad abilitare l'accesso privato per i tuoi EKS cluster Amazon Kubernetes APIendpoint del server e limita o disabilita completamente l'accesso pubblico da Internet.

Quando crei un nuovo cluster, Amazon EKS crea un endpoint per il cluster gestito Kubernetes APIserver che usi per comunicare con il tuo cluster (utilizzando Kubernetes strumenti di gestione comekubectl). Per impostazione predefinita, questo endpoint del API server è pubblico su Internet e l'accesso al API server è protetto utilizzando una combinazione di AWS Identity and Access Management (IAM) e nativa Kubernetes Controllo degli accessi basato sui ruoli ()RBAC. Questo endpoint è noto come endpoint pubblico del cluster. Esiste anche un endpoint privato del cluster. Per ulteriori informazioni sull'endpoint privato del cluster, vedere la sezione seguente. Endpoint privato del cluster

IPv6formato dell'endpoint del cluster

EKScrea un endpoint dual-stack unico nel seguente formato per i nuovi IPv6 cluster creati dopo ottobre 2024. Un IPv6cluster è un cluster selezionato IPv6 nell'impostazione della famiglia IP () ipFamily del cluster.

AWS

EKSendpoint pubblico/privato del cluster: eks-cluster.region.api.aws

AWS GovCloud (US)

EKSendpoint pubblico/privato del cluster: eks-cluster.region.api.aws

Amazon Web Services in China

EKSendpoint pubblico/privato del cluster: eks-cluster.region.api.amazonwebservices.com.cn

Nota

L'endpoint del cluster dual-stack è stato introdotto nell'ottobre 2024. Per ulteriori informazioni sui cluster, vedere. IPv6 Scopri IPv6 gli indirizzi verso i cluster, podse servizi Per i cluster creati prima di ottobre 2024, utilizzate invece il seguente formato di endpoint.

IPv4formato degli endpoint del cluster

EKScrea un endpoint univoco nel seguente formato per ogni cluster selezionato IPv4 nell'impostazione della famiglia IP (ipFamily) del cluster:

AWS

EKSendpoint pubblico/privato del cluster eks-cluster.region.eks.amazonaws.com

AWS GovCloud (US)

EKSendpoint pubblico/privato del cluster eks-cluster.region.eks.amazonaws.com

Amazon Web Services in China

EKSendpoint pubblico/privato del cluster eks-cluster.region.api.amazonwebservices.com.cn

Nota

Prima di ottobre 2024, anche IPv6 i cluster utilizzavano questo formato di endpoint. Per questi cluster, sia l'endpoint pubblico che l'endpoint privato dispongono solo IPv4 di indirizzi risolti da questo endpoint.

Endpoint privato del cluster

È possibile abilitare l'accesso privato a Kubernetes APIserver in modo che tutte le comunicazioni tra i tuoi nodi e il API server rimangano all'interno del tuoVPC. Puoi limitare gli indirizzi IP che possono accedere al tuo API server da Internet o disabilitare completamente l'accesso da Internet al API server.

Nota

Perché questo endpoint è per Kubernetes APIserver e non un AWS PrivateLink endpoint tradizionale per la comunicazione con un AWS API, non appare come endpoint nella console Amazon. VPC

Quando abiliti l'accesso privato agli endpoint per il tuo cluster, Amazon EKS crea una zona ospitata privata Route 53 per tuo conto e la associa a quella del tuo cluster. VPC Questa zona ospitata privata è gestita da Amazon EKS e non compare nelle risorse Route 53 del tuo account. Affinché la zona ospitata privata possa indirizzare correttamente il traffico verso il tuo API server, VPC devi averetrue, enableDnsSupport impostare enableDnsHostnames e includere le DHCP opzioni impostate AmazonProvidedDNS nell'elenco dei server con nomi di dominio. VPC Per ulteriori informazioni, consulta Updating DNS support for your VPC nella Amazon VPC User Guide.

Puoi definire i requisiti di accesso agli endpoint del API server quando crei un nuovo cluster e puoi aggiornare l'accesso agli endpoint del API server per un cluster in qualsiasi momento.

Modifica dell'accesso all'endpoint del cluster

Utilizza le procedure in questa sezione per modificare l'accesso all'endpoint per un cluster esistente. La tabella seguente mostra le combinazioni di accesso agli endpoint API del server supportate e il relativo comportamento.

Accesso pubblico all'endpoint Accesso privato all'endpoint Comportamento

Abilitato

Disabilitato

  • Questo è il comportamento predefinito per i nuovi EKS cluster Amazon.

  • Kubernetes APIle richieste che provengono dall'interno del cluster VPC (ad esempio la comunicazione tra nodo e piano di controllo) escono dalla rete di Amazon VPC ma non da quella di Amazon.

  • Il API server del cluster è accessibile da Internet. Facoltativamente, puoi limitare i CIDR blocchi che possono accedere all'endpoint pubblico. Se si limita l'accesso a CIDR blocchi specifici, si consiglia di abilitare anche l'endpoint privato o di assicurarsi che i CIDR blocchi specificati includano gli indirizzi, i nodi e Fargate. Pods (se li usi) accedi all'endpoint pubblico da.

Abilitato

Abilitato

  • Kubernetes APIle richieste all'interno del cluster VPC (come il nodo per controllare la comunicazione sul piano di controllo) utilizzano l'VPCendpoint privato.

  • Il API server del cluster è accessibile da Internet. Facoltativamente, puoi limitare i CIDR blocchi che possono accedere all'endpoint pubblico.

Disabilitato

Abilitato

  • Tutto il traffico verso il API server del cluster deve provenire dall'interno del cluster VPC o da una rete connessa.

  • Non vi è alcun accesso pubblico al API server da Internet. Tutti kubectl i comandi devono provenire dall'interno della rete VPC o da una rete connessa. Per le opzioni di connettività, consultare Accedere a un server solo privato API.

  • L'endpoint del API server del cluster viene risolto dai DNS server pubblici in un indirizzo IP privato proveniente da. VPC In passato, l'endpoint poteva essere risolto solo dall'interno di. VPC

    Se l'endpoint non si risolve in un indirizzo IP privato all'interno VPC di un cluster esistente, puoi:

    • Abilitare l'accesso pubblico e quindi disabilitarlo di nuovo. È necessario farlo solo una volta per un cluster e l'endpoint si risolverà in un indirizzo IP privato da quel punto in avanti.

    • Aggiornare il cluster.

È possibile modificare l'accesso agli endpoint API del server del AWS Management Console cluster utilizzando o. AWS CLI

Configura l'accesso agli endpoint - console AWS

  1. Apri la EKSconsole Amazon.

  2. Scegliere il nome del cluster per visualizzare le informazioni sul cluster.

  3. Scegliere la scheda Reti, quindi Aggiorna.

  4. Per l'accesso privato, scegli se abilitare o disabilitare l'accesso privato per i tuoi cluster Kubernetes APIendpoint del server. Se abiliti l'accesso privato, Kubernetes APIle richieste che provengono dall'interno del cluster VPC utilizzano l'VPCendpoint privato. Per disabilitare l'accesso pubblico è necessario abilitare l'accesso privato.

  5. Per l'accesso pubblico, scegli se abilitare o disabilitare l'accesso pubblico per il tuo cluster Kubernetes APIendpoint del server. Se disabiliti l'accesso pubblico, quello del tuo cluster Kubernetes APIil server può ricevere richieste solo dall'interno del clusterVPC.

  6. (Facoltativo) Se hai abilitato l'accesso pubblico, puoi specificare quali indirizzi da Internet possono comunicare con l'endpoint pubblico. Selezionare Advanced settings (Impostazioni avanzate). Inserisci un CIDR blocco, ad esempio 203.0.113.5/32. Il blocco non può includere indirizzi riservati. È possibile immettere blocchi aggiuntivi selezionando Add Source (Aggiungi origine). È possibile specificare un numero massimo di CIDR blocchi. Per ulteriori informazioni, consulta Visualizza e gestisci le quote dei EKS servizi Amazon e Fargate. Se non si specifica alcun blocco, l'endpoint del API server pubblico riceve le richieste da tutti gli (0.0.0.0/0) indirizzi IP. Se limiti l'accesso al tuo endpoint pubblico utilizzando i CIDR blocchi, ti consigliamo di abilitare anche l'accesso privato agli endpoint in modo che nodi e Fargate Pods (se li usi) può comunicare con il cluster. Senza l'endpoint privato abilitato, le sorgenti degli endpoint ad accesso pubblico devono includere CIDR le sorgenti di uscita provenienti dal tuo. VPC Ad esempio, se disponi di un nodo in una sottorete privata che comunica a Internet tramite un NAT gateway, dovrai aggiungere l'indirizzo IP in uscita del NAT gateway come parte di un blocco consentito CIDR sull'endpoint pubblico.

  7. Scegliere Update (Aggiorna) per terminare.

Configura l'accesso agli endpoint - AWS CLI

Completa i seguenti passaggi utilizzando la AWS CLI versione 1.27.160 o successiva. È possibile verificare la versione corrente con aws --version. Per installare o aggiornare il AWS CLI, vedere Installazione di AWS CLI.

  1. Aggiorna l'accesso agli endpoint API del server del cluster con il seguente AWS CLI comando. Sostituire il nome del cluster e i valori di accesso dell'endpoint desiderati. Se lo impostiendpointPublicAccess=true, puoi (facoltativamente) inserire un CIDR blocco singolo o un elenco di blocchi separati da virgole per. CIDR publicAccessCidrs I blocchi non possono includere indirizzi riservati. Se specifichi dei CIDR blocchi, l'endpoint del API server pubblico riceverà solo le richieste dai blocchi elencati. È possibile specificare un numero massimo di CIDR blocchi. Per ulteriori informazioni, consulta Visualizza e gestisci le quote dei EKS servizi Amazon e Fargate. Se limiti l'accesso al tuo endpoint pubblico utilizzando i CIDR blocchi, ti consigliamo di abilitare anche l'accesso privato agli endpoint in modo che nodi e Fargate Pods (se li usi) può comunicare con il cluster. Senza l'endpoint privato abilitato, le sorgenti degli endpoint ad accesso pubblico devono includere CIDR le sorgenti di uscita provenienti dal tuo. VPC Ad esempio, se disponi di un nodo in una sottorete privata che comunica a Internet tramite un NAT gateway, dovrai aggiungere l'indirizzo IP in uscita del NAT gateway come parte di un blocco consentito CIDR sull'endpoint pubblico. Se non si specifica alcun CIDR blocco, l'endpoint del API server pubblico riceve le richieste da tutti gli indirizzi IP (0.0.0.0/0).

    Nota

    Il comando seguente abilita l'accesso privato e l'accesso pubblico da un singolo indirizzo IP per l'endpoint del server. API Replace (Sostituisci) 203.0.113.5/32 con un singolo CIDR blocco o un elenco di CIDR blocchi separati da virgole a cui si desidera limitare l'accesso alla rete.

    aws eks update-cluster-config \ --region region-code \ --name my-cluster \ --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true

    Di seguito viene riportato un output di esempio:

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "InProgress", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }
  2. Monitorare lo stato di aggiornamento dell'accesso all'endpoint con il comando seguente, utilizzando il nome del cluster, e aggiornare l'ID restituito dal comando precedente. L'aggiornamento è completo quando lo stato è illustrato come Successful.

    aws eks describe-update \ --region region-code \ --name my-cluster \ --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000

    Di seguito viene riportato un output di esempio:

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "Successful", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }

Accedere a un server solo privato API

Se hai disabilitato l'accesso pubblico per i tuoi cluster Kubernetes APIendpoint del server, puoi accedere al API server solo dall'interno della tua rete VPC o da una rete connessa. Ecco alcuni modi possibili per accedere a Kubernetes APIendpoint del server:

Rete connessa

Connect la rete a un gateway VPC di AWS transito o altra opzione di connettività, quindi utilizzate un computer nella rete connessa. Devi assicurarti che il tuo gruppo di sicurezza EKS del piano di controllo Amazon contenga regole per consentire il traffico in ingresso sulla porta 443 dalla tua rete connessa.

Host Amazon EC2 Bastion

Puoi avviare un'EC2istanza Amazon in una sottorete pubblica del tuo cluster VPC e quindi SSH accedere tramite quell'istanza per eseguire kubectl i comandi. Per ulteriori informazioni, consultare Bastion host Linux in AWS. Devi assicurarti che il tuo gruppo di sicurezza EKS del piano di controllo Amazon contenga regole per consentire il traffico in ingresso sulla porta 443 dal tuo host bastion. Per ulteriori informazioni, consulta Visualizza i requisiti EKS dei gruppi di sicurezza Amazon per i cluster.

Quando esegui la configurazione kubectl per il tuo host bastion, assicurati di utilizzare AWS credenziali già mappate alla RBAC configurazione del cluster o aggiungi il IAMprincipale che verrà utilizzato dal tuo bastion prima di rimuovere l'accesso pubblico agli endpointRBAC. Per ulteriori informazioni, consulta Concedi a IAM utenti e ruoli l'accesso a Kubernetes APIs e Accesso negato o non autorizzato (kubectl).

AWS Cloud9 IDE

AWS Cloud9 è un ambiente di sviluppo integrato basato su cloud IDE () che consente di scrivere, eseguire ed eseguire il debug del codice con un semplice browser. Puoi creare un AWS IDE Cloud9 nel tuo cluster VPC e utilizzarlo per comunicare con IDE il tuo cluster. Per ulteriori informazioni, consulta Creazione di un ambiente in AWS Cloud9. Devi assicurarti che il tuo gruppo di sicurezza EKS del piano di controllo Amazon contenga regole per consentire il traffico in ingresso sulla porta 443 dal tuo gruppo IDE di sicurezza. Per ulteriori informazioni, consulta Visualizza i requisiti EKS dei gruppi di sicurezza Amazon per i cluster.

Quando configuri kubectl per il tuo AWS IDE Cloud9, assicurati di AWS utilizzare credenziali già mappate alla configurazione RBAC del cluster o aggiungi il principale che utilizzerai alla configurazione prima di IDE rimuovere IAM l'accesso pubblico agli RBAC endpoint. Per ulteriori informazioni, consulta Concedi a IAM utenti e ruoli l'accesso a Kubernetes APIs e Accesso negato o non autorizzato (kubectl).