Wie man HashiCorp Waypoint für die Zusammenarbeit mit GitLab CI/CD verwendet

Wie man HashiCorp Waypoint für die Zusammenarbeit mit GitLab CI/CD verwendet

HashiCorp hat ein neues Projekt vorgestellt Waypoint auf HashiCorp Digital. 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 Dokumentation und großartigen Beispiele 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 man HashiCorp Waypoint für die Zusammenarbeit mit GitLab CI/CD verwendet

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 (CNB), 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 Auto DevOps 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 das AWS ECS-Plugin 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. "CI/CD am Beispiel von Gitlab CI". 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 Meta Build-Image 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 gibt es Pläne zur Authentifizierung und Autorisierung. HashiCorp hat diese Woche auch ein beeindruckendes Projekt veröffentlicht, Boundary. 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 HashiCorp Vault.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 GitLab Runnerausgefü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 Umgebungsvariablen von GitLab CI/CD ein. 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 release

Sie 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:

Wie man HashiCorp Waypoint für die Zusammenarbeit mit GitLab CI/CD verwendet

Waypoint ist eines der zahlreichen Lösungen von HashiCorp, die hervorragend mit GitLab zusammenarbeiten. Zum Beispiel können wir neben der Bereitstellung der Anwendung auch die zugrunde liegende Infrastruktur mit Hilfe von Terraform in GitLab. Zur Standardisierung der Sicherheit im SDLC können wir auch GitLab mit Vault 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 hier, es lohnt sich auch, einen Blick auf den Dokumentation und Entwicklungsplan des Projekts zu werfen. Wir haben die Erkenntnisse, die wir gewonnen haben, in die Dokumentation von GitLab CICDeingefügt. Wenn Sie alles selbst ausprobieren möchten, können Sie sich ein voll funktionsfähiges Beispiel aus diesem Repository holen.

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 "CI/CD am Beispiel von Gitlab CI"absolvieren. Machen Sie mit!

Quelle: habr.com

60GB SSD 8Gb DDR4