ujunのブログ

KubeOneでHetzner CloudにKubernetesクラスタをデプロイする

KubeOneというKubernetesの管理ツールがある。

KubeOne - Kubermatic Documentation

簡単にKubernetesクラスタをデプロイできるCLIツール(kubeadmのラッパ)で、代表的なクラウドプロバイダには対応している。 自分はおうちラボとしてよくHetzner Cloudを使っているのだけど、KubeOneはなんとHetzner Cloudに対応しており、 コマンドラインでいとも簡単にKubernetesクラスタを格安で構築することができる。検証用途であればこれで十分だと思う。 あと、Terraformに慣れている人ならきっと扱いやすくて気に入るはず。

そういうわけで、一瞬にしてクラスタを組むには以下の通り。

  1. kubeoneのインストール https://docs.kubermatic.com/kubeone/v1.2/getting_kubeone/

  2. Gitリポジトリをclone github.com

  3. サンプルterraformをベースにインフラを作る https://github.com/kubermatic/kubeone/tree/master/examples/terraform/hetzner

    Hetznerだと上記パスにすでにベースとなるリソースの定義があるので、例えばSSH鍵のあたりとかを自分の環境に合わせて微調整する。 デフォルトだと、コントロールプレーンのノード数が3なので3インスタンス起動するが、プロダクション環境でもあるまいし1とかにする。そしていつものように terraform apply をする

  4. terraform outputをする

    ここがKubeOneのいいところで、terraformのouputをインプットにして華麗にKubernetesをプロビジョニングする。そのために、まずは terraform output -json > tf.json とする。

  5. プロビジョニングする

    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を参照するというのが、慣れている身としては入っていきやすい