Veröffentlicht am: 18. August 2026
8 Minuten Lesezeit
AWS-Infrastruktur und App-Auslieferung durchgängig automatisieren: OpenTofu stellt EKS bereit, GitLab CI/CD baut, Argo CD deployt per GitOps.

Cloud-Umgebungen zu konfigurieren ist aufwendig: Netzwerke, Subscriptions, Services und alle Komponenten der darunterliegenden Infrastruktur wollen berücksichtigt werden. Ein manuelles Setup ist fehleranfällig, uneinheitlich und schwer zu reproduzieren.
Dieses Tutorial zeigt, wie sich eine vollständig automatisierte Cloud-Umgebung aufsetzen lässt, mit GitLab als Schaltzentrale. Die gesamte Cloud-Infrastruktur ist als Code definiert, liegt in GitLab und wird mit OpenTofu über GitLab-CI/CD-Pipelines auf AWS ausgerollt. Darüber hinaus übernehmen dieselben Pipelines den Build und das Deployment einer echten Webanwendung, nach GitOps-Praktiken mit Argo CD.
Zunächst lohnt der Blick darauf, warum Infrastructure as Code (IaC) und GitOps wichtig sind und wie GitLab diese Praktiken auf einer Plattform zusammenführt.
IaC sorgt dafür, dass Umgebungen drei Eigenschaften mitbringen:
GitOps führt diese Prinzipien in den Anwendungslebenszyklus weiter. Statt Änderungen manuell auf Kubernetes-Cluster (oder andere Infrastruktur) anzuwenden, liegt der gewünschte Zustand der Anwendungen in Git. Ein GitOps-Operator wie Argo CD sorgt fortlaufend dafür, dass der Cluster dem Stand im Repository entspricht. Das bringt:
GitLab vereint alle Fähigkeiten, die dieser Ansatz verlangt:
Mit GitLab läuft alles über eine Plattform, von der Bereitstellung der Cloud-Infrastruktur bis zur Auslieferung der Anwendung.
Für dieses Tutorial sind nötig:
Das Tutorial enthält Anleitungen für folgende Schritte:
Wie sich dieses Beispiel in der eigenen GitLab-Umgebung nachbauen lässt, steht weiter unten. Der Quellcode des Beispiels liegt in der SATEC Public Demo Group.
Der erste Schritt ist die Bereitstellung der Cloud-Infrastruktur mit OpenTofu, dem Open-Source-Fork von Terraform. Netzwerkkomponenten lassen sich damit deklarativ definieren und ein Amazon-EKS-Cluster anlegen.
Damit dieser Vorgang reproduzierbar und sicher bleibt, setzen wir auf CI/CD-Variablen in GitLab statt auf fest verdrahtete Werte. Über diese Variablen lässt sich die AWS-Umgebung pipelineübergreifend dynamisch konfigurieren.
Folgende Umgebungsvariablen sind erforderlich und werden unter Settings > CI/CD > Variables in der übergeordneten Gruppe angelegt, damit alle Projekte sie erben:
Alle Variablen sind in GitLab als protected definiert, sensible wie der AWS Secret Access Key zusätzlich als masked, sodass sie nur in sicheren CI/CD-Kontexten sichtbar werden. Die Sicherheit lässt sich weiter erhöhen, indem man diesem Tutorial zu CI/CD-Variablen folgt. Die Trennung von Code und Konfiguration macht die Pipeline flexibel und unabhängig von der jeweiligen Umgebung.
Ist das konfiguriert, läuft die OpenTofu-Pipeline automatisch und erledigt Folgendes:

Das Diagramm oben zeigt, wie die Bereitstellung der Infrastruktur abläuft.
Am Ende dieser Phase stehen AWS-Umgebung und Kubernetes-Cluster vollständig bereit und sind betriebsfähig.

Den Abschluss dieses Vorgangs bildet ein Post-Deploy-Schritt: Er löst eine zweite GitLab-Pipeline in einem eigenen Repository aus, die Argo CD und CertManager über den Helm Provider automatisch in den neuen EKS-Cluster ausrollt.
Stehen AWS-Infrastruktur und EKS-Cluster, folgt als nächster Schritt die Konfiguration der Kubernetes-Werkzeuge, die für den Betrieb der Umgebung nötig sind: Argo CD, CertManager und der Ingress NGINX Controller.
Dieser Vorgang läuft vollständig automatisiert über eine zweite GitLab-Pipeline in einem separaten Repository.

