Pubblicato il 10/12/2022 da alnao nella categoria AWS

L’avvio di una immagine docker può apparire molto complicata ma in realtà è molto più semplice di quanto possa sembrare: prima di partire bisogna avere l’uri del docker e un’idea del tipo di risorse necessarie. Per questo semplice esempio useremo l’immagine di apache chiamata httpd disponibile nel repository ufficiale all’indirizzo

https://hub.docker.com/_/httpd

Da notare che dal sito ufficiale hub.docker.com ha il nome “httpd” che sarà il nome che andremo a configurare nel nostro ECS in quanto il servizio oltre ad usare il repository interno AWS chiamato ECR usa anche il repository ufficiale di hub.docker.com. I passi da eseguire per creare un piccolo esistema docker è:

  • in ECS creare un task definition indicando l’uri selezionata (“httpd” nel nostro caso) e quantità di risorse RAM e CPU adeguate (nel nostro caso 500Mb di ram e una vCPU sono più che sufficienti)
  • in ECS creare un cluster di tipo On-Demand indicando una istanze EC2 di dimensioni t2.micro (nel nostro caso basta ed è gratuita), in automatico si crea una istanze EC2 che sarà il nostro punto di riferimento, se si è creato un ip pubblico sarà possibile usarlo per vedere se funziona, inoltre è anche possibile usare le chiavi per collegersi via SSH
  • creare un target group con destinazione la EC2
  • creare un application load balancer indicando il target group come destinazione
  • creare un security group per il load balancer e ricorarsi di configurare la regole di rete per permettere al load balancer di comunicare con la istanza EC2 (nel nostro caso basta definire la porta 80 per il protocollo http, in caso di più task avviati sulla stessa macchina bisogna studiare bene le regole di rete per evitare blocchi tra il ALB e la EC2)
  • in ECS creare un service all’interno del cluser indicando il tutti componenti creati in precedenza (task, cluser e load balancer), indicando un numero di istanza maggiore di 2 verranno avviate più immagini all’interno del nostro cluster ma il load balancer effettuerà il lavoro sporco dell’instradamento di rete.

Questo è un semplice esempio di come è possibile avviare una istanza apache2-httpd in docker tramite il servizio ECS di AWS ma come è facile vedere per usare questo servizio bisogna bene conoscere tutti gli altri servizi tra cui le configurazioni di rete security group e gli application load balancer.