Pubblicato il 26/11/2022 da alnao nella categoria AWS

L’infrastruttura AWS mette a disposizione alcuni servizi per gestire e lavorare con applicazioni e sistemi basati su Docker:

  • ECS (Elastic Container Services) la piattaforma principale con cui vengon gestiti le immagini e i container docker, con questo servizio è possibile creare “servizi” e “tasks” cioè immagini e container all’interno dell’infrastruttura AWS, tutti gli altri servizi sono sompresi e gestiti dalla ECS.
  • EKS (Elastic Kubernetes Services) è il servizio per la gestione dei container realizzati con la tecnologia open-source Kubernetes
  • Fargate è la piattaforma dove i containers vengono eseguiti si tratta di una alternativa al servizio EC2 infatti si può definire serverless in quanto non si sceglie il tipo di stanza ma solo il numero di CPU e la quantità di memoria RAM da usare.
  • ECR (Elastic Container Repository) è il repository privato di AWS, in questo si possono trovare una lunga lista di immagini pronte all’uso ed è possibile creare la propria immagine, passaggio inevitabile se si vuole eseguire una immagine docker all’interno dell’ecosistema AWS-ECS.

Avviare un container su AWS significa eseguire un task con il servizio ECS all’interno di un cluser, la scelta è di eseguire l’immagine all’interno di una istanza EC2 oppure di usare Faregate, nel primo caso l’istanza sarà gestita dal servizio EC2 con la possibilità di collegamento e gestione interna, nel secondo caso il servizio Serverless quindi senza un server specifico da configurare e gestire.

Usando e gestendo questo servizio bisogna inoltre tenere presente alcune regole fondamentali che non possono essere trascurate:

  • è necessario creare regole IAM specifiche per la gestione delle immagini, il servizio avvia le istanze ma le autorizzazioni delle immagini deve essere sempre esplicita, per esempio se una immagine deve leggere su un bucket S3 allora bisogna creare una regola IAM specifica proprio per questo permesso, così come per ogni servizio AWS e per ogni componente del Cloud, spesso questo tipo di regole viene chiamato “EC2 tasks role”.
  • è consigliato l’uso del Application Load Balancer integrato per la gestione del traffico di rete soprattutto quando si tratta di servizio http (web e/o rest per esempio), sono supportati ma sconsigliati il Network Load Balancer e il Elastic Load Balancer.
  • è possibile usare il servizio EFS per creare volumi “montabili” dai tasks anche in maniera condivisa tra più tasks in esecuzione nello stesso momento, proprio in una filosofia serverless (EFS + Fargate).
  • è necessario ricordare sempre che i docker hanno bisogno di regole di rete specifiche, per questo bisogna usare i Security Group, conviene infatti creare un SG per ogni immagine docker.

Ovviamente i servizi non sono gratuiti, l’unico servizio gratuiti è ECS mentre tutti gli altri servizi, come Fargate e EKS sono a pagamento e il prezzo dipende dalla zona e dalla quantità di risorse usate, risultano comunque convenienti rispetto alle classiche istanze messe a disposizione dal servizio EC2.