CI/CD in AWS - Integrazione continua e distribuzione continua per le reti 5G in AWS

CI/CD in AWS

L'approccio CI/CD può essere rappresentato come una pipeline in cui il nuovo codice viene inviato a un'estremità, testato durante una serie di fasi (origine, compilazione, gestione temporanea e produzione) e quindi pubblicato come codice pronto per la produzione.

Diagramma che illustra un esempio della pipeline di codice AWS

Panoramica della pipeline CI/CD

Ogni fase della pipeline CI/CD è strutturata come un'unità logica nel processo di consegna. Ogni fase agisce da gate che controlla un determinato aspetto del codice. Durante l'avanzamento nella pipeline, si presume che la qualità del codice sia più alta nelle fasi successive perché ne vengono verificati sempre più aspetti. I problemi rilevati in una fase iniziale impediscono al codice di progredire nella pipeline. I risultati dei test vengono immediatamente inviati al team e le build e i rilasci successivi vengono interrotti se il software non supera la fase.

AWS offre un set completo di strumenti di sviluppo CI/CD per accelerare lo sviluppo del software e i cicli di rilascio. AWS CodePipeline automatizza le fasi di compilazione, test e implementazione del processo di rilascio ogni volta che si verifica una modifica del codice, in base al modello di rilascio definito. Ciò consente la consegna rapida e affidabile di caratteristiche e aggiornamenti.

Le pipeline di codice possono integrarsi con altri servizi. Questi possono essere servizi AWS, come Amazon Simple Storage Service (Amazon S3) oppure prodotti di terze parti, come GitHub. AWS CodePipeline è in grado di risolvere una serie di casi d'uso relativi allo sviluppo e alle operazioni, tra cui:

  • Creazione, compilazione e test del codice con AWS CodeBuild

  • Distribuzione continua di applicazioni basate su container nel cloud.

  • Convalida preliminare dell'implementazione di artefatti (come descrittori e immagini di container) richiesti per il servizio di rete o specifiche funzioni di rete native per il cloud

  • Test funzionali, di integrazione e delle prestazioni per la funzione di rete containerizzata/funzione di rete virtuale (CNF/VNF), inclusi i test di base e di regressione

  • Test di affidabilità e ripristino di emergenza (DR).

Diagramma che illustra i componenti della pipeline CI/CD AWS

Componenti della pipeline CI/CD AWS

AWS può configurare la pipeline CI/CD utilizzando i seguenti strumenti di sviluppo AWS:

La creazione della pipeline CI/CD può essere automatizzata utilizzando AWS CDK e AWS CloudFormation. Nel dominio NFV, questa automazione nativa di AWS può essere integrata in un framework di gestione e orchestrazione (MANO) e nel framework di orchestrazione dei servizi del CSP.

Il processo CI/CD include le seguenti fasi:

  • Configurazione della rete: AWS CDK e AWS CloudFormation avviano la creazione dei prerequisiti di rete:

  • Implementazione dell'infrastruttura: AWS CDK e AWS CloudFormation avviano la creazione delle seguenti pile di risorse:

  • Implementazione della funzione di rete per il cloud (CNF): in questa fase, la CNF viene implementata nei cluster EKS utilizzando gli strumenti dei grafici Kubectl e Helm. Questa fase implementa anche tutte le applicazioni o gli strumenti specifici necessari alle CNF per lavorare in modo efficiente (comePrometheus o FluentD). Le CNF possono essere implementate tramite funzioni Lambda o con AWS CodeBuild.

  • Aggiornamenti continui e implementazione: si tratta di una sequenza di passaggi che vengono eseguiti in modo iterativo per implementare le modifiche di container/configurazione che comportano aggiornamenti. Analogamente all'implementazione della CNF, gli aggiornamenti continui e l'implementazione possono essere automatizzati utilizzando i servizi AWS, con l'attivazione di AWS CodeCommit, Amazon Elastic Container Registry (Amazon ECR) o un sistema di origine di terze parti come GitLab Webhook.

Diagramma che illustra il flusso della pipeline CI/CD AWS.

Diagramma di flusso della pipeline CI/CD AWS

La pipeline CI/CD è creata con AWS CodePipeline e utilizza un servizio di distribuzione continua che modella, visualizza e automatizza i passaggi necessari per il rilascio del software. Definendo le fasi in una pipeline, è possibile recuperare il codice da un repository di codice sorgente, compilare il codice sorgente in un artefatto rilasciabile, testare l'artefatto e implementarlo in produzione. Viene implementato solo il codice che supera tutte queste fasi. Facoltativamente, puoi aggiungere altri requisiti alla pipeline, come le approvazioni manuali, per garantire che solo le modifiche approvate vengano implementate in produzione.