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à.
Crea automaticamente pipeline CI/CD e ECS cluster Amazon per microservizi utilizzando AWS CDK
Creato da Varsha Raju () AWS
Ambiente: PoC o pilota | Tecnologie: DevOps; Contenitori e microservizi; Modernizzazione; Infrastruttura | AWSservizi: AWS CodeBuild; AWS CodeCommit; AWS CodePipeline; AmazonECS; AWS CDK |
Riepilogo
Questo modello descrive come creare automaticamente le pipeline di integrazione e distribuzione continua (CI/CD) e l'infrastruttura sottostante per la creazione e la distribuzione di microservizi su Amazon Elastic Container Service (Amazon). ECS Puoi utilizzare questo approccio se desideri configurare pipeline CI/CD per mostrare alla tua organizzazione i vantaggi di proof-of-concept CI/CD, microservizi e. DevOps È inoltre possibile utilizzare questo approccio per creare pipeline CI/CD iniziali da personalizzare o modificare in base ai requisiti dell'organizzazione.
L'approccio del pattern crea un ambiente di produzione e un ambiente non di produzione ciascuno con un cloud privato virtuale (VPC) e un ECS cluster Amazon configurato per l'esecuzione in due zone di disponibilità. Questi ambienti sono condivisi da tutti i tuoi microservizi e quindi crei una pipeline CI/CD per ogni microservizio. Queste pipeline CI/CD recuperano le modifiche da un repository di origine AWS CodeCommit, le creano automaticamente e quindi le distribuiscono negli ambienti di produzione e non di produzione. Quando una pipeline completa con successo tutte le sue fasi, è possibile utilizzarla URLs per accedere al microservizio negli ambienti di produzione e non di produzione.
Prerequisiti e limitazioni
Prerequisiti
Un account Amazon Web Services (AWS) attivo.
Un bucket Amazon Simple Storage Service (Amazon S3) esistente che contiene
starter-code.zip
il file (allegato).AWSCloud Development Kit (AWSCDK), installato e configurato nel tuo account. Per ulteriori informazioni su questo argomento, consulta la AWS CDK sezione Guida introduttiva alla AWS CDK documentazione.
Python 3 e
pip
, installato e configurato. Per ulteriori informazioni su questo argomento, consulta la documentazione di Python. Familiarità con AWSCDK,, AWS CodePipeline, AWS CodeBuild CodeCommit, Amazon Elastic Container Registry (AmazonECR)ECS, Amazon e AWS Fargate.
Familiarità con Docker.
Comprensione di CI/CD e. DevOps
Limitazioni
Si applicano i limiti generali AWS dell'account. Per ulteriori informazioni in merito, consulta le quote di AWS servizio nella documentazione di riferimento AWS generale.
Versioni del prodotto
Il codice è stato testato utilizzando la versione 16.13.0 e AWS CDK la versione 1.132.0 di Node.js.
Architettura
Il diagramma mostra il flusso di lavoro seguente:
Uno sviluppatore di applicazioni inserisce il codice in un repository. CodeCommit
Viene avviata una pipeline.
CodeBuild crea e invia l'immagine Docker a un repository Amazon ECR
CodePipeline distribuisce una nuova immagine su un servizio Fargate esistente in un cluster Amazon non di produzione. ECS
Amazon ECS inserisce l'immagine dal ECR repository Amazon in un servizio Fargate non di produzione.
I test vengono eseguiti utilizzando un prodotto non di produzione. URL
Il release manager approva la distribuzione di produzione.
CodePipeline distribuisce la nuova immagine su un servizio Fargate esistente in un cluster Amazon di produzione ECS
Amazon ECS inserisce l'immagine dal ECR repository Amazon nel servizio Fargate di produzione.
Gli utenti di produzione accedono alla funzionalità utilizzando una versione di produzione. URL
Stack tecnologico
AWS CDK
CodeBuild
CodeCommit
CodePipeline
Amazon ECR
Amazon ECS
Amazon VPC
Automazione e scalabilità
È possibile utilizzare l'approccio di questo modello per creare pipeline per microservizi distribuiti in uno stack condiviso. AWS CloudFormation L'automazione può creare più di un ECS cluster Amazon in ciascuno VPC e anche creare pipeline per microservizi distribuiti in un cluster Amazon condiviso. ECS Tuttavia, ciò richiede che tu fornisca nuove informazioni sulle risorse come input per lo stack della pipeline.
Strumenti
AWSCDK— AWS Cloud Development Kit (AWSCDK) è un framework di sviluppo software per definire l'infrastruttura cloud in codice e fornirla tramite AWS CloudFormation.
AWS CodeBuild— AWS CodeBuild è un servizio di compilazione completamente gestito nel cloud. CodeBuild compila il codice sorgente, esegue test unitari e produce artefatti pronti per l'implementazione.
AWS CodeCommit— AWS CodeCommit è un servizio di controllo delle versioni che consente di archiviare e gestire in modo privato gli archivi Git nel AWS Cloud. CodeCommit elimina la necessità di gestire il proprio sistema di controllo del codice sorgente o di preoccuparsi della scalabilità della sua infrastruttura.
AWS CodePipeline— AWS CodePipeline è un servizio di distribuzione continua che puoi utilizzare per modellare, visualizzare e automatizzare i passaggi necessari per il rilascio del software. È possibile modellare e configurare rapidamente le diverse fasi di un processo di rilascio del software. CodePipeline automatizza i passaggi necessari per rilasciare continuamente le modifiche al software.
Amazon ECS — Amazon Elastic Container Service (AmazonECS) è un servizio di gestione dei container veloce e altamente scalabile che viene utilizzato per l'esecuzione, l'arresto e la gestione dei container su un cluster. Puoi eseguire le tue attività e i tuoi servizi su un'infrastruttura serverless gestita da AWS Fargate. In alternativa, per un maggiore controllo sulla tua infrastruttura, puoi eseguire attività e servizi su un cluster di istanze Amazon Elastic Compute Cloud (AmazonEC2) che gestisci.
Docker
: Docker aiuta gli sviluppatori a imballare, spedire ed eseguire qualsiasi applicazione come contenitore leggero, portatile e autosufficiente.
Codice
Il codice per questo pattern è disponibile nei starter-code.zip
file cicdstarter.zip
and (allegati).
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura la directory di lavoro per AWSCDK. |
| AWS DevOps, Infrastruttura cloud |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea l'infrastruttura condivisa. |
| AWS DevOps, Infrastruttura cloud |
Monitora lo AWS CloudFormation stack. |
| AWS DevOps, Infrastruttura cloud |
Prova lo AWS CloudFormation stack. |
Importante: assicurati di registrare il IDs per i due gruppi di sicurezza VPCs e il gruppo di sicurezza IDs per i gruppi di sicurezza predefiniti in entrambiVPCs. | AWS DevOps, Infrastruttura cloud |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea l'infrastruttura per il microservizio. |
Nota: è inoltre possibile fornire i valori per entrambi i comandi utilizzando il | AWS DevOps, Infrastruttura cloud |
Monitora lo AWS CloudFormation stack. | Apri la AWS CloudFormation console e monitora l'avanzamento dello | AWS DevOps, Infrastruttura cloud |
Prova lo AWS CloudFormation stack. |
| |
Usa la pipeline. |
| AWS DevOps, Infrastruttura cloud |
Ripeti questa epopea per ogni microservizio. | Ripeti le attività di questa epopea per creare una pipeline CI/CD per ciascuno dei tuoi microservizi. | AWS DevOps, Infrastruttura cloud |
Risorse correlate
Informazioni aggiuntive
Comando cdk synth
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
cdk deploy
command
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>