In questo modulo, creerai l'immagine del container per la tua applicazione monolitica node.js e la invierai ad Amazon Elastic Container Registry. Inizia a creare

distribuzione su amazon ecr

I container consentono di creare con la massima semplicità un pacchetto con codice, configurazione e dipendenze di un'applicazione, da impiegare come elemento di base per ottenere ambienti uniformi, efficienza operativa, produttività di sviluppo e controllo delle versioni. Tramite i container è possibile distribuire applicazioni in modo rapido, affidabile e uniforme indipendentemente dall'ambiente di distribuzione.

panoramica dell'architettura

Velocità
Il lancio di un container con una nuova versione del codice è eseguibile senza un sovraccarico nella distribuzione. La velocità operativa aumenta perché il codice creato in un container o in un computer locale dello sviluppatore può essere trasferito facilmente a un server di test semplicemente trasferendo il container stesso. Nella fase di creazione, il container può essere collegato ad altri container necessari per eseguire lo stack di applicazioni.

Controllo della dipendenza e pipeline migliorata
Un’immagine del container Docker è un’acquisizione in un determinato istante delle dipendenze e del codice di un’applicazione. Ciò consente a un’azienda tecnica di creare una pipeline standard per il ciclo di vita dell’applicazione. Ad esempio:

  1. Gli sviluppatori creano ed eseguono il container localmente.
  2. Il server d’integrazione continua esegue lo stesso container e i test d’integrazione su di esso per verificare che superi le aspettative.
  3. Lo stesso container viene inviato a un ambiente di gestione temporanea dove il suo comportamento di runtime può essere verificato utilizzando test di carico o procedure di CQ manuale.
  4. Lo stesso container viene inviato per la produzione.

La possibilità di creare, verificare, spedire ed eseguire lo stesso container attraverso tutti gli stadi della pipeline di integrazione e distribuzione semplifica notevolmente l’attuazione di un’applicazione affidabile e di alta qualità.

Efficienza delle risorse e densità
I container permettono di ottenere più facilmente una maggiore efficienza della risorse consentendo l’esecuzione di più processi eterogenei su un singolo sistema. L’efficienza delle risorse consegue spontaneamente dalle tecniche di isolamento e allocazione utilizzate dal container. I container possono essere limitati al consumo di determinate quantità della memoria e della CPU di un host. Comprendendo quali risorse sono necessarie per un container e quali sono disponibili sul server host sottostante, puoi dimensionare appropriatamente le risorse di calcolo che utilizzi con host di dimensioni inferiori o aumentare la densità dei processi che vengono eseguiti su un singolo host di grandi dimensioni, aumentando la disponibilità e ottimizzando il consumo delle risorse.

Flessibilità
La flessibilità dei container Docker è basata sulla loro portabilità, facilità di distribuzione e ridotte dimensioni. Al contrario di quanto si verifica per l’installazione e la configurazione necessarie su una macchina virtuale (VM), la creazione di un pacchetto di servizi all’interno dei container permette di trasferirli da un host all’altro, isolarli contro i problemi di altri servizi adiacenti e proteggerli da aggiornamenti del software o patch non corretti sul sistema host, il tutto con la massima semplicità. 

Tempo richiesto per il completamento: 20 minuti

Servizi utilizzati:


Nella prima parte di questo tutorial, creerai l'immagine del container Docker per la tua applicazione monolitica node.js e la invierai ad Amazon Elastic Container Registry (Amazon ECR). Fai clic sul numero di ciascuna fase per espandere la sezione.

