Go/Vue/KubernetesでBitcoinのQRコードを生成するWebAppを作った。
Crypto Qrcode Generator
Bitcoinの支払い用QRコードを生成するWebAppを作成しました。
Crypto Qrcode Generator:
https://crypto-qrcode-generator-web.firebaseapp.com/
同様の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
概要図
Github上でPull Requestを受けるとTravis上でテストが実施されます。
Masterブランチの場合に限り、Docker Buildの実施後、GCRにイメージがPushされます。
Pushが完了するとPod内のイメージをPushされたイメージでローリングアップデートを実施します。(kubectl set image
)
感想
事前に「Kubernetes完全ガイド」を一読していたのでマネージドな環境(GKE)で簡単なアプリを動かすのはそこまで難しくなかったです。むしろ開発環境やCIの方が時間費やしてしまいました。
とはいえ多機能かつ周辺ツールも色々登場してきているので本番のサービスレベルで使いこなすにはまだまだ学習が必要そうな印象です。
今後も監視ツールの導入や機能追加等をしながら学習していこうと思います。