
HashiCorp hat ein neues Projekt vorgestellt auf . Es verwendet eine HCL-basierte Datei zur Beschreibung des Baus, der Bereitstellung und der Veröffentlichung von Anwendungen für verschiedene Cloud-Plattformen, von Kubernetes bis hin zu AWS und Google Cloud Run. Man kann sich Waypoint vorstellen als eine Kombination von Terraform und Vagrant zur Beschreibung des Prozesses des Bauens, der Bereitstellung und der Veröffentlichung Ihrer Anwendungen.
Ohne sich selbst zu verändern, hat HashiCorp Waypoint als Open Source veröffentlicht, mit vielen Beispielen. Das Niveau des Orchestrators liegt bei Ihnen, Waypoint wird als ausführbare Datei bereitgestellt, die Sie direkt auf Ihrem Laptop oder aus dem von Ihnen gewählten CI/CD-Orchestrierungstool starten können. Das Ziel für die Bereitstellung von Anwendungen wählen Sie ebenfalls, da Waypoint Kubernetes, Docker, Google Cloud Run, AWS ECS und andere unterstützt.
Nachdem wir die genialen und großartigen von Anwendungen, die von HashiCorp bereitgestellt werden, angesehen haben, haben wir beschlossen, einen genaueren Blick auf die Orchestrierung von Waypoint mit GitLab CI/CD zu werfen. Um das zu tun, nehmen wir eine einfache Node.js-Anwendung, die auf AWS ECS ausgeführt wird, aus dem Beispiel-Repository.
Nach dem Klonen des Repositories schauen wir uns die Struktur der Anwendung an, die eine Seite anzeigt:

