Kubernetes使って普段のRails Web開発を行いたいなと思って、Kubernetes ローカル開発支援ツール(minikube, kind, microk8s, Docker Desktop)のどれが良いのか調べてみました。 将来的にはローカル環境のコンテキストから本番環境に切り替えるだけですぐに反映ができ、リードタイム短縮できるような世界になると良いな、と思っていますが、現在は本番環境ではKubernetes未利用の状況。
結論
- Windows / Macユーザの場合
- 開発にKubernetesを使えれば良いというライトなユーザ
- => Docker Desktop
- 開発だけではなくAdd-onを使ったり、Kubernetesのバージョンを自由に変えたいヘビーなユーザ
- => minikube
- 開発にKubernetesを使えれば良いというライトなユーザ
- Linuxユーザの場合
- 開発にKubernetesを使えれば良いというライトなユーザ
- => Kind
- 開発だけではなくAdd-onを使ったり、Kubernetesのバージョンを自由に変えたいヘビーなユーザ
- => minikube
- 以前はセットアップがシンプルなmicrok8sが便利だったようですが、1.14からDockerがインストールされなくなったのでさほどminikubeと手間変わらず、むしろ混乱するので素直にminikube使っておいた方が良いようです。
- => minikube
- 開発にKubernetesを使えれば良いというライトなユーザ
本番とローカルの環境間でKubernetesバージョンの差異を無くすという観点で考えると、容易に変更できるminikubeを選択しておいた方が良さそうです。
また、minikubeは2019年内のロードマップにマルチノード対応が入っており、他のツールでしかできないことがほぼなくなるので、迷ったらとりあえずminikubeを選択しておくと良さそうです。
まとめ
代表的なツール5つの特徴をまとめてみました。右端のK3sだけIoT特化でローカル開発の用途に適さないので、K3sに関しては少しだけ調べた内容を記載しています。
どのツールも開発コミュニティ自体は大きく、今後メンテされなくなるリスクはなさそうなので、開発環境のOSをサポートしたツールの中で特徴・セットアップ・機能性・マルチノードサポートが用途にあったものを選択すれば良さそうです。