View a markdown version of this page

Guida introduttiva a Beanstalk Cluster - AWS Elastic Beanstalk

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

Guida introduttiva a Beanstalk Cluster

In questo tutorial, crei un'applicazione Elastic Beanstalk e un ambiente Beanstalk Cluster. Si omette la versione dell'applicazione in modo che Elastic Beanstalk distribuisca l'immagine del contenitore di esempio predefinita. Attendi quindi che l'ambiente sia pronto, recuperi il relativo URL e lo interrompi. In alternativa, puoi iniziare utilizzando la console di AWS gestione, che fornisce un'esperienza completamente guidata, oppure indirizzare il tuo agente AI alla Grappolo Beanstalk documentazione.

Durata stimata: 15-20 minuti

Importante

Elastic Beanstalk non prevede costi aggiuntivi, ma si pagano in base alle AWS risorse utilizzate dall'ambiente, tra cui Amazon EKS e il relativo calcolo. Per ulteriori informazioni, consulta i prezzi di Elastic Beanstalk. Completa i passaggi di pulizia al termine di questo tutorial.

Prima di iniziare

Verifica i seguenti requisiti preliminari:

  • Istalla e configura la AWS CLI. Per istruzioni, consulta la Guida introduttiva alla AWS CLI Guida per l'AWS Command Line Interface utente.

  • Utilizza un principal IAM in grado di creare e gestire applicazioni e ambienti Elastic Beanstalk e che può passare i ruoli di cluster, nodo e osservabilità durante la creazione di un ambiente. Per le autorizzazioni esatte, consulta. Autorizzazioni per creare l'ambiente

  • Crea il ruolo del cluster assunto da Amazon EKS, il ruolo di nodo assunto dai nodi Amazon EC2 del cluster e il ruolo di osservabilità che pubblica le metriche, i log e le tracce dell'ambiente, come descritto in. Crea i ruoli IAM Per scegliere le sottoreti VPC utilizzate dall'ambiente, consulta. Configurazione della rete per ambienti Beanstalk Cluster

  • Scegli una AWS regione in cui Beanstalk Cluster è disponibile. I comandi utilizzano la regione della tua configurazione. AWS CLI

Crea i ruoli IAM

Un ambiente Beanstalk Cluster richiede tre ruoli IAM forniti: un ruolo cluster, un ruolo di nodo e un ruolo di osservabilità. La console Elastic Beanstalk li crea per te, ma questo tutorial li utilizza, quindi creali prima. AWS CLI Usa questi nomi, perché la console seleziona i ruoli esistenti in base al nome. Per sapere a cosa serve ogni ruolo e per le autorizzazioni del chiamante che devi passare, consulta. Autorizzazioni per Beanstalk Cluster

Per creare i ruoli del cluster, del nodo e dell'osservabilità
  1. Crea un file di policy di fiducia per ogni servizio che assume un ruolo. Il ruolo del cluster si fida di Amazon EKS, il ruolo del nodo si fida di Amazon EC2 e il ruolo di osservabilità si fida di Amazon EKS Pod Identity.

    $ cat > eks-trust.json <<'EOF' { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "eks.amazonaws.com"}, "Action": ["sts:AssumeRole", "sts:TagSession"] }] } EOF
    $ cat > ec2-trust.json <<'EOF' { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" }] } EOF
    $ cat > pods-trust.json <<'EOF' { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "pods.eks.amazonaws.com"}, "Action": ["sts:AssumeRole", "sts:TagSession"] }] } EOF
  2. Crea il ruolo del cluster e allega le relative politiche.

    $ aws iam create-role \ --role-name aws-elasticbeanstalk-eks-cluster-role \ --assume-role-policy-document file://eks-trust.json $ for p in AmazonEKSClusterPolicy AmazonEKSNetworkingPolicy AmazonEKSComputePolicy \ AmazonEKSBlockStoragePolicy AmazonEKSLoadBalancingPolicy AWSElasticBeanstalkEKSTagging; do aws iam attach-role-policy \ --role-name aws-elasticbeanstalk-eks-cluster-role \ --policy-arn arn:aws:iam::aws:policy/$p done
  3. Crea il ruolo del nodo e allega le relative politiche.

    $ aws iam create-role \ --role-name aws-elasticbeanstalk-eks-node-role \ --assume-role-policy-document file://ec2-trust.json $ for p in AmazonEKSWorkerNodeMinimalPolicy AmazonEC2ContainerRegistryPullOnly \ AmazonSSMManagedInstanceCore; do aws iam attach-role-policy \ --role-name aws-elasticbeanstalk-eks-node-role \ --policy-arn arn:aws:iam::aws:policy/$p done
  4. Crea il ruolo di osservabilità e allega le relative politiche.

    $ aws iam create-role \ --role-name aws-elasticbeanstalk-eks-observability-role \ --assume-role-policy-document file://pods-trust.json $ for p in CloudWatchAgentServerPolicy AWSElasticBeanstalkEKSObservability; do aws iam attach-role-policy \ --role-name aws-elasticbeanstalk-eks-observability-role \ --policy-arn arn:aws:iam::aws:policy/$p done
  5. Registra gli ARN dei tre ruoli. Li superi quando crei l'ambiente.

    $ for r in cluster node observability; do aws iam get-role --role-name aws-elasticbeanstalk-eks-$r-role \ --query 'Role.Arn' --output text done

