Waypoint を使ってみた(Docker編)

HashiCorp

概要

Waypoint という HashiCorp 製のツールを見つけたので使ってみました。

アプリケーションのビルド~デプロイ~リリースの実行を容易に行うためのツールらしいです。

Waypoint is an open source solution that provides a modern workflow for build, deploy, and release across platforms.
Waypoint is an open source solution that provides a modern workflow for build, deploy, and release across platforms.

Waypointのインストール

asdfを使用してインストールします。

asdf plugin add waypoint
asdf install waypoint latest
asdf global waypoint latest

※ asdfについては下記の記事を参照ください。

インストールされた waypoint のバージョンを確認します。

❯ waypoint version
CLI: v0.6.3 (bd303e12)

サーバーのインストール

Waypoint サーバーを docker にインストールします。

❯ waypoint install -platform=docker -accept-tos

waypoint-runner と waypoint-server が起動しています。

❯ docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                              NAMES
8125a45c0404   hashicorp/waypoint:latest   "/usr/bin/waypoint r…"   11 seconds ago   Up 10 seconds                                      waypoint-runner
dc8c2eb498c8   hashicorp/waypoint:latest   "/usr/bin/waypoint s…"   18 seconds ago   Up 16 seconds   0.0.0.0:9701-9702->9701-9702/tcp   waypoint-server

Waypoint の初期化

サンプルのアプリケーションを Github から取得します。

❯ git clone https://github.com/hashicorp/waypoint-examples.git

docker/nodejs ディレクトリに移動し、プロジェクトの初期化を行います。

❯ cd waypoint-examples/docker/nodejs
❯ waypoint init

デプロイ

waypoint up を実行すると、アプリケーションにビルド、デプロイが実行されます。

❯ waypoint up

デプロイが完了するとアプリケーションにアクセスするためのURLが表示されるので、アクセスすると、ローカルの Docker で実行されているアプリケーションにアクセスすることができます。

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://admittedly-wealthy-unicorn.waypoint.run
Deployment URL: https://admittedly-wealthy-unicorn--v1.waypoint.run

docker ps を実行すると、新しいコンテナが起動していることがわかります。

❯ docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                              NAMES
dcefa4405f54   example-nodejs:latest       "/waypoint-entrypoin…"   30 minutes ago   Up 30 minutes   0.0.0.0:50942->3000/tcp            example-nodejs-01FQ6ZDD8VWD6BN2JJJDHV2HJG
8125a45c0404   hashicorp/waypoint:latest   "/usr/bin/waypoint r…"   40 minutes ago   Up 40 minutes                                      waypoint-runner
dc8c2eb498c8   hashicorp/waypoint:latest   "/usr/bin/waypoint s…"   40 minutes ago   Up 40 minutes   0.0.0.0:9701-9702->9701-9702/tcp   waypoint-server

更新

views/pages/index.ejs のファイルの内容を変更して waypoint up を実行すると新しいバージョンのアプリケーションがデプロイされてます。

❯ waypoint up

デプロイが完了すると、新しい URL が発行され、新しいバージョンのアプリケーションにアクセスができます。

デバッグ

waypoint logs コマンドで Waypointのログを表示することができます。

❯ waypoint logs
2021-12-18T14:33:58.440Z 28WPGF: [INFO]  entrypoint: entrypoint starting: deployment_id=01FQ6ZDCC5PQ3TVW0PCW948HE9 instance_id=01FQ6ZDEB1XMKRC3MTJ428WPGF args=["/cnb/process/web"]
2021-12-18T14:33:58.440Z 28WPGF: [INFO]  entrypoint: entrypoint version: full_string=v0.6.3 version=v0.6.3 prerelease="" metadata="" revision=""
2021-12-18T14:33:58.440Z 28WPGF: [INFO]  entrypoint: server version info: version=v0.6.3 api_min=1 api_current=1 entrypoint_min=1 entrypoint_current=1
2021-12-18T14:33:59.088Z 28WPGF: [INFO]  entrypoint.config.watcher: env vars changed, sending new child command
2021-12-18T14:33:59.088Z 28WPGF: [INFO]  entrypoint.child: starting child process: args=["/cnb/process/web"] cmd=/cnb/process/web
2021-12-18T14:33:59.497Z 28WPGF: Listening on 3000

waypoing exec コマンドで、アプリケーションの実行中のインスタンスに接続してコンテナの実行状況を確認することができます。

❯ waypoint exec bash
Connected to deployment v2
[email protected]:/workspace$

WebUIの表示

waypoint ui コマンドを実行するとこで、アプリケーションのログ、ビルド、デプロイメント等の情報を表示するWebインタフェースを起動することができます。

❯ waypoint ui -authenticate

削除

waypoint destroy コマンドを使用することで、作成した環境を削除することができます。

❯ waypoint destroy -auto-approve

Docker からもアプリケーション用のコンテナが削除されていました。

❯ docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED             STATUS             PORTS                              NAMES
8125a45c0404   hashicorp/waypoint:latest   "/usr/bin/waypoint r…"   About an hour ago   Up About an hour                                      waypoint-runner
dc8c2eb498c8   hashicorp/waypoint:latest   "/usr/bin/waypoint s…"   About an hour ago   Up About an hour   0.0.0.0:9701-9702->9701-9702/tcp   waypoint-server

ちなみに、Waypoint サーバーは waypoint server uninstall で削除することができました。

❯ waypoint server uninstall -auto-approve

感想

特につまずくことなく簡単に、Dcoker にアプリケーションのリリースができた。次はECSにデプロイしてみたいと思います。

コメント

タイトルとURLをコピーしました