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à.
Configura una pipeline CI/CD per carichi di lavoro ibridi su Amazon ECS Anywhere utilizzando AWS CDK e GitLab
Creato dal dott. Rahul Sharad Gaikwad (AWS)
Riepilogo
Avviso: AWS non CodeCommit è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni
Amazon ECS Anywhere è un'estensione di Amazon Elastic Container Service (Amazon ECS). Fornisce supporto per la registrazione di un'istanza esterna, come un server locale o una macchina virtuale (VM), nel cluster Amazon ECS. Questa funzionalità aiuta a ridurre i costi e mitigare l'orchestrazione e le operazioni complesse dei container locali. Puoi utilizzare ECS Anywhere per distribuire ed eseguire applicazioni container in ambienti locali e cloud. Elimina la necessità per il team di apprendere più domini e set di competenze o di gestire software complessi da solo.
Questo modello descrive un step-by-step approccio per il provisioning di un cluster Amazon ECS con istanze Amazon ECS Anywhere utilizzando gli stack Amazon Web Services (AWS) Cloud Development Kit (AWS CDK). Quindi usi AWS CodePipeline per configurare una pipeline di integrazione e distribuzione continua (CI/CD). Quindi, replichi il tuo repository di GitLab codice su AWS CodeCommit e distribuisci la tua applicazione containerizzata sul cluster Amazon ECS.
Questo modello è progettato per aiutare coloro che utilizzano l'infrastruttura locale a eseguire applicazioni container e a gestire il codice base dell'applicazione GitLab . Puoi gestire questi carichi di lavoro utilizzando i servizi cloud AWS, senza disturbare l'infrastruttura locale esistente.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo.
Un'applicazione contenitore in esecuzione su un'infrastruttura locale.
Un GitLab repository in cui gestire la base di codice dell'applicazione. Per ulteriori informazioni, vedete Repository
()GitLab. AWS Command Line Interface (AWS CLI), installata e configurata. Per ulteriori informazioni, consulta Installazione o aggiornamento della versione più recente dell'interfaccia a riga di comando di AWS (documentazione dell'interfaccia a riga di comando di AWS).
AWS CDK Toolkit, installato e configurato a livello globale. Per ulteriori informazioni, consulta Installare il CDK AWS (documentazione AWS CDK).
npm, installato e configurato per AWS CDK in. TypeScript Per ulteriori informazioni, consulta Download e installazione di Node.js e npm (documentazione npm
).
Limitazioni
Per limitazioni e considerazioni, consulta Istanze esterne (Amazon ECS Anywhere) nella documentazione di Amazon ECS.
Versioni del prodotto
AWS CDK Toolkit versione 2.27.0 o successiva
npm versione 7.20.3 o successiva
Node.js versione 16.6.1 o successiva
Architettura
Stack tecnologico Target
AWS CDK
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
Amazon ECS Anywhere
Amazon Elastic Container Registry (Amazon ECR)
AWS Identity and Access Management (IAM)
Gestore di sistema AWS
GitLab repository
Architettura Target

