Wie man HashiCorp Waypoint zur Zusammenarbeit mit GitLab CI/CD verwendet

Wie man HashiCorp Waypoint zur Zusammenarbeit mit GitLab CI/CD verwendet

HashiCorp hat ein neues Projekt vorgestellt Waypoint findet man HashiCorp Digital. Es nutzt eine auf HCL basierende Datei, um den Aufbau, die Bereitstellung und die Veröffentlichung von Anwendungen für verschiedene Cloud-Plattformen zu beschreiben, von Kubernetes bis AWS und Google Cloud Run. Man könnte sagen, dass Waypoint eine Kombination aus Terraform und Vagrant ist, um den Prozess des Aufbaus, der Bereitstellung und der Veröffentlichung Ihrer Anwendungen zu beschreiben.

Ganz im Einklang mit seinen Prinzipien hat HashiCorp Waypoint als Open Source veröffentlicht und bietet eine Vielzahl von Beispielen an. Der Orchestrierungsgrad liegt in Ihrer Hand; Waypoint wird als ausführbare Datei geliefert, die Sie direkt auf Ihrem Laptop oder aus einem CI/CD-Orchestrierungstool Ihrer Wahl starten können. Das Ziel für die Bereitstellung von Anwendungen wählen Sie ebenfalls selbst, da Waypoint Kubernetes, Docker, Google Cloud Run, AWS ECS und andere unterstützt.

Nachdem wir die beeindruckenden Dokumentation und umfangreichen Beispiele Anwendungen von HashiCorp betrachtet haben, wollen wir einen genaueren Blick auf die Orchestrierung von Waypoint mit GitLab CI/CD werfen. Dazu nehmen wir eine einfache Node.js-Anwendung, die auf AWS ECS läuft, aus dem Beispiel-Repository.

Nach dem Klonen des Repositories sehen wir uns die Struktur der Anwendung an, die eine einzige Seite darstellt:

Wie man HashiCorp Waypoint zur Zusammenarbeit mit GitLab CI/CD verwendet

Wie Sie vielleicht bemerkt haben, enthält dieses Projekt keine Dockerfile. Diese sind im Beispiel nicht enthalten, da wir sie grundsätzlich nicht benötigen, denn Waypoint kümmert sich darum für uns. Schauen wir uns die Datei näher an. 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 Build-Phase nutzt Waypoint Cloud Native Buildpacks (CNB), um die Programmiersprache des Projekts zu erkennen und ein Docker-Image ohne Verwendung einer Dockerfile zu erstellen. Prinzipiell handelt es sich um dieselbe Technologie, die GitLab im Bereich Auto DevOps auf der Stufe Auto Build verwendet. Es ist erfreulich zu sehen, dass CNB von CNCF immer mehr bei Fachleuten Anklang findet.

Sobald das Image erstellt ist, lädt Waypoint es automatisch in unser AWS ECR-Repository hoch, damit es bereit für den Einsatz 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 installiere Waypoint, das bereits mit meinem AWS-Konto authentifiziert ist, und es funktioniert einfach. Aber was ist, wenn ich über meinen Laptop hinausgehen möchte? Oder wenn ich dieses Deployment als Teil meiner CI/CD-Pipeline automatisieren will, wo meine aktuellen Integrationstests, Sicherheitstests und andere Tests ausgeführt werden? Hier kommt GitLab CI/CD ins Spiel!

N.B. Wenn Sie gerade planen, CI/CD einzuführen oder die besten Praktiken für den Aufbau von Pipelines anwenden möchten, schauen Sie sich den neuen Kurs von Sljörm an. „CI/CD am Beispiel von GitLab CI“. Er ist jetzt zum Vorbestellungspreis verfügbar.

Waypoint in GitLab CI/CD

Um das alles in GitLab CI/CD zu orchestrieren, schauen wir uns an, was wir in unserer Datei benötigen. .gitlab-ci.yml:

  • Zuerst brauchen wir ein Basis-Image, um darin zu arbeiten. Waypoint läuft auf jeder Linux-Distribution, benötigt nur Docker, sodass wir mit einem generischen Docker-Image starten 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.
  • Zuletzt führen wir die Waypoint-Kommandos aus.

Hier ist alles aufgelistet, was unser Tool benötigt, um die erforderlichen Skripte für das Deployment zu starten. Für das Deployment in AWS benötigen wir jedoch noch eine weitere Sache: Wir müssen uns in unserem 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. Momentan können wir einfach die Authentifizierung und Autorisierung eigenständig handhaben.

Für die Authentifizierung von GitLab CICD in AWS stehen mehrere Optionen zur Verfügung. Die erste Option ist die Verwendung des integrierten HashiCorp Vault. Dies eignet sich, wenn Ihr Team bereits Vault zur Verwaltung von Anmeldedaten verwendet. Eine weitere Möglichkeit, die passt, wenn Ihr Team die Autorisierung über AWS IAM verwaltet, ist sicherzustellen, dass die Bereitstellungsaufgaben über GitLab Runner, autorisiert sind, um das Deployment über IAM zu starten. Wenn Sie jedoch einfach nur Waypoint kennenlernen und dies schnell tun möchten, gibt es eine letzte Möglichkeit: Fügen Sie Ihre AWS API- und Secret-Keys in die Umgebungsvariablen von GitLab CI/CD AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY.

Zusammengefasst

Sobald wir die Authentifizierung geklärt haben, kann es losgehen! Unser endgültiger .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 docker:latest beginnen und einige benötigte Umgebungsvariablen für Waypoint setzen. 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 angemeldet ist, führen wir einfach aus waypoint init, build, deploy und release.

Die Ausgabe der Build-Aufgabe zeigt uns den Endpoint, an den wir die Anwendung bereitgestellt haben:

Wie man HashiCorp Waypoint zur Zusammenarbeit mit GitLab CI/CD verwendet

Waypoint ist eines der zahlreichen Lösungen von HashiCorp, die hervorragend mit GitLab funktionieren. Beispielsweise können wir neben der Bereitstellung der Anwendung auch die zugrundeliegende Infrastruktur mit Terraform in GitLaborchestrieren. Um die Sicherheit des SDLC zu standardisieren, können wir auch GitLab mit Vault integrieren. zur Verwaltung von Geheimnissen und Tokens in CI/CD-Pipelines, die eine umfassende Lösung für Entwickler und Administratoren bieten, die bei der Entwicklung, dem Testen sowie im produktiven Einsatz auf Geheimnisverwaltung angewiesen sind.

Die gemeinsamen Lösungen von HashiCorp und GitLab helfen Unternehmen, den besten Weg zur Entwicklung von Anwendungen zu finden, indem sie eine konsistente Verwaltung von Bereitstellungsströmen und Infrastruktur 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, Dokumentation und den Entwicklungsplan des Projekts zu betrachten. Wir haben unser Wissen in die GitLab CICD-Dokumentationeingearbeitet. Wenn Sie alles selbst ausprobieren möchten, können Sie ein komplett funktionierendes Beispiel in diesem Repository.

finden. Die Prinzipien von CI/CD zu verstehen, alle Feinheiten mit GitLab CI zu meistern und die besten Praktiken anzuwenden, können Sie durch den Videokurs „CI/CD am Beispiel von GitLab CI“. Machen Sie mit!

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster