DC4

Go/Vue/KubernetesでBitcoinのQRコードを生成するWebAppを作った。

Crypto Qrcode Generator

Bitcoinの支払い用QRコードを生成するWebAppを作成しました。

Crypto Qrcode Generator: http://crypto-qr-generator.site/

スクリーンショット 2019-09-01 23 02 42

同様のWebサイトは既に存在するのですが、先日BIP-21をGoで実装したライブラリを作成したことと、Go/Vue.js/Kubernetesの学習目的のために作成しました。

Github Link: github.com

BIP-21

BTCの送金先アドレスを指定する際に用いられるスキームを規定したBIP(Bitcoin Improvement Proposals の略)です。

Go/Vue.js

バックエンドにはGolang/Echoを使用しました。 Go.1.12を使用し、パッケージ管理にはModulesを使用しました。 フロントエンドではVue.js/Vuetifyを使用しました。

開発環境

開発環境用と本番用のDockerファイルを分けており、開発環境はdocker compose upでGo/Vue.jsの両環境がホットリロードできる状態で立ち上がるようになっています。

本番側ではマルチステージビルドを使用してイメージのサイズを小さくし、Vue.jsはビルド後Nginxで配信する構成になっています。

Kubernetes

node構成は preemptibleのf1-micro 3台 + preemptibleではないf1-micro 1台 で運用しています。

外部アクセスの方法はingress + GCLB を選択しました。 L7ロードバランサとして動作しているためhttps化も後ほど対応しようと思います。

CI/CD

概要図

https://user-images.githubusercontent.com/2255617/64079033-5c6e7800-cd1d-11e9-84d8-fbd264d600ac.png

Github上でPull Requestを受けるとTravis上でテストが実施されます。

Masterブランチの場合に限り、Docker Buildの実施後、GCRにイメージがPushされます。

Pushが完了するとPod内のイメージをPushされたイメージでローリングアップデートを実施します。(kubectl set image )

感想

事前に「Kubernetes完全ガイド」を一読していたのでマネージドな環境(GKE)で簡単なアプリを動かすのはそこまで難しくなかったです。むしろ開発環境やCIの方が時間費やしてしまいました。

とはいえ多機能かつ周辺ツールも色々登場してきているので本番のサービスレベルで使いこなすにはまだまだ学習が必要そうな印象です。

今後も監視ツールの導入や機能追加等をしながら学習していこうと思います。