Questo diagramma rappresenta due flussi di lavoro principali descritti in questo modello, il provisioning del cluster Amazon ECS e la configurazione della CI/CD pipeline that sets up and deploys the CI/CD pipeline, come segue:
Eseguire il provisioning del cluster Amazon ECS
Quando distribuisci il primo stack CDK AWS, viene creato uno CloudFormation stack su AWS.
Questo CloudFormation stack fornisce un cluster Amazon ECS e le relative risorse AWS.
Per registrare un'istanza esterna con un cluster Amazon ECS, devi installare AWS Systems Manager Agent (SSM Agent) sulla tua macchina virtuale e registrare la macchina virtuale come istanza gestita da AWS Systems Manager.
È inoltre necessario installare l'agente contenitore Amazon ECS e Docker sulla macchina virtuale per registrarla come istanza esterna nel cluster Amazon ECS.
Quando l'istanza esterna è registrata e configurata con il cluster Amazon ECS, può eseguire più contenitori sulla macchina virtuale, che è registrata come istanza esterna.
Il cluster Amazon ECS è attivo e può eseguire i carichi di lavoro delle applicazioni tramite contenitori. L'istanza del contenitore Amazon ECS Anywhere viene eseguita in un ambiente locale ma è associata al cluster Amazon ECS nel cloud.
Configurazione e distribuzione della pipeline CI/CD
Quando distribuisci il secondo stack CDK AWS, viene creato un altro CloudFormation stack su AWS.
Questo CloudFormation stack fornisce una pipeline CodePipeline e le relative risorse AWS.
Invia e unisci le modifiche al codice dell'applicazione in un repository locale. GitLab
Il GitLab repository viene replicato automaticamente nel repository. CodeCommit
Gli aggiornamenti al repository vengono avviati automaticamente CodeCommit . CodePipeline
CodePipeline copia il codice CodeCommit e crea l'applicazione incorporata distribuibile. CodeBuild
CodePipeline crea un'immagine Docker dell'ambiente di CodeBuild compilazione e la invia al repository Amazon ECR.
CodePipeline avvia CodeDeploy azioni che estraggono l'immagine del contenitore dal repository Amazon ECR.
CodePipeline distribuisce l'immagine del contenitore sul cluster Amazon ECS.
Automazione e scalabilità
Questo modello utilizza AWS CDK come strumento di infrastruttura come codice (IaC) per configurare e distribuire questa architettura. AWS CDK ti aiuta a orchestrare le risorse AWS e configurare Amazon ECS Anywhere e la pipeline CI/CD.
Strumenti
Servizi AWS
AWS Cloud Development Kit (AWS CDK) è un framework di sviluppo software che aiuta a definire e fornire l'infrastruttura cloud AWS in codice.
AWS CodeCommit è un servizio di controllo delle versioni che consente di archiviare e gestire archivi Git in modo privato, senza dover gestire il proprio sistema di controllo del codice sorgente.
AWS ti CodePipeline aiuta a modellare e configurare rapidamente le diverse fasi di un rilascio di software e ad automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.
AWS Command Line Interface (AWS CLI) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.
Amazon Elastic Container Registry (Amazon ECR) è un servizio di registro di immagini di container gestito sicuro, scalabile e affidabile.
Amazon Elastic Container Service (Amazon ECS) è un servizio rapido e scalabile di gestione dei container che ti aiuta a eseguire, arrestare e gestire container in un cluster. Questo modello utilizza anche Amazon ECS Anywhere, che fornisce supporto per la registrazione di un server o una macchina virtuale locale nel cluster Amazon ECS.
Altri strumenti
Node.js
è un ambiente di JavaScript runtime basato sugli eventi progettato per la creazione di applicazioni di rete scalabili. npm
è un registro software che viene eseguito in un ambiente Node.js e viene utilizzato per condividere o prendere in prestito pacchetti e gestire la distribuzione di pacchetti privati. Vagrant
è un'utilità open source per la creazione e la manutenzione di ambienti di sviluppo software virtuali portatili. A scopo dimostrativo, questo modello utilizza Vagrant per creare una macchina virtuale locale.
Archivio di codice
Il codice per questo pattern è disponibile nella pipeline GitHub CI/CD per Amazon ECS Anywhere utilizzando il repository AWS
Best practice
Prendi in considerazione le seguenti best practice per la distribuzione di questo pattern:
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Verifica la versione di AWS CDK. | Verifica la versione di AWS CDK Toolkit inserendo il seguente comando.
Questo modello richiede la versione 2.27.0 o successiva. Se disponi di una versione precedente, segui le istruzioni nella documentazione di AWS CDK per aggiornarla. | DevOps ingegnere |
Verifica la versione di npm. | Verifica la versione di npm inserendo il seguente comando.
Questo modello richiede la versione 7.20.3 o successiva. Se hai una versione precedente, segui le istruzioni nella documentazione di npm | DevOps ingegnere |
Configura le credenziali AWS. | Configura le credenziali AWS inserendo il
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Clona il repository di codice AWS CDK. |
| DevOps ingegnere |
Avvia l'ambiente. | Distribuisci il CloudFormation modello nell'account e nella regione AWS che desideri utilizzare inserendo il seguente comando.
Per ulteriori informazioni, consulta Bootstrapping nella documentazione di AWS CDK. | DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Installa le dipendenze del pacchetto e compila i TypeScript file. | Installa le dipendenze del pacchetto e compila TypeScript i file inserendo i seguenti comandi.
Questi comandi installano tutti i pacchetti dal repository di esempio. Per ulteriori informazioni, consulta npm ci | DevOps ingegnere |
Compilare il progetto. | Per creare il codice del progetto, inserisci il seguente comando.
Per ulteriori informazioni sulla creazione e la distribuzione del progetto, consulta La tua prima app AWS CDK nella documentazione di AWS CDK. | DevOps ingegnere |
Implementa lo stack di infrastruttura Amazon ECS Anywhere. |
| DevOps ingegnere |
Verifica la creazione e l'output dello stack. |
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura la tua VM. | Crea una VM Vagrant inserendo il | DevOps ingegnere |
Registra la tua macchina virtuale come istanza esterna. |
Questo configura la tua macchina virtuale come un'istanza esterna di Amazon ECS Anywhere e registra l'istanza nel cluster Amazon ECS. Per ulteriori informazioni, consulta Registrazione di un'istanza esterna in un cluster | DevOps ingegnere |
Verifica lo stato di Amazon ECS Anywhere e della macchina virtuale esterna. | Per verificare se la tua macchina virtuale è connessa al piano di controllo di Amazon ECS e se è in esecuzione, usa i seguenti comandi.
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un ramo nel CodeCommit repository. | Crea un ramo denominato
| DevOps ingegnere |
Configura il mirroring dei repository. | È possibile eseguire il mirroring di un GitLab repository da e verso fonti esterne. È possibile selezionare quale repository funge da origine. I rami, i tag e i commit vengono sincronizzati automaticamente. Configura un push mirror tra il GitLab repository che ospita l'applicazione e il repository. CodeCommit Per istruzioni, consultate Configurare un push mirror da GitLab a CodeCommit NotaPer impostazione predefinita, il mirroring sincronizza automaticamente il repository. Se desideri aggiornare manualmente i repository, consulta Aggiornare un mirror | DevOps ingegnere |
Implementa lo stack di pipeline CI/CD. | Distribuisci lo
| DevOps ingegnere |
Testa la pipeline CI/CD. |
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Pulisci ed elimina le risorse. | Dopo aver seguito questo schema, dovresti rimuovere le proof-of-concept risorse che hai creato. Per pulire, inserisci i seguenti comandi.
| DevOps ingegnere |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
Errori relativi ai pacchetti mancanti durante l'installazione delle dipendenze dei pacchetti. | Immettete uno dei seguenti comandi per risolvere i pacchetti mancanti.
oppure
|
Quando si esegue il
| Lo |
Viene
| Riavvia l'agente Amazon ECS sulla tua macchina virtuale Vagrant inserendo i seguenti comandi.
|
Risorse correlate
Dimostrazione di Amazon ECS Anywhere
(video) Esempi GitHub di workshop Amazon ECS Anywhere
() Mirroring del repository
(documentazione) GitLab