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 ad amazon ecr

I container permettono di creare facilmente un pacchetto con il codice, la configurazione e le dipendenze di un'applicazione, da utilizzare come servizio di base per ottenere ambiente uniforme, efficienza operativa, produttività di sviluppo e controllo di versione. I container consentono di distribuire applicazioni in modo rapido, affidabile e uniforme indipendentemente dall'ambiente di distribuzione.

panoramica dell'architettura

Velocità
L'avvio di un container con una nuova versione di codice può essere eseguito senza un sovraccarico di implementazione significativo. La velocità operativa migliora, perché il codice creato in un container sulla macchina locale dello sviluppatore può essere facilmente spostato su un server di test semplicemente spostando il container. Al momento della creazione, questo container può essere collegato ad altri container necessari per eseguire lo stack dell'applicazione.

Controllo delle dipendenze e pipeline migliorata
Un'immagine di container Docker è un'acquisizione point-in-time del codice e delle dipendenze di un'applicazione. Ciò consente a un'organizzazione tecnologizzata di creare una pipeline standard per il ciclo di vita delle applicazioni. Ad esempio:

  1. gli sviluppatori creano ed eseguono il container in locale.
  2. L'integrazione continua del server esegue lo stesso container ed esegue i test di integrazione per accertarsi che soddisfi le aspettative.
  3. Lo stesso container è spedito a un ambiente di gestione temporanea in cui il runtime behavior può essere controllato con i test di carico o QA manuale.
  4. Lo stesso container è spedito alla produzione.

La possibilità di creare, testare, spedire ed eseguire lo stesso container attraverso tutte le fasi di integrazione e pipeline di implementazione semplifica notevolmente la distribuzione di applicazioni affidabili di alta qualità.

Densità ed efficienza delle risorse
I container incrementano l'efficienza delle risorse consentendo l'esecuzione su un singolo sistema di più processi eterogenei. L'efficienza delle risorse è un naturale risultato delle tecniche di isolamento e allocazione che i container utilizzano. Ai container può essere imposto un limite di consumo di determinate quantità di CPU e memoria di un host. Grazie alla comprensione delle risorse necessarie di un container e di quelle disponibili dal server host sottostante, è possibile ridimensionare correttamente le risorse di calcolo da utilizzare con host di dimensioni ridotte o di aumentare la densità dei processi in esecuzione su un singolo host di grandi dimensioni, incrementando la disponibilità e ottimizzando l'utilizzo delle risorse.

Flessibilità
La flessibilità dei container Docker si basa sulla loro portabilità, semplicità di implementazione e le piccole dimensioni. In contrasto con l'installazione e la configurazione richieste in una macchina virtuale, i servizi per la creazione di pacchetti all'interno dei container permettono di spostarli facilmente tra gli host, isolarli dai guasti di altri servizi adiacenti e proteggerli da patch erranti o da aggiornamenti software del sistema host.

Tempo di 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 Container Registry. Fai clic sul numero della fase per espandere la sezione.

