Ja saps crear imatges de Docker (subcapítol 17.1). Ara sorgeix una pregunta pràctica: un cop construïda la teva imatge, on la guardes perquè els teus servidors o serveis d’AWS la puguin utilitzar? La resposta és un registre d’imatges, i el d’AWS s’anomena ECR (Elastic Container Registry).

El problema: les imatges s’han de guardar en algun lloc

Construeixes una imatge al teu ordinador. Però per desplegar-la a AWS (a ECS o EKS, que veurem a continuació), aquests serveis necessiten descarregar-la d’algun lloc accessible. No pots executar una imatge que només està al teu portàtil; ha d’estar en un lloc central d’on tothom la pugui agafar.

El teu ordinador          ¿?            Servidors a AWS
  construeixes ──────► (on?) ────► descarreguen i executen
  la imatge          la guardes       la imatge

Aquest «lloc central» és un registre d’imatges.

Què és un registre d’imatges

Un registre de contenidors (container registry) és un magatzem d’imatges de Docker. Hi puges (push) les teves imatges, i després qualsevol màquina o servei autoritzat les descarrega (pull) per executar-les.

   Puges (push)          Registre            Descarreguen (pull)
   la teva imatge ─────► [imatges] ◄──────── ECS / EKS / servidors

Segurament coneixes Docker Hub, el registre públic més famós. ECR és l’equivalent d’AWS, pensat per a les teves imatges privades.

Analogia: un registre d’imatges és com un magatzem o biblioteca de motlles. Hi guardes els teus «motlles» (imatges, recorda l’analogia del subcapítol 17.1), etiquetats i ordenats, i qualsevol amb permís pot anar a agafar el motlle que necessita per produir les seves galetes (contenidors).

Què és ECR

ECR (Elastic Container Registry) és el registre d’imatges privat i gestionat d’AWS. Les seves característiques clau:

Privat i segur

Les teves imatges són privades per defecte: només qui tu autoritzis (mitjançant IAM, Capítol 7) pot pujar-les o descarregar-les. Això és important perquè les teves imatges contenen el teu codi i la teva propietat intel·lectual; no vols que estiguin exposades al món.

Integrat amb IAM

El control d’accés utilitza IAM (Capítol 7), igual que la resta d’AWS. Definex amb polítiques qui pot fer push (pujar) i qui pull (descarregar). Aplica el mínim privilegi (subcapítol 7.2): per exemple, que el sistema de CI/CD pugui pujar imatges i que ECS només pugui descarregar-les.

Integrat amb ECS i EKS

ECR es connecta de manera natural amb els serveis que executen contenidors a AWS (ECS i EKS, següents subcapítols). Quan desplegues una aplicació, aquests serveis descarreguen la imatge directament d’ECR, sense configuració complicada i dins la xarxa d’AWS (ràpid i segur).

Gestionat

Com altres serveis gestionats que hem vist, AWS s’encarrega de la infraestructura: disponibilitat, escalat de l’emmagatzematge, etc. Tu només puges i descarregues imatges.

El flux de treball amb ECR

El cicle típic, que connecta el desenvolupament amb el desplegament:

1. Construeixes la imatge      → docker build (subcap. 17.1)
2. L’etiquetes per a ECR       → amb l’adreça del teu repositori ECR
3. T’autentiques a ECR         → amb les teves credencials d’AWS (IAM)
4. Puges la imatge (push)      → queda guardada a ECR
5. ECS/EKS la descarrega (pull)→ i executa els teus contenidors

Exemple del món real: un equip desenvolupa una API. El seu sistema de CI/CD (Capítol 22), cada cop que s’aprova un canvi, construeix una imatge nova de l’API i la puja a ECR amb una etiqueta de versió (ex. api:v2.3). Després, ECS descarrega aquesta versió d’ECR i la desplega. ECR és el «pont» entre el codi que es construeix i els contenidors que s’executen.

Repositoris i etiquetes (tags)

Dins d’ECR, organitzes les imatges en repositoris (un per aplicació, normalment) i cada imatge porta una etiqueta (tag) que sol indicar la versió:

Repositori "la-meva-api"
 ├── la-meva-api:v1.0    (versió 1.0)
 ├── la-meva-api:v2.0    (versió 2.0)
 └── la-meva-api:latest  (la més recent)

Les etiquetes et permeten tenir diverses versions de la mateixa aplicació i triar quina desplegar. Això és clau per poder tornar a una versió anterior ràpidament si una de nova dóna problemes (rollback).

Apunt de costos: ECR cobra per l’emmagatzematge de les imatges. Les imatges velles que ja no utilitzes s’acumulen, així que convé configurar polítiques de cicle de vida (semblants a les d’S3, subcapítol 5.3) que esborrin automàticament les versions antigues i mantinguin el cost sota control.

El que has de recordar

  • Una imatge construïda s’ha de guardar en un registre perquè els serveis d’AWS la puguin descarregar i executar; no n’hi ha prou amb tenir-la al teu portàtil.
  • ECR (Elastic Container Registry) és el registre d’imatges privat i gestionat d’AWS (l’equivalent privat de Docker Hub).
  • És privat i segur (control d’accés amb IAM, mínim privilegi) i integrat de manera natural amb ECS i EKS, que descarreguen les imatges d’allà.
  • Flux: construeixes la imatge → la puges (push) a ECR → ECS/EKS la descarrega (pull) i l’executa. És el «pont» entre el desenvolupament i el desplegament.
  • Organitzes les imatges en repositoris amb etiquetes (tags) de versió, cosa que permet desplegar versions concretes i fer rollback. Utilitza polítiques de cicle de vida per esborrar imatges velles i controlar costos.

Al següent subcapítol veurem el servei que executa els teus contenidors: ECS, amb les seves task definitions, services i la diferència entre Fargate i EC2.

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats