概要
Waypoint という HashiCorp 製のツールを見つけたので使ってみました。
アプリケーションのビルド~デプロイ~リリースの実行を容易に行うためのツールらしいです。
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
heroku@1b4c727a44f9:/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にデプロイしてみたいと思います。
コメント