Implementazione di cluster privati con accesso limitato a Internet - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Implementazione di cluster privati con accesso limitato a Internet

In questo argomento è descritto come implementare un cluster Amazon EKS che è implementato su AWS Cloud che non ha accesso a Internet in uscita. Se disponi di un cluster locale su AWS Outposts, consulta Creazione di nodi Amazon Linux su AWS Outposts anziché questo argomento.

Se non si ha dimestichezza con la rete Amazon EKS, consulta Demistificare le reti cluster per i nodi nodo worker Amazon EKS. Se il cluster non dispone di accesso a Internet in uscita, deve soddisfare i seguenti requisiti:

Requisiti dell’architettura del cluster

  • Il tuo cluster deve estrarre immagini da un registro di container che si trova nel tuo VPC. Puoi creare un Amazon Elastic Container Registry nel VPC e copiare al suo interno le immagini dei container per i nodi da cui estrarre. Per ulteriori informazioni, consulta Copia di un'immagine di container da un repository a un altro.

  • Il tuo cluster deve avere l'accesso privato all'endpoint abilitato. Ciò è obbligatorio per la registrazione dei nodi con l'endpoint del cluster. L'accesso pubblico all'endpoint è facoltativo. Per ulteriori informazioni, consulta Endpoint del server API del cluster.

Requisiti dei nodi

  • Prima di essere lanciati, i nodi Linux e Windows autogestiti devono includere i seguenti argomenti di bootstrap. Questi argomenti ignorano l’introspezione Amazon EKS e non richiedono l’accesso all’API Amazon EKS dal VPC.

    1. Determina l’endpoint del cluster con il comando seguente. Sostituisci my-cluster con il nome del tuo cluster.

      aws eks describe-cluster --name my-cluster --query cluster.endpoint --output text

      Di seguito viene riportato un output di esempio:

      https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com
    2. Determina il valore dell’autorità di certificazione del cluster con il seguente comando. Sostituisci my-cluster con il nome del tuo cluster.

      aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output text

      L'output è una stringa molto lunga.

    3. Sostituisci cluster-endpoint e certificate-authority nei comandi seguenti con i valori restituiti nell’output dei comandi precedenti. Per ulteriori informazioni su come specificare gli argomenti di bootstrap quando si avviano nodi autogestiti, consulta Crea nodi Amazon Linux autogestiti e Crea nodi Microsoft Windows autogestiti.

      • Per i nodi Linux:

        --apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authority

        Per ulteriori argomenti, consultare lo script di bootstrap su GitHub.

      • Per i nodi Windows:

        Nota

        Se utilizzi il servizio personalizzato CIDR, devi specificarlo utilizzando il parametro -ServiceCIDR. In caso contrario, la risoluzione DNS per i pod nel cluster avrà esito negativo.

        -APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority

        Per ulteriori argomenti, consulta.Parametri di configurazione dello script di bootstrap.

  • aws-auth ConfigMap del tuo cluster deve essere creata all’interno del tuo VPC. Per ulteriori informazioni sulla creazione e l'aggiunta di voci a aws-auth ConfigMap, digita eksctl create iamidentitymapping --help nel terminale. Se ConfigMap non esiste sul server, eksctl la creerà quando usi il comando per aggiungere una mappatura dell’identità.

Requisiti del pod

  • Pod Identity: i pod configurati con EKS Pod Identity acquisiscono le credenziali dall’API EKS Auth. Se non è presente un accesso a Internet in uscita, è necessario creare e utilizzare un endpoint VPC per l’API EKS Auth: com.amazonaws.region-code.eks-auth. Per ulteriori informazioni sugli endpoint VCP EKS ed EKS Auth, consulta Accesso ad Amazon EKS tramite AWS PrivateLink.

  • IRSA: i pod configurati con ruoli IAM per gli account di servizio acquisiscono le credenziali da una chiamata API del Security Token Service AWS (AWS STS). Se non è presente un accesso a Internet in uscita, è necessario creare e utilizzare un endpoint VPC AWS STS nel VPC. La maggior parte degli AWS SDK v1 utilizzano l’endpoint AWS STS globale per impostazione predefinita (sts.amazonaws.com), che non usa l’endpoint VPC AWS STS. Per utilizzare l’endpoint VPC AWS STS potrebbe essere necessario configurare l’SDK per utilizzare l’endpoint AWS STS regionale (sts.region-code.amazonaws.com). Per ulteriori informazioni, consulta Configurare l’endpoint del Servizio di token di sicurezza AWS per un account di servizio.

  • Le sottoreti VPC del cluster devono disporre di un endpoint di interfaccia VPC per qualsiasi AWS a cui i pod devono accedere. Per ulteriori informazioni, consulta Accesso a un servizio AWS utilizzando un endpoint VPC di interfaccia. Nella tabella seguente sono elencati alcuni servizi ed endpoint di uso comune. Per un elenco completo degli endpoint, consulta Servizi AWS che si integrano con AWS PrivateLink nella Guida di PrivateLinkAWS.

    Consigliamo di abilitare i nomi DNS privati per gli endpoint VPC, in modo che i carichi di lavoro possano continuare a utilizzare gli endpoint del servizio AWS pubblico senza problemi.

    Servizio Endpoint

    Amazon EC2

    com.amazonaws.codice-regione.ec2

    Amazon Elastic Container Registry (per estrarre immagini di container)

    com.amazonaws.codice-regione.ecr.api, com.amazonaws.codice-regione.ecr.dkr e com.amazonaws.codice-regione.s3

    Application Load Balancer e Network Load Balancer di Amazon

    com.amazonaws.codice-regione.elasticloadbalancing

    (Opzionale) AWS X-Ray (necessario per il tracciamento inviato a AWS X-Ray)

    com.amazonaws.codice-regione.xray

    (Facoltativo) Amazon SSM (necessario per l’agente SSM per le attività di gestione dei nodi. Alternativa a SSH)

    com.amazonaws.region-code.ssm

    Amazon CloudWatch Logs (necessario per i log di nodi e pod inviati ad Amazon CloudWatch Logs)

    com.amazonaws.codice-regione.logs

    AWS Security Token Service (necessario quando si utilizzano i ruoli IAM per gli account di servizio)

    com.amazonaws.codice-regione.sts

    Amazon EKS Auth (necessario quando si utilizzano le associazioni Pod Identity)

    com.amazonaws.region-code.eks-auth

    Amazon EKS

    com.amazonaws.region-code.eks

  • Qualsiasi nodo autogestito deve essere implementato in sottoreti con gli endpoint di interfaccia VPC richiesti. Se crei un gruppo di nodi gestiti, il gruppo di sicurezza dell'endpoint di interfaccia VPC deve consentire il CIDR per le sottoreti oppure dovrai aggiungere il gruppo di sicurezza del nodo creato al gruppo di sicurezza dell'endpoint di interfaccia VPC.

  • Archiviazione EFS: se i tuoi pod utilizzano volumi Amazon EFS, prima di implementare l’archiviazione di un sistema di file elastico con Amazon EFS, il file kustomization.yaml del driver deve essere modificato in modo da impostare che le immagini del container utilizzino la stessa regione AWS del cluster Amazon EKS.

  • Route53 non supporta AWS PrivateLink. Non è possibile gestire i record DNS di Route53 da un cluster Amazon EKS privato. Ciò ha un impatto su external-dnsdi Kubernetes.

  • Se utilizzi l’AMI ottimizzata EKS, devi abilitare l’endpoint ec2 nella tabella precedente. In alternativa, esiste la possibilità di impostare manualmente il nome DNS del nodo. L’AMI ottimizzata utilizza le API EC2 per impostare automaticamente il nome DNS del nodo.

  • È possibile utilizzare il Load Balancer Controller AWS per implementare AWS Application Load Balancer (ALB) e Network Load Balancer sul tuo cluster privato. Quando lo implementi, devi usare i flag della riga di comando per impostareenable-shield, enable-waf e enable-wafv2 su fasle. Il rilevamento dei certificati con i nomi host degli oggetti in entrata non è supportato. Questo perché il controller deve raggiungere AWS Certificate Manager, che non ha un endpoint dell’interfaccia VPC.

    Il controller supporta bilanciatori di carico di rete destinazioni IP, necessari per l'utilizzo con Fargate. Per ulteriori informazioni, consultare Instradare il traffico di applicazioni e HTTP con Application Load Balancer e Creazione di un Network Load Balancer.

  • Cluster Autoscaler è supportato. Quando si implementano i pod di Cluster Autoscaler, assicurarsi che la riga di comando includa --aws-use-static-instance-list=true. Per ulteriori informazioni, consultare Usa elenco di istanze statiche su GitHub. Il nodo worker VPC deve includere anche l’endpoint VPC AWS STS e l’endpoint VPC con scalabilità automatica.

  • Alcuni prodotti software dei container utilizzano chiamate API che accedono al servizio di misurazione AWS Marketplace per monitorare l’utilizzo. I cluster privati non consentono queste chiamate, pertanto questi tipi di container non possono essere utilizzati nei cluster privati.