[DOCKER] Super einfache Bereitstellung von Anwendungen mit Waypoint

Überblick

Am 15. Oktober 2020 kündigte Hashi Corp ein neues Produkt namens Waypoint an.

Einfach ausgedrückt ist es ein großartiges Tool, mit dem Sie Cloud-Umgebungen wie Amazon EC2, ECS, Google Cloud Run und Azure Container Instances mit einem einzigen Liner erstellen und bereitstellen können, indem Sie nur eine Bereitstellungskonfigurationsdatei schreiben.

Funktion

Cloud-native Anwendungen werden häufig in Containerinfrastrukturen wie ECS und Kubernetes ausgeführt, aber Bereitstellungskonfigurationen und -befehle werden je nach Dienstkonfiguration häufig kompliziert. Mit Waypoint können Sie Ihre Konfigurationsdateien in einem Wort verwalten und Ihrer Anwendung ermöglichen, den Release-Zyklus mit einem einfacheren Workflow auszuführen. groß.

Überprüfung

Ich habe es in einer Mac-Umgebung versucht. Das Handbuch beschreibt auch das manuelle Einrichten oder in einer Linux-Umgebung.

Lassen Sie uns die auf Waypoint veröffentlichte Beispielanwendung mit Docker ausführen. Installieren Sie zuerst Waypoint mit Brew.

$ brew tap hashicorp/tap
$ brew install hashicorp/tap/waypoint

Schauen Sie sich die Hilfe an.

% waypoint --help
Welcome to Waypoint
Docs: https://waypointproject.io
Version: v0.1.2

Usage: waypoint [-version] [-help] [-autocomplete-(un)install] <command> [args]

Common commands
  build        Build a new versioned artifact from source
  deploy       Deploy a pushed artifact
  release      Release a deployment
  up           Perform the build, deploy, and release steps for the app

Other commands
  artifact        Artifact and build management
  config          Application configuration management
  context         Server access configurations
  deployment      Deployment creation and management
  destroy         Delete all the resources created for an app
  docs            Show documentation for components
  exec            Execute a command in the context of a running application instance
  hostname        Application URLs
  init            Initialize and validate a project
  install         Install the Waypoint server to Kubernetes, Nomad, or Docker
  logs            Show log output from the current application deployment
  runner          Runner management
  server          Server management
  token           Authenticate and invite collaborators
  ui              Open the web UI
  version         Prints the version of this Waypoint CLI

Sie können sehen, dass der zuvor eingeführte Befehl "Wegpunkt nach oben" ein Befehl ist, der gemeinsam "Wegpunkterstellung", "Wegpunktbereitstellung" und "Wegpunktrelase" ausführt.

Laden Sie dann die Beispielanwendung herunter. Zusätzlich zu Docker enthält das Beispiel Code für die Bereitstellung in Amazon ECS und Google Cloud Run.

$ git clone https://github.com/hashicorp/waypoint-examples.git
$ cd waypoint-examples
$ ls
README.md                azure-container-instance google-cloud-run         waypoint.hcl
aws-ecs                  data.db                  kubernetes
aws-eks                  docker                   nomad

#Diesmal Node on Docker.Ich werde js bewegen
$ cd docker/nodejs

Installieren Sie den Waypoint-Server. Der Waypoint-Server ist eine Konsole, die Anwendungsworkflows verwaltet.

$ docker pull hashicorp/waypoint:latest
$ waypoint install -platform=docker -accept-tos

Sie benötigen eine Bereitstellungskonfigurationsdatei, um Ihre Anwendung bereitzustellen. Dies kann mit dem Befehl waypoint init erstellt werden, aber die Beispielanwendung hat die Datei erstellt.

waypoint.hcl


project = "example-nodejs"

app "example-nodejs" {
  labels = {
    "service" = "example-nodejs",
    "env" = "dev"
  }

  build {
    use "pack" {}
  }

  deploy {
    use "docker" {}
  }
}

Initialisieren Sie die Anwendung.

$ waypoint init
✓ Configuration file appears valid
✓ Connection to Waypoint server was successful
✓ Project "example-nodejs" and all apps are registered with the server.
✓ Plugins loaded and configured successfully
✓ Authentication requirements appear satisfied.

Project initialized!

You may now call 'waypoint up' to deploy your project or
commands such as 'waypoint build' to perform steps individually.

Und bereitstellen. Wie Sie anhand der Verzeichnisstruktur der Anwendung sehen können, werden Sie feststellen, dass die Docker-Datei fehlt. Die Methode zum Erstellen besteht darin, dass Waypoint den Anwendungstyp automatisch anhand der Dateistruktur erkennt und die Docker-Datei selbst automatisch mit dem optimalen Build Pack generiert. Clever.