break-the-monolith
  • Fase 1. Preparazione

    Nelle fasi successive, userai Docker, Github, Amazon Elastic Container Service (Amazon ECS) e Amazon ECR per distribuire il codice nei container. Per completare queste fasi, accertati di disporre dei seguenti strumenti.

    1. Un account AWS: se non hai ancora un account AWS, puoi crearlo qui. Tutte le esercitazioni di questo tutorial sono concepite per poter essere eseguite nell’ambito del piano gratuito AWS.
      ⚐ Nota: alcuni dei servizi che utilizzerai possono richiedere che il tuo account sia attivo da più di 12 ore. Se riscontri problemi con un servizio qualsiasi e hai un account appena creato, attendi alcune ore e riprova.
    2. Installa Docker: userai Docker per creare i file delle immagini che saranno eseguiti nei container. Docker è un progetto open source. Puoi scaricarlo sia per Mac che per Windows.
      Una volta installato Docker, puoi verificare che sia in esecuzione immettendo Docker versione-- nel terminale. Deve essere visualizzato il numero della versione, per esempio: Docker versione 19.03.5, build 633a0ea.
    3. Installare l'interfaccia a riga di comando di AWS:
      • Puoi utilizzare l'interfaccia a riga di comando o CLI (Command Line Interface) di AWS per inviare le immagini ad Amazon ECR. Per maggiori informazioni sulla CLI di AWS e scaricarla, fai clic qui.
      • Una volta installata la CLI di AWS, verifica che sia in esecuzione immettendo aws --version nel terminale. Deve essere visualizzato il numero della versione, per esempio: aws-cli/1.16.217 Python/2.7.16 Darwin/18.7.0 botocore/1.12.207.
      • Se la CLI di AWS è già installata, esegui questo comando nel terminale per accertarti che sia aggiornata alla versione più recente: pip install awscli --upgrade --user
      • Se non hai mai usato prima la CLI di AWS, potrebbe essere necessario configurare le tue credenziali.
    4. Usa un editor di testo: se non ne hai già uno per la scrittura di codice, installane uno nel tuo ambiente locale. Atom è un semplice editor di testo open source di GitHub molto diffuso tra gli sviluppatori.
  • Fase 2. Download e apertura del progetto

    Scarica il codice da GitHub: vai a https://github.com/awslabs/amazon-ecs-nodejs-microservices e seleziona Clona o Download per scaricare il repository di GitHub nel tuo ambiente locale. Per clonare il repository puoi usare anche GitHub Desktop o Git.

    Apri i file del progetto: Avvia Atom, seleziona Aggiungi cartella progetto e seleziona la cartella in cui hai salvato il repository amazon-ecs-nodejs-microservices. L’intero progetto sarà così aggiunto ad Atom per consentirti di svilupparlo agevolmente.

    Nella cartella del progetto dovresti vedere cartelle relative a infrastruttura e servizi. La prima contiene il codice della configurazione dell’infrastruttura AWS CloudFormation che userai nella fase successiva, mentre servizi contiene il codice che forma l’applicazione node.js.

    Rivedi i file e familiarizza con i vari aspetti dell’applicazione – il database db.json, il server server.jspackage.json e l’applicazione Dockerfile.

    progetto microservizi
  • Fase 3. Provisioning di un repository

    Crea il repository:

    • Vai alla console Amazon ECR.
    • Sulla pagina Repository, seleziona Crea repository.
    • Sulla pagina Crea repository, immetti il seguente nome per il repository: api.
      ⚐ Nota: sotto Immutabilità tag, non modificare le impostazioni predefinite.
    • Seleziona Crea repository.

    Una volta creato il repository, compare un messaggio di conferma che ne mostra l’indirizzo. L’indirizzo del repository ha il seguente formato: [account-ID].dkr.ecr.[region].amazonaws.com/[repo-name]. I parametri [account-ID], [region] e [repo-name] dipenderanno dalla tua configurazione.

    ⚐ Nota: nel corso di questo tutorial avrai bisogno dell’indirizzo del repository.

    creazione
  • Fase 4. Creazione e invio dell’immagine Docker

    Accedi al terminale e vai alla seguente directory: ~/amazon-ecs-nodejs-microservices/2-containerized/services/api.

    Usa il terminale per autenticare l’accesso a Docker:

    1. Esegui $(aws ecr get-login --no-include-email --region [your-region]). Sostituisci [your-region], per esempio: $(aws ecr get-login --no-include-email --region us-west-2). Se necessario, configura le tue credenziali.
      Se l’autenticazione è riuscita, riceverai il messaggio di conferma: Login riuscito.
    2. Per creare l’immagine, esegui questo comando sul terminale: docker build -t api .
      ⚐ Nota: il punto (.) dopo api è necessario.
    3. Una volta completata la creazione, tagga l’immagine per inviarla nel repository: docker tag api:latest [account-ID].dkr.ecr.[region].amazonaws.com/api:v1 
      ⚐ Nota: sostituisci i placeholder [account-ID] e [region] con le tue specifiche informazioni.
      ⚐ Suggerimento:  :v1 rappresenta la versione del build dell’immagine. Ogni volta che crei l’immagine, il numero di questa versione aumenta. Se stessi usando uno script, potresti utilizzare una numerazione automatica, come un formato data/ora, per taggare l’immagine. Questa è una best practice che ti consente di ripristinare facilmente nel futuro il build precedente dell’immagine del container.
    4. Invia l’immagine a Amazon ECR eseguendo: docker push [account-id].dkr.ecr.[region].amazonaws.com/api:v1
      ⚐ Nota: sostituisci i placeholder [account-ID] e [region] con le tue specifiche informazioni.

    Se passi al repository Amazon ECR, dovresti vedere la tua immagine con il tag v1.

    Tag dell’immagine Amazon ECR