So verwenden Sie HashiCorp Waypoint für die Zusammenarbeit mit GitLab CI/CD

So verwenden Sie HashiCorp Waypoint für die Zusammenarbeit mit GitLab CI/CD

HashiCorp zeigte ein neues Projekt Waypoint auf HashiCorp Digital. Es verwendet eine HCL-basierte Datei, um das Erstellen, Versenden und Freigeben von Anwendungen für verschiedene Cloud-Plattformen von Kubernetes bis AWS und Google Cloud Run zu beschreiben. Stellen Sie sich Waypoint als eine Kombination aus Terraform und Vagrant vor, um den Prozess des Erstellens, Versendens und Freigebens Ihrer Anwendungen zu beschreiben.

HashiCorp hat Waypoint wie gewohnt als Open Source veröffentlicht und enthält viele Beispiele. Die Ebene des Orchestrators liegt bei Ihnen. Waypoint wird als ausführbare Datei geliefert, die Sie direkt auf Ihrem Laptop oder über das CI/CD-Orchestrierungstool Ihrer Wahl ausführen können. Das Ziel der Anwendungsbereitstellung liegt ebenfalls bei Ihnen, da Waypoint Kubernetes, Docker, Google Cloud Run, AWS ECS und mehr unterstützt.

Nachdem ich das Tolle gelesen habe Dokumentation und das schickste Beispiele Aufgrund der von HashiCorp bereitgestellten Anwendungen haben wir uns entschieden, einen genaueren Blick auf die Waypoint-Orchestrierung mit GitLab CI/CD zu werfen. Dazu nehmen wir eine einfache Node.js-Anwendung, die auf AWS ECS läuft, aus dem Beispiel-Repository.

Schauen wir uns nach dem Klonen des Repositorys die Struktur der Anwendung an, die eine Seite anzeigt:

So verwenden Sie HashiCorp Waypoint für die Zusammenarbeit mit GitLab CI/CD

Wie Sie vielleicht bemerkt haben, gibt es in diesem Projekt keine Docker-Datei. Sie werden im Beispiel nicht hinzugefügt, da wir sie nicht wirklich benötigen, da Waypoint sie für uns erledigt. Schauen wir uns die Datei genauer an waypoint.hclum zu verstehen, was es 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"
    }
  }
}

Während der Build-Phase verwendet Waypoint Cloud Native Buildpacks (NBC), um die Programmiersprache des Projekts zu bestimmen und ein Docker-Image zu erstellen, ohne eine Docker-Datei zu verwenden. Im Prinzip handelt es sich dabei um die gleiche Technologie, die teilweise auch von GitLab verwendet wird Auto DevOps im Schritt „Automatisch erstellen“. Es ist gut zu sehen, dass das CNB von CNCF bei Branchenanwendern immer mehr Akzeptanz findet.

Sobald das Image erstellt ist, lädt Waypoint es automatisch in unsere AWS ECR-Registrierung hoch, damit es versandbereit ist. Am Ende der Montage folgt der Lieferschritt AWS ECS-Add-on um unsere Anwendung auf unserem AWS-Konto bereitzustellen.

Von meinem Laptop aus ist alles einfach. Ich habe Waypoint eingegeben, der bereits in meinem AWS-Konto authentifiziert ist, und es funktioniert „einfach“. Aber was passiert, wenn ich über meinen Laptop hinausgehen möchte? Oder möchte ich diese Bereitstellung vielleicht als Teil meiner gesamten CI/CD-Pipeline automatisieren, in der meine aktuellen Integrationstests, Sicherheitstests und andere ausgeführt werden? Dies ist der Teil der Geschichte, in dem GitLab CI/CD ins Spiel kommt!

NB Wenn Sie gerade die Implementierung von CI/CD planen oder mit der Anwendung der Best Practices für den Bau von Pipelines beginnen möchten, achten Sie auf den neuen Slurm-Kurs. „CI/CD am Beispiel von Gitlab CI“. Es ist ab sofort zum Vorbestellpreis erhältlich.

Wegpunkt in GitLab CI/CD

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

  • Zunächst benötigen Sie ein Basis-Image, um darin ausgeführt zu werden. Waypoint funktioniert auf jeder Linux-Distribution, es benötigt nur Docker, sodass wir mit einem generischen Docker-Image laufen können.
  • Als nächstes müssen Sie Waypoint in diesem Image installieren. In Zukunft werden wir möglicherweise sammeln Meta-Build-Image und Containerisieren Sie diesen Prozess für sich.
  • Abschließend führen wir die Wegpunktbefehle aus

Oben finden Sie alles, was unsere Pipeline benötigt, um die für die Bereitstellung erforderlichen Skripte auszuführen. Für die Bereitstellung in AWS benötigen wir jedoch noch etwas: Wir müssen uns bei unserem AWS-Konto anmelden. In der Wegpunktbeschreibung Pläne haben über Authentifizierung und Autorisierung. Auch HashiCorp hat diese Woche ein beeindruckendes Projekt veröffentlicht Boundary. Aber im Moment können wir die Authentifizierung und Autorisierung einfach selbst übernehmen und durchführen.

Es gibt mehrere Optionen für die GitLab CICD-Authentifizierung auf AWS. Die erste Möglichkeit besteht darin, das integrierte zu verwenden HashiCorp-Tresor. Es ist in Ordnung, wenn Ihr Team Vault bereits für die Verwaltung von Anmeldeinformationen verwendet. Eine weitere Methode, die funktioniert, wenn Ihr Team die Autorisierung mithilfe von AWS IAM verwaltet, besteht darin, zu überprüfen, ob Lieferaufgaben über ausgelöst werden GitLab-RunnerA, der berechtigt ist, die Bereitstellung über IAM zu starten. Wenn Sie sich jedoch nur schnell mit Waypoint vertraut machen möchten, besteht die letzte Option darin, Ihre AWS-API und Secret-Schlüssel hinzuzufügen GitLab CI/CD-Umgebungsvariablen AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Alles zusammenstellen

Sobald wir die Authentifizierung herausgefunden haben, können wir beginnen! Unser Finale .gitlab-ci.yml Es sieht wie folgt aus:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Define environment variables, e.g. `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, wir beginnen mit einem Bild docker:latest und legen Sie einige für Waypoint erforderliche Umgebungsvariablen fest. Im Kapitel script Wir laden die neueste ausführbare Waypoint-Datei herunter und fügen sie ein /usr/local/bin. Da unser Läufer bereits in AWS autorisiert ist, führen wir ihn einfach aus waypoint init, build, deploy и release.

Die Ausgabe der Build-Aufgabe zeigt uns den Endpunkt, an dem wir die Anwendung gerollt haben:

So verwenden Sie HashiCorp Waypoint für die Zusammenarbeit mit GitLab CI/CD

Wegpunkt einer von zahlreiche HashiCorp-Lösungen, die hervorragend mit GitLab funktionieren. Beispielsweise können wir neben der Bereitstellung der Anwendung auch die zugrunde liegende Infrastruktur orchestrieren Terraform auf GitLab. Zur Standardisierung der SDLC-Sicherheit können wir auch implementieren GitLab mit Vault für die Verwaltung von Geheimnissen und Token in CI/CD-Pipelines und bietet eine Komplettlösung für Entwickler und Administratoren, die bei der Entwicklung, beim Testen und in der Produktion auf die Verwaltung von Geheimnissen angewiesen sind.

Gemeinsame Lösungen von HashiCorp und GitLab helfen Unternehmen dabei, den besten Weg zur Entwicklung von Anwendungen zu finden, indem sie ein konsistentes Lieferketten- und Infrastrukturmanagement sicherstellen. Waypoint hat einen weiteren Schritt in die richtige Richtung gemacht und wir freuen uns auf die weitere Entwicklung des Projekts. Erfahren Sie mehr über Waypoint hierauch eine Erkundung wert Dokumentation и Entwicklungsplan Projekt. Wir haben das gewonnene Wissen ergänzt GitLab CICD-Dokumentation. Wenn Sie es selbst ausprobieren möchten, können Sie sich das vollständige Arbeitsbeispiel unter anschauen dieses Repository.

Durch den Abschluss des Videokurses können Sie die Prinzipien von CI/CD verstehen, alle Feinheiten der Arbeit mit Gitlab CI beherrschen und mit der Anwendung von Best Practices beginnen „CI/CD am Beispiel von Gitlab CI“. Jetzt beitreten!

Source: habr.com

Kommentar hinzufügen