Aufgaben GitHub CI/CD auf AWS Fargate
Das Ziel ist es, eine CI/CD Pipeline zu erstellen, die eine Anwendung automatisch auf AWS Fargate deployed.
Das ist nicht ganz trivial, da es einige Voraussetzungen und Konfigurationen in AWS braucht.
Sie haben das im Modul 347 bereits gemacht. Sie sind dabei dieser Anleitung gefolgt: https://bbwin.gitlab.io/m169-aws-fargate/fargate/
Nicht gleich alles auf einmal machen! Schrittweise vorgehen
Aufgabe 1: Schritt 1: Image auf AWS ECR deployen
- Erstellen Sie einen GitHub CI/CD Workflow, um das Docker-Image zu bauen, zu testen und anschliessend auf AWS ECR zu deployen.
- Nutzen Sie die Unterlagen vom Modul 347 (siehe oben)
Zugriff auf AWS ECR ist ein bisschen tricky...
ein paar Tipps (nicht ganzer workflow)
Secrets:
- AWS_ACCOUNT_ID — numeric account id used in tags
- ECR_TOKEN — the string you get from aws ecr get-login-password --region
(note: expires ~12h ; must be rotated) - AWS_REGION us-east-1
Steps:
- name: Log in to Amazon ECR using stored token (ECR_TOKEN)
run: |
echo "$ECR_TOKEN" | docker login --username AWS --password-stdin ${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com;
Ergebnis festhalten.
-
Secreenshot von erfolgreich durchgelaufenen Workflow auf github.
Es muss sichtbar sein: user, repo, datum -
Secreenshot von erfolgreich upload auf AWS ECR.
Aufgabe 2: Schritt 2: Image von AWS ECR auf AWS ECS publizieren
- Dieser Schritt geschieht auf AWS.
- Nutzen Sie die Unterlagen vom Modul 347 (siehe oben)
Ergebnis festhalten.
- Secreenshot von erfolgreich AWS ECR.
Es muss sichtbar sein: user, laufender Container - Screenshot von geöffneter Web-Site im Browser.
Aufgabe 3 Schritt 3: Halb-automatischer Update bei AWS ECR -> AWS ECS
- Wird eine Code-Änderunge gemacht, diese gepuscht... dann soll auch die Ausgabe der Applikation ändern.
- Also ein durchgängiges CI/CD von GitHub bis AWS Fargate.
Einschränkung/Erleichterung
Der Service darf manuel im AWS Web-GUI mit "Force new deployment" zum erstellen eines neue Containers erzwungen werden.
Hinweis: Es gibt auch die Möglichkeit, dies automatisch im GitHub Workflow zu machen.
Nutzen Sie die Unterlagen vom Modul 347 (siehe oben)
- Eine Codeänderung auf Github gepusht
- erzeugt ein neues Image
- pusht dieses auf AWS ECR
- und ein manuelles "Force new deployment" AWS ECS Service startet einen aufdatierten Container.
- ACHTUNG der neue Task hat eine andere IP-Adresse
Ergänzung / weiter gedacht
Das Problem mit der wechselnden IP-Adresse kann über einen vorgeschalteten Load-Balancer gelöst werden. Hier bewegen wir uns deutlich in das Arbeitsgebiet des Plattformentwicklers. Machbar ist es aber.
Ergebnis festhalten.
- Screenshot, die das durchgängige CI/CD nachvollziehbar dokumentieren
- Codeänderung, Github, AWS...
- Sichtbar, dass es Ihre Lösung ist: user, ip ...
- Screenshot von geöffneter Web-Site im Browser.
ECS mit refcard 01

ECS mit refcard 01 nach Codeänderung

erfolgreicher Workflow nach Änderung

Images auf AWS ECR
