KubeOneでHetzner CloudにKubernetesクラスタをデプロイする
KubeOneというKubernetesの管理ツールがある。
KubeOne - Kubermatic Documentation
簡単にKubernetesクラスタをデプロイできるCLIツール(kubeadmのラッパ)で、代表的なクラウドプロバイダには対応している。 自分はおうちラボとしてよくHetzner Cloudを使っているのだけど、KubeOneはなんとHetzner Cloudに対応しており、 コマンドラインでいとも簡単にKubernetesクラスタを格安で構築することができる。検証用途であればこれで十分だと思う。 あと、Terraformに慣れている人ならきっと扱いやすくて気に入るはず。
そういうわけで、一瞬にしてクラスタを組むには以下の通り。
kubeoneのインストール https://docs.kubermatic.com/kubeone/v1.2/getting_kubeone/
Gitリポジトリをclone github.com
サンプルterraformをベースにインフラを作る https://github.com/kubermatic/kubeone/tree/master/examples/terraform/hetzner
Hetznerだと上記パスにすでにベースとなるリソースの定義があるので、例えばSSH鍵のあたりとかを自分の環境に合わせて微調整する。 デフォルトだと、コントロールプレーンのノード数が3なので3インスタンス起動するが、プロダクション環境でもあるまいし1とかにする。そしていつものように
terraform applyをするterraform outputをする
ここがKubeOneのいいところで、terraformのouputをインプットにして華麗にKubernetesをプロビジョニングする。そのために、まずは
terraform output -json > tf.jsonとする。プロビジョニングする
Kubernetesのバージョン等を記述した以下のファイルを作成(kuberone.yaml)
apiVersion: kubeone.io/v1beta1
kind: KubeOneCluster
versions:
kubernetes: '1.18.6'
cloudProvider:
hetzner: {}
external: true
そしてkubeoneを実行。 kubeone apply --manifest kubeone.yaml -t tf.json
以上。
TerraformのOutputを参照するというのが、慣れている身としては入っていきやすい