break-the-monolith
  • Fase 1. Configura

    In pochi passaggi sarai in grado di usare Docker, Github, Amazon ECS e Amazon ECR per distribuire il codice in container. Per essere sicuro di riuscire a completare questi passaggi, devi avere a disposizione i giusti strumenti.

    1. Account AWS: se non hai ancora un account con AWS, puoi registrarti qui. Tutti gli esercizi in questo tutorial sono progettati per essere coperti dal piano gratuito di AWS.
      ⚐ NOTA: alcuni dei servizi che utilizzerai potrebbero richiedere che il tuo account sia attivo da più di 12 ore. Se stai riscontrando problemi con i servizi e il tuo account è stato appena creato, attendi qualche ora e riprova.
    2. Installa Docker: utilizzerai Docker per creare i file di immagine che verrà eseguito nei tuoi container. Docker è un progetto open source ed è disponibile per il download per Mac o per Windows.
      Una volta completata l'installazione di Docker è possibile controllarne il funzionamento eseguendo Docker --version nel terminale. Dovresti vedere qualcosa di simile: Docker version 17.03.0-ce, build 60ccb22.
    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 Container Registry. È possibile imparare a utilizzare la CLI qui.
      • Dopo aver completato l'installazione di AWS CLI, puoi controllarne il funzionamento eseguendo aws --version nel terminale. Dovresti vedere qualcosa di simile: aws-cli/1.11.63 Python/2.7.10 Darwin/16.5.0 botocore/1.5.26.
      • Se hai già installato AWS CLI, esegui il comando seguente nel terminale per assicurarti che sia aggiornata alla versione più recente: pip install awscli --upgrade --user
    4. Editor di testo: se non disponi già di un editor di testo per la codifica, installane uno nel tuo ambiente locale. Atom è un semplice editor di testo open source di GitHub famoso tra gli sviluppatori.
  • Fase 2. Scarica e apri il progetto

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

    Apri i file di progetto: avvia Atom, seleziona "Add Project Folder" e seleziona la cartella in cui è stato salvato il repository "amazon-ecs-nodejs-microservices". Questo aggiungerà l'intero progetto in Atom per facilitare il lavoro.

    Nella tua cartella di progetto, dovresti vedere le cartelle organizzate per infrastruttura e servizi. L'infrastruttura contiene il codice di configurazione dell'infrastruttura di AWS CloudFormation da utilizzare nella fase successiva. La cartella dei servizi contiene il codice che forma l'applicazione node.js.

    Prenditi alcuni minuti per navigare tra i file e acquisire familiarità con i diversi aspetti dell'applicazione, tra cui il database db.json, il server server.js, il package.json e il dockerfile dell'applicazione.

    progetto dei microservizi
  • Fase 3. Provisioning di un repository

    Crea il repository:


    Registra le informazioni del repository:

    • Al prossimo clic dovresti ottenere un messaggio simile a questo:
    crea
    • L'indirizzo del repository segue un formato semplice: [account-id].dkr.ecr.[region].amazonaws.com/[repo-name].

     

    ⚐ NOTA: avrai bisogno di questo indirizzo, l'ID del tuo account e la regione che utilizzerai nei prossimi passaggi.

  • Fase 4. Crea e invia l'immagine Docker

    Apri il terminale e imposta il percorso per la sezione 2-containerized/services/api del codice GitHub nella directory in cui l'hai clonata o scaricata: ~/amazon-ecs-nodejs-microservices/2-containerized/services/api.

    Autenticazione Docker Login con AWS:

    1. Esegui aws ecr get-login --no-include-email --region [region]. Esempio: aws ecr get-login --no-include-email --region us-west-2 Se non hai mai utilizzato AWS CLI, potrebbe essere necessario configurare le credenziali.
    2. Otterrai un consistente output che inizia con docker login AWS -u -p... Copia questo intero output, incollalo ed eseguilo nel terminale.
    3. Dovrebbe essere visualizzata la conferma “Login riuscito”.

    ⚐ NOTA: se il login non è riuscito, è possibile che si disponga di una versione più recente di Docker che ha svalorizzato il flag -e none. Per risolvere il problema, incolla l’output nell’editor di testo, rimuovi -e none dalla fine dell’output ed esegui l’output aggiornato nel terminale.

    • Crea l'immagine: nel terminale, esegui docker build -t api . NOTA, il . è importante qui.
    • Applica il tag all'immagine: a creazione effettuata, applica il tag all'immagine in modo che sia possibile inviarla al repository: docker tag api:latest [account-id].dkr.ecr.[region].amazonaws.com/api:v1

    ⚐ Suggerimento da professionisti: il : v1 rappresenta la versione dell'immagine montata. Ogni volta che crei l'immagine, è consigliabile incrementare il numero di questa versione. Se stai utilizzando uno script, è possibile utilizzare un numero automatizzato, ad esempio un timestamp per applicare il tag all'immagine. Questa è una best practice che consente di ripristinare un'immagine di container a una versione precedente.

    • Inviare l'immagine ECR: esegui docker push per inviare la tua immagine a ECR: docker push [account-id]. dkr.ecr.[region].amazonaws.com/api:latest

    Sul tuo repository ECR dovresti vedere l'ultima immagine in cui hai inserito il tag.

    immagini