Wie Sie vielleicht bemerkt haben, gibt es in diesem Projekt keine Dockerfile. Diese wurden im Beispiel nicht hinzugefügt, da sie grundsätzlich nicht benötigt werden, da sich Waypoint darum kümmert. Lassen Sie uns die Datei waypoint.hcl, um zu verstehen, was sie tun wird:
project = "example-nodejs"
app "example-nodejs" {
labels = {
"service" = "example-nodejs",
"env" = "dev"
}
build {
use "pack" {}
registry {
use "aws-ecr" {
region = "us-east-1"
repository = "waypoint-gitlab"
tag = "latest"
}
}
}
deploy {
use "aws-ecs" {
region = "us-east-1"
memory = "512"
}
}
}In der Bauphase verwendet Waypoint Cloud Native Buildpacks (), um die Programmiersprache des Projekts zu erkennen und ein Docker-Image zu erstellen, ohne eine Dockerfile zu verwenden. Im Grunde ist es dieselbe Technologie, die GitLab im Teil beim Schritt Auto Build verwendet. Es ist schön zu sehen, dass CNB von der CNCF bei Nutzern in der Branche immer mehr verbreitet ist.
Sobald das Image erstellt ist, lädt Waypoint es automatisch in unser AWS ECR-Repository hoch, damit es bereit für die Bereitstellung ist. Nach Abschluss des Builds verwendet der Bereitstellungsschritt um unsere Anwendung in unser AWS-Konto bereitzustellen.
Von meinem Laptop aus ist alles einfach. Ich setze Waypoint ein, das bereits in meinem AWS-Konto authentifiziert ist, und es "funktioniert einfach". Aber was ist, wenn ich über meinen Laptop hinaus wollte? Oder wenn ich plötzlich diese Bereitstellung automatisieren möchte, die Teil meines gesamten CI/CD-Pipelines ist, wo meine aktuellen Integrationstests, Sicherheitstests und andere Tests laufen? Das ist der Teil der Geschichte, wo GitLab CI/CD ins Spiel kommt!
N.B. Wenn Sie eine CI/CD-Implementierung planen oder die besten Praktiken für den Aufbau von Pipelines anwenden möchten, schauen Sie sich den neuen Kurs von Slyerma an. . Er ist derzeit zu einem Vorbestellungspreis verfügbar.
Waypoint in GitLab CI/CD
Um all dies in GitLab CI/CD zu orchesTrieren, schauen wir uns an, was wir in unserer Datei benötigen. .gitlab-ci.yml:
- Zunächst benötigen wir ein Basis-Image, um darin zu laufen. Waypoint funktioniert auf jeder Linux-Distribution, es benötigt nur Docker, sodass wir mit einem generischen Docker-Image arbeiten können.
- Als nächstes müssen wir Waypoint in dieses Image installieren. In Zukunft können wir ein erstellen und diesen Prozess für uns containerisieren.
- Zum Schluss führen wir die Waypoint-Befehle aus.
Oben steht alles, was unser Pipeline benötigt, um die Skripte auszuführen, die für die Bereitstellung notwendig sind, aber um in AWS bereitzustellen, benötigen wir noch eine weitere Sache: Wir müssen uns in unser AWS-Konto authentifizieren. In der Beschreibung von Waypoint zur Authentifizierung und Autorisierung. HashiCorp hat diese Woche auch ein beeindruckendes Projekt veröffentlicht, . Aber im Moment können wir einfach die Authentifizierung und Autorisierung selbst in die Hand nehmen.
Für die Authentifizierung von GitLab CICD in AWS gibt es mehrere Optionen. Die erste Option ist die Verwendung der integrierten Es ist geeignet, wenn Ihr Team bereits Vault zur Verwaltung von Anmeldeinformationen verwendet. Eine weitere Möglichkeit, die in Frage kommt, wenn Ihr Team die Autorisierung über AWS IAM verwaltet - stellen Sie sicher, dass die Bereitstellungs-Jobs über ausgeführt werden, die für die Bereitstellung über IAM autorisiert sind. Wenn Sie jedoch einfach nur Waypoint ausprobieren möchten und dies schnell tun möchten, gibt es eine letzte Option - fügen Sie Ihre AWS-API- und Secret-Keys in die AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY.
Jetzt bringen wir alles zusammen.
Sobald wir die Authentifizierung geklärt haben, können wir loslegen! Unser endgültiges .gitlab-ci.yml sieht so aus:
waypoint:
image: docker:latest
stage: build
services:
- docker:dind
# Definieren Sie Umgebungsvariablen, z. B. `WAYPOINT_VERSION: '0.1.1'`
variables:
WAYPOINT_VERSION: ''
WAYPOINT_SERVER_ADDR: ''
WAYPOINT_SERVER_TOKEN: ''
WAYPOINT_SERVER_TLS: '1'
WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
script:
- wget -q -O /tmp/waypoint.zip https://releases.hashicorp.com/waypoint/${WAYPOINT_VERSION}/waypoint_${WAYPOINT_VERSION}_linux_amd64.zip
- unzip -d /usr/local/bin /tmp/waypoint.zip
- rm -rf /tmp/waypoint*
- waypoint init
- waypoint build
- waypoint deploy
- waypoint releaseSie sehen, dass wir mit dem Image beginnen docker:latest und einige Umgebungsvariablen festlegen, die für Waypoint erforderlich sind. Im Abschnitt script laden wir die neueste Version der Waypoint-Binärdatei herunter und installieren sie in /usr/local/bin. Da unser Runner bereits bei AWS authentifiziert ist, führen wir einfach aus waypoint init, build, deploy und release.
Die Ausgabe der Build-Aufgabe zeigt uns den Endpunkt, an den wir die Anwendung bereitgestellt haben:

Waypoint ist eines der , die hervorragend mit GitLab zusammenarbeiten. Zum Beispiel können wir neben der Bereitstellung der Anwendung auch die zugrunde liegende Infrastruktur mit Hilfe von . Zur Standardisierung der Sicherheit im SDLC können wir auch integrieren, um Geheimnisse und Tokens in CI/CD-Pipelines zu verwalten, und somit eine ganzheitliche Lösung für Entwickler und Administratoren zu bieten, die auf geheime Verwaltung während der Entwicklung, des Testens und auch im produktiven Einsatz angewiesen sind.
Gemeinsame Lösungen, die von HashiCorp und GitLab entwickelt wurden, helfen Unternehmen, den besten Weg zur Entwicklung von Anwendungen zu finden und ein konsistentes Management der Bereitstellungsströme und der Infrastruktur zu gewährleisten. Waypoint hat einen weiteren Schritt in die richtige Richtung gemacht, und wir freuen uns auf die weitere Entwicklung des Projekts. Sie können mehr über Waypoint erfahren , es lohnt sich auch, einen Blick auf den und des Projekts zu werfen. Wir haben die Erkenntnisse, die wir gewonnen haben, in die eingefügt. Wenn Sie alles selbst ausprobieren möchten, können Sie sich ein voll funktionsfähiges Beispiel aus .
Die Prinzipien von CI/CD zu verstehen, alle Feinheiten von GitLab CI zu beherrschen und die besten Praktiken anzuwenden, können Sie, indem Sie den Videokurs absolvieren. Machen Sie mit!
Quelle: habr.com