Die zweite Pipeline wird automatisch aus der Infrastruktur-Pipeline heraus gestartet, über einen Trigger-Job, sobald die OpenTofu-Bereitstellung erfolgreich abgeschlossen ist.
In der Praxis heißt das: Diese Kernkomponenten werden als Teil desselben durchgängigen Workflows ausgerollt, ohne manuelle Schritte. Das Deployment selbst übernimmt OpenTofu über den Helm Provider, mit dem sich Helm-Charts deklarativ als Code über GitLab verwalten lassen.
Vereinfacht sieht der Ablauf so aus:
Sind alle Kubernetes-Kernkomponenten installiert (Argo CD, CertManager und Ingress NGINX Controller), beginnt die letzte Phase der Automatisierung. Dieser Schritt läuft automatisch an, sobald die Installation der Helm-Charts abgeschlossen ist.
Eine dritte GitLab-Pipeline startet und rollt eine Beispiel-Webanwendung über Argo CD in den neu erstellten EKS-Cluster aus.
Das Diagramm unten zeigt den Gesamtablauf:

In dieser Phase verbindet sich GitLab mit der von OpenTofu erzeugten Kubeconfig zum Cluster und wendet die Argo-CD-Anwendungsmanifeste an, die den gewünschten Zustand der Webanwendung definieren.
Die Pipeline:
Das alles läuft automatisch über GitLab CI/CD, ohne manuelles Eingreifen.
Sind die Manifeste angewendet, erkennt der Argo-CD-Controller sie und synchronisiert den Anwendungszustand mit dem Repository, wodurch die Beispiel-Webseite in den EKS-Cluster ausgerollt wird.
Das Ergebnis ist eine voll betriebsfähige Kubernetes-Umgebung, in der:
So entstehen durchgängige Automatisierung, Nachvollziehbarkeit und Reproduzierbarkeit, alles über GitLab gesteuert.
Bevor Argo CD die Anwendung ausrollt, muss sie gebaut, containerisiert und in der GitLab Container Registry veröffentlicht werden.
Dafür sorgt eine eigene CI/CD-Pipeline, die einer GitOps-Repository-Struktur folgt: Quellcode und Kubernetes-Manifeste liegen in getrennten Repositorys.

Die GitLab-Gruppe ist dabei in zwei Bereiche gegliedert:
Diese Trennung ermöglicht einen sauberen GitOps-Ablauf, denn Anwendungscode und Deployment-Konfigurationen sind voneinander unabhängig und bleiben über die Automatisierung dennoch synchron.
Die CI/CD-Pipeline im Anwendungs-Repository automatisiert diese Aufgaben:
Das geschieht automatisch, indem der neue Image-Tag committet oder ein Merge Request erstellt wird.

Sobald Commit oder Merge Request vorliegen, erkennt Argo CD die Änderung im Deployment-Repository und synchronisiert die aktualisierten Manifeste mit dem Kubernetes-Cluster. Damit ist die neue Anwendungsversion ohne manuelles Eingreifen ausgerollt.
Dieses Tutorial hat gezeigt, wie sich eine vollständig automatisierte Cloud-Umgebung mit GitLab als Dreh- und Angelpunkt aufbauen lässt und damit die eingangs gesetzten Ziele erreicht: eine Infrastruktur, die reproduzierbar, versioniert und automatisiert ist. Aus der Kombination von OpenTofu für die Bereitstellung, GitLab CI/CD für die Pipeline-Orchestrierung und Argo CD für die GitOps-basierte Auslieferung ergibt sich ein Lebenszyklus, der sich vollständig über eine Plattform verwalten lässt, von den Cloud-Ressourcen bis zur laufenden Anwendung.
Als GitLab-Partner mit ausgewiesener Erfahrung in Cloud-Infrastruktur und DevSecOps-Praktiken unterstützt Clober (Gruppe SATEC) Organisationen dabei, vergleichbare automatisierte Umgebungen passend zum eigenen Bedarf umzusetzen.
Hinweis: Dieser Beitrag beruht auf einer Live-Demo, die das DevSecOps-Team von Clober (Gruppe SATEC) 2025 auf dem AWS Summit Madrid gezeigt hat.
Kostenlose 30-tägige
GitLab-Testversion starten
Keine Kreditkarte erforderlich.
Hat dir dieser Blogbeitrag gefallen? Hast du Fragen oder Feedback? Erstelle ein neues Diskussionsthema im GitLab-Community-Forum und lass andere an deinen Eindrücken teilhaben.
Feedback teilenBeginne noch heute, schneller zu entwickeln
Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.