$ waypoint up

Das Erstellen dauert einige Zeit. Starten Sie daher in dieser Zeit die Benutzeroberfläche von Waypoint.

$ waypoint ui

Die Waypoint-Konsole wird in Ihrem Browser gestartet.

Screen Shot 2020-10-18 at 23.15.30.png

Sie werden zuerst nach einem Authentifizierungstoken gefragt. Stellen Sie das Token also über die CLI aus. Sie können authentifiziert werden, indem Sie den generierten Wert in das Formular einfügen.

$ waypoint token new

Der Bildschirm example-nodejs wird geöffnet. In diesem Bildschirm können Sie den Build-Status, das Bereitstellungsprotokoll und sogar Befehle für den Container ausführen.

Screen Shot 2020-10-18 at 23.17.38.png

Kehren wir zur CLI zurück und überprüfen den Build-Status.

$ waypoint up

» Building...
Creating new buildpack-based image using builder: heroku/buildpacks:18
✓ Creating pack client
✓ Building image
 │ [exporter] Adding 1/1 app layer(s)
 │ [exporter] Reusing layer 'launcher'
 │ [exporter] Adding layer 'config'
 │ [exporter] Adding label 'io.buildpacks.lifecycle.metadata'
 │ [exporter] Adding label 'io.buildpacks.build.metadata'
 │ [exporter] Adding label 'io.buildpacks.project.metadata'
 │ [exporter] *** Images (e2a2e3a85138):
 │ [exporter]       index.docker.io/library/example-nodejs:latest
 │ [exporter] Reusing cache layer 'heroku/nodejs-engine:nodejs'
 │ [exporter] Reusing cache layer 'heroku/nodejs-engine:toolbox'
✓ Injecting entrypoint binary to image

Generated new Docker image: example-nodejs:latest

» Deploying...
✓ Setting up waypoint network
✓ Starting container

» Releasing...

The deploy was successful! A Waypoint deployment URL is shown below. This
can be used internally to check your deployment and is not meant for external
traffic. You can manage this hostname using "waypoint hostname."

           URL: https://***.waypoint.run
Deployment URL: https://***--v1.waypoint.run

Öffnen Sie die in "Bereitstellungs-URL" geschriebene URL, um die Anwendung zu starten. ([^ 3])

Screen Shot 2020-10-18 at 23.21.17.png

Da die Bereitstellung erfolgreich war, schreiben wir den Inhalt der angezeigten Vorlage neu.

views/pages/index.js


<h1>This Node.js app was deployed with Waypoint.</h1>
<h2>Hello world!</h2>

Ich habe versucht, "

" unter "

" hinzuzufügen. Führen Sie die Bereitstellung erneut aus.

           URL: https://***.waypoint.run
Deployment URL: https://***--v2.waypoint.run

Die in der Bereitstellungs-URL enthaltene Subdomain wurde in "v2" geändert.

Screen Shot 2020-10-18 at 23.38.29.png

Die Hallo Welt wird korrekt angezeigt! ([^ 4])

Nach einer leichten Berührung hatte ich den Eindruck, dass es sich um Software handelte, die die Bereitstellung abstrahierte, wie z. B. AWS Elastic Beanstalk. Durch die Einführung von Waypoint kann der Bereitstellungsfluss von der Anwendungskonfiguration getrennt werden, und es scheint, dass der Freigabestatus verschiedener Dienste zentral verwaltet werden kann.

[^ 1]: Es scheint zur Erstellungszeit verwendet zu werden, wenn "Dockerfile" im Anwendungsverzeichnis erkannt wird [^ 2]: Sie müssen einen Waypoint-Server für die Teamentwicklung erstellen [^ 3]: waypoint.run ist ein öffentlicher Host von HashiCorp. Da es sich um eine Verifizierungsumgebung handelt, muss ein Host für den Produktionsbetrieb vorbereitet werden. Weitere Informationen finden Sie unter Wegpunkt-URL-Dienst. [^ 4]: Sie können die vorherige Anwendung auch öffnen, indem Sie auf die URL von v1 zugreifen

Recommended Posts

Super einfache Bereitstellung von Anwendungen mit Waypoint
Beispiel für die Verwendung von vue.config.js
Zusammenfassung der Verwendung von FragmentArgs
Groovy super einfache Einführung
Zusammenfassung der Verwendung von DBFlow
[Ruby on Rails] Einfache Scroll-Animation von Javascript (mit ScrollReveal.js)