Scegli uno strumento di provisioning supportato

Puoi creare e gestire un ambiente Beanstalk Cluster con la console Elastic Beanstalk, l'API Elastic Beanstalk o il. AWS CLI Questo tutorial utilizza il metodo in modo che ogni richiesta sia visibile e ripetibile AWS CLI .

Puoi anche implementarlo con l' GitHub Action ufficiale e puoi definire i tuoi ambienti come infrastruttura come codice con Terraform tramite il provider. AWS Per l' GitHub Action, vedi. Utilizzo GitHub delle azioni per la distribuzione su Elastic Beanstalk

Crea l'applicazione e distribuisci l'esempio

  1. Crea un'applicazione Elastic Beanstalk per contenere l'ambiente.

    $ aws elasticbeanstalk create-application \ --application-name getting-started-cluster-app
  2. Creazione dell'ambiente Il Cluster livello seleziona Beanstalk Cluster. Poiché questa richiesta non ha un'etichetta di versione, Elastic Beanstalk distribuisce l'applicazione di esempio.

    $ aws elasticbeanstalk create-environment \ --application-name getting-started-cluster-app \ --environment-name getting-started-cluster-env \ --tier Name=Cluster,Type=EKS \ --option-settings \ Namespace=aws:elasticbeanstalk:eks,OptionName=cluster-role,Value=cluster-role-arn \ Namespace=aws:elasticbeanstalk:eks,OptionName=node-role,Value=node-role-arn \ Namespace=aws:elasticbeanstalk:eks:environment,OptionName=observability-role,Value=observability-role-arn

    Sostituisci i segnaposto ARN dei ruoli con i ruoli che hai preparato. La richiesta omette e. service-port load-balancer-type Elastic Beanstalk risolve tali impostazioni ai valori predefiniti e. 8080 ALB Per scegliere valori diversi, passali con. --option-settings Per il riferimento completo alle opzioni, vedereOpzioni di configurazione per ambienti Beanstalk Cluster.

  3. Attendi che l'ambiente sia pronto. Un primo ambiente può richiedere dai 15 ai 20 minuti mentre Elastic Beanstalk crea il cluster Amazon EKS e distribuisce il campione. AWS CLI Fornisce un cameriere integrato che esegue il polling fino alla segnalazione dell'ambiente. Ready Il cameriere esegue i sondaggi al massimo 20 volte a intervalli di 20 secondi, circa 6 minuti e 40 secondi, quindi in un primo ambiente aspettatevi che riferisca. Max attempts exceeded Eseguilo di nuovo finché non segnala l'esito positivo.

    $ aws elasticbeanstalk wait environment-exists \ --environment-names getting-started-cluster-env

    Il cameriere segnala Max attempts exceeded sia quando l'ambiente è ancora in fase di creazione sia quando la creazione è fallita. Se non riporta l'esito positivo dopo alcune esecuzioni, ispeziona gli eventi recenti dell'ambiente e risolvi l'errore segnalato prima di continuare.

    $ aws elasticbeanstalk describe-events \ --environment-name getting-started-cluster-env \ --query 'Events[].[EventDate,Severity,Message]' \ --output table
  4. Controlla lo stato dell'ambiente, il colore di integrità, lo stato di integrità e l'URL.

    $ aws elasticbeanstalk describe-environments \ --application-name getting-started-cluster-app \ --environment-names getting-started-cluster-env \ --query 'Environments[0].[Status,Health,HealthStatus,CNAME]' \ --output table

    Verifica che l'ambiente riporti Ready e restituisca un valore non CNAME vuoto. Apri https:// seguito dal CNAME in un browser Web e conferma che l'applicazione di esempio risponda. Il load balancer risponde solo su HTTPS, quindi una richiesta http:// attende che scada il timeout. Per accettare richieste HTTP e fare in modo che Elastic Beanstalk le reindirizzi su HTTPS, consulta. Configurazione della rete per ambienti Beanstalk Cluster Un ambiente inattivo può inizialmente segnalare Grey e NoData poiché ha ricevuto un numero insufficiente di richieste per determinare lo stato dell'applicazione; per gli eventi di integrità questo stato viene visualizzato come. No Data Ciò non indica una distribuzione non riuscita. Dopo che l'applicazione riceve un numero sufficiente di richieste riuscite, l'integrità normalmente passa a Green eOk. Se il CNAME è vuoto, l'applicazione non risponde o lo stato di integrità segnala un errore, ispeziona gli eventi recenti dell'ambiente prima di continuare:

    $ aws elasticbeanstalk describe-events \ --environment-name getting-started-cluster-env \ --query 'Events[].[EventDate,Severity,Message]' \ --output table

    Per il modello di integrità del cluster, vedere. Monitoraggio degli ambienti Beanstalk Cluster

Implementa la tua immagine del contenitore

L'ambiente esegue l'applicazione di esempio perché la richiesta di creazione non contiene alcuna etichetta di versione. Per eseguire un'applicazione personalizzata, create una versione dell'applicazione che assegna un nome all'immagine del contenitore, quindi distribuite tale versione nell'ambiente. Questo è il normale flusso di Elastic Beanstalk: una versione dell'applicazione è l'artefatto distribuibile e l'esempio è ciò che Elastic Beanstalk distribuisce quando non ne fornisci una.

Prima di iniziare, hai bisogno di un'immagine del contenitore che hai già inviato a un registro, ad esempio un repository Amazon Elastic Container Registry (Amazon ECR) nel tuo account, e l'immagine deve essere in ascolto nell'ambienteservice-port, 8080 a meno che tu non l'abbia modificata. La distribuzione della tua versione sostituisce l'applicazione di esempio. Per fare in modo che Elastic Beanstalk crei invece l'immagine dal sorgente e per le opzioni di compilazione, consulta. Creazione di immagini di container per ambienti Beanstalk Cluster

  1. Crea una versione dell'applicazione che punti alla tua immagine.

    $ aws elasticbeanstalk create-application-version \ --application-name getting-started-cluster-app \ --version-label v1 \ --image-configuration Source={Uri=your-image-uri}

    Sostituiscila your-image-uri con la tua immagine, ad esempio111122223333.dkr.ecr.us-east-1.amazonaws.com/my-app:v1. Poiché l'immagine è già stata creata, la versione non richiede alcuna fase di creazione ed è pronta per la distribuzione.

  2. Distribuisci la versione nell'ambiente.

    $ aws elasticbeanstalk update-environment \ --environment-name getting-started-cluster-env \ --version-label v1
  3. Verifica che la distribuzione sia terminata e che l'ambiente sia compatibile con la tua applicazione.

    $ aws elasticbeanstalk describe-events \ --environment-name getting-started-cluster-env \ --query 'Events[].[EventDate,Severity,Message]' \ --output table

    Apri https:// seguito dal CNAME dell'ambiente in un browser web e conferma che l'applicazione risponde. In caso contrario, controllate gli eventi per verificare la presenza di un errore di distribuzione e verificate che l'immagine sia in ascolto di quella dell'ambiente. service-port

Pulisci le risorse del tutorial

  1. Terminare l'ambiente.

    $ aws elasticbeanstalk terminate-environment \ --environment-name getting-started-cluster-env
  2. Attendi che l'ambiente raggiunga lo Terminated stato. AWS CLI Fornisce un cameriere integrato che effettua i sondaggi fino al completamento della risoluzione. Questo cameriere ha lo stesso limite di 20 tentativi, quindi ripetilo finché non risulta un esito positivo.

    $ aws elasticbeanstalk wait environment-terminated \ --environment-names getting-started-cluster-env

    Il cameriere segnala Max attempts exceeded sia quando il licenziamento è ancora in corso sia quando è fallito. Se non riporta un esito positivo dopo alcune esecuzioni, risolvi l'errore negli eventi dell'ambiente. Non eliminare l'applicazione mentre l'ambiente esiste ancora.

  3. Elimina l'applicazione e le relative versioni, inclusa la versione di esempio creata da Elastic Beanstalk e qualsiasi versione aggiunta. Ciò non comporta l'eliminazione dell'immagine del contenitore fornita o del repository che la contiene; vedi. Creazione di immagini di container per ambienti Beanstalk Cluster

    $ aws elasticbeanstalk delete-application \ --application-name getting-started-cluster-app

Elastic Beanstalk elimina un cluster Amazon EKS condiviso solo dopo aver terminato l'ultimo ambiente che lo utilizza. L'eliminazione del cluster può richiedere fino a tre ore; i costi di Amazon EKS e di altre risorse continuano fino al completamento dell'eliminazione. La terminazione non elimina i ruoli IAM di cluster, nodo e osservabilità forniti dal cliente. Verifica l'eliminazione del cluster come descritto in. Eliminazione del cluster

Fasi successive