Cluster privati - Amazon EKS

Cluster privati

In questo argomento viene descritto come implementare un cluster privato Amazon EKS senza accesso a Internet in uscita. Se non si ha dimestichezza con la rete Amazon EKS, consultare Demistificazione delle reti cluster per i nodi (worker) Amazon EKS.

Requisiti

I seguenti requisiti devono essere soddisfatti per l'esecuzione di Amazon EKS in un cluster privato senza accesso a Internet in uscita.

  • Per poter essere estratta, un'immagine container deve essere inserita o copiata in Amazon Elastic Container Registry (Amazon ECR) o in un registro all'interno del VPC. Per ulteriori informazioni, consulta . Creazione di copie locali di immagini container.

  • L'accesso privato all'endpoint è obbligatorio per la registrazione dei nodi con l'endpoint del cluster. L'accesso pubblico all'endpoint è facoltativo. Per ulteriori informazioni, consulta . Controllo accessi all'endpoint del cluster Amazon EKS.

  • Per i nodi Linux e Windows, devi includere gli argomenti di bootstrap quando si avviano nodi autogestiti. Questo testo ignora l'introspezione Amazon EKS e non richiede l'accesso all'API Amazon EKS dal VPC. Sostituisci api-server-endpoint e certificate-authority con i valori del cluster Amazon EKS.

    • Per i nodi Linux:

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

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

    • Per i nodi Windows:

      -APIServerEndpoint api-server-endpoint -Base64ClusterCA certificate-authority

      Per ulteriori argomenti, consulta. AMI Windows ottimizzata per Amazon EKS.

  • La ConfigMap per aws-auth deve essere creata dal VPC. Per ulteriori informazioni sulla creazione della ConfigMap per aws-auth, consultare Abilitazione dell'accesso a utenti e ruoli IAM al cluster.

Considerazioni

Di seguito sono riportati alcuni aspetti da considerare quando si esegue Amazon EKS in un cluster privato senza accesso a Internet in uscita.

  • Numerosi servizi AWS supportano cluster privati, ma è necessario utilizzare un endpoint VPC . Per ulteriori informazioni, consultare Endpoint VPC. Alcuni servizi ed endpoint di uso comune includono:

    Servizio Endpoint
    Amazon Elastic Container Registry com.amazonaws.region-code.ecr.api e com.amazonaws.region-code.ecr.dkr
    Application Load Balancer e Network Load Balancer com.amazonaws.region-code.elasticloadbalancing
    AWS X-Ray com.amazonaws.region-code.xray
    Amazon CloudWatch Logs com.amazonaws.region-code.logs
    Ruoli IAM per gli account di servizio

    com.amazonaws.region-code.sts

    App Mesh

    • L'iniettore sidecar App Mesh per Kubernetes è supportato. Per ulteriori informazioni, consultare Iniettore sidecar App Mesh su GitHub.

    • Il controller App Mesh per Kubernetes non è supportato. Per ulteriori informazioni, consultare Controller App Mesh su GitHub.

    • Cluster Autoscaler è supportato. Quando si distribuiscono 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 STS e l'endpoint VPC con scalabilità automatica.

    com.amazonaws.region-code.appmesh-envoy-management
  • Prima di implementare Driver CSI per Amazon EFS, il file kustomization.yaml deve essere modificato in modo tale che le immagini del container utilizzino la stessa Regione AWS del cluster Amazon EKS.

  • Sono supportati nodi gestiti e autogestiti. Le istanze per i nodi devono avere accesso agli endpoint VPC. Se si crea un gruppo di nodi gestiti, il gruppo di sicurezza degli endpoint VPC deve consentire il CIDR per le sottoreti. In alternativa, aggiungere al gruppo di sicurezza degli endpoint VPC il gruppo di sicurezza dei nodi di lavoro creato.

  • La Driver CSI per Amazon FSx for Lustre non è supportata.

  • AWS Fargate è supportato con cluster privati. Puoi utilizzare AWS Load Balancer Controller (il controller del bilanciatore del carico) per implementare AWS Application Load Balancer (ALB) e Network Load Balancer. Il controller supporta bilanciatori di carico di rete destinazioni IP, necessari per l'utilizzo con Fargate. Per ulteriori informazioni, consulta Bilanciamento del carico di applicazione su Amazon EKS e Creazione di un bilanciatore del carico di rete.

  • Installazione del componente aggiuntivo AWS Load Balancer Controller è supportato. Tuttavia, durante l'installazione, è necessario utilizzare le flag riga di comando per impostare enable-shield, enable-waf, e enable-wafv2 in false. Inoltre, certificate discovery con i nomi host degli oggetti Ingress non è supportato. Questo perché il controller deve raggiungere ACM, che non ha un endpoint VPC.

Creazione di copie locali di immagini container

Poiché un cluster privato non ha accesso a Internet in uscita, le immagini del container non possono essere estratte da fonti esterne come Docker Hub. Al contrario, le immagini di container devono essere copiate localmente in Amazon ECR o in un registro alternativo accessibile nel VPC. Un'immagine di container può essere copiata in Amazon ECR dall'esterno del VPC privato. Il cluster privato accede al repository Amazon ECR utilizzando gli endpoint Amazon ECR VPC. Docker e la AWS CLI devono essere installati nella workstation per poter creare la copia locale.

Per creare una copia locale di un'immagine container

  1. Creare un repository Amazon ECR. Per ulteriori informazioni, consultare Creazione di un repository.

  2. Estrai l'immagine container dal registro esterno utilizzando docker pull.

  3. Applica alla tua immagine il tag con la combinazione di registro, repository e nome tag immagine opzionale Amazon ECR utilizzando docker tag.

  4. Esegui l'autenticazione nel registro. Per ulteriori informazioni, consultare Autenticazione dei registri.

  5. Invia l'immagine ad Amazon ECR utilizzando docker push.

    Nota

    Assicurati di aggiornare la configurazione delle risorse in modo da utilizzare la nuova posizione dell'immagine.

    L'esempio seguente estrae l'immagine amazon/aws-node-termination-handler utilizzando il tag v1.3.1-linux-amd64 da Docker Hub e crea una copia locale in Amazon ECR.

    aws ecr create-repository --repository-name amazon/aws-node-termination-handler docker pull amazon/aws-node-termination-handler:v1.3.1-linux-amd64 docker tag amazon/aws-node-termination-handler 111122223333.dkr.ecr.region-code.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64 aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com docker push 111122223333.dkr.ecr.region-code.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64

AWS STSEndpoint per i ruoli IAM per gli account di servizio

I pod configurati con ruoli IAM per gli account di servizioacquisiscono le credenziali da una chiamata API AWS Security Token Service (AWS STS). Se non è presente un accesso a Internet in uscita, è necessario creare e utilizzare un AWS STS per l'Endpoint VPC nel VPC. La maggior parte degli SDK v1 di AWS utilizzano l'endpoint AWS STSglobale 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). A tale scopo, imposta la variabile di ambiente AWS_STS_REGIONAL_ENDPOINTS con un valore di regional, insieme alla Regione AWS.

Ad esempio, nelle specifiche di un pod:

... containers: - env: - name: ' value: region-code - name: AWS_STS_REGIONAL_ENDPOINTS value: regional ... ```

Sostituisci region-code con la Regione AWS in cui si trova il cluster (ad esempio, us-west-2).