TerraformとAnsibleを使ってKubernetes環境構築に取り組んだ。
自作アプリの運用をKubernetesに乗っけてみたいという気持ちから環境を構築するところから初めてみた。
プライベートでの開発なので、せいぜい月2000円前後くらいの予算に留めたいところ。
クラウドかVPSか、マネージドか、ノンマネージドかといったところが大きな観点だが、そのへんはコスト感と運用メリットを考慮しつつ決めれば良いのでそんなに悩まないと思う。後述するが、一番の悩みのタネはロードバランサーだった・・。
今回候補に上がったのは3つ。
上記以外にマネージドk3sを提供しているcivo.comという選択肢も考えたが、k8sを触りたかったので検討外とした。
Digital OceanとConohaで迷ったが、従量課金なしの安心の料金体系に心奪われたのでConohaを選定した。
GKEやDigital OceanはKubernetesをさっと構築して勉強するにはちょうどよい環境が整っていると思うので、そういった目的で利用を検討していく判断をした。
マネージドKubernetesを利用しない選択をしたので、セルフでKubernetesを構築することにした。
構築のツールとしてはkubeadmを採用。
TerraformとAnsibleを使って、インスタンスの構築から初期セットアップ(ユーザー作成、ssh鍵調整など)、kubeadmを使ったKubernetesの構築までコード化したものがこちら↓
github.com - bmf-san/setup-kubernetes-cluster-on-vps-boilerplate
masterノード1台、workerノードは複数台想定になっている。
ConohaはOpenstackをサポートしたAPIを用意しているので、Openstackをサポートしている他サーバー(ex. Digital Ocean)であれば、書き換えも楽なはず。
kubeadmによるKubernetesの構築は、Kubernetesの公式ドキュメントを一読して構築の前提条件を把握しておけばそれほど難しくなかった。
ロードバランサーの対応ができなかったので、アプリケーションを公開してKubernetes運用をするまでに至らなかった。
自前Kubernetesクラスタの場合、クラウドが用意しているロードバランサーが使えないのでOSSのものを自分で用意する必要があるのだが、そのセットアップが上手く行かず断念・・
1週間近く睡眠時間を削ったが歯が立たなかった..w
解決できなかった問題はこれ。
https://github.com/kubernetes/ingress-nginx/issues/5401
自作アプリは一旦docker-composeでの運用をする方向に転換して、Kubernetesの運用はもう少し理解を深めてからにしようと思う。。。