Ansible
VULTR
kubernetes

ほぼコマンド一発でVULTRにKubernetesクラスターを作ったり壊したりする

TL; DR

VULTR(VPS)にKubernetesクラスターをサクッと立ててサクッと壊すための Ansible Playbook を作成しました。

動機

検証用のKubernetes

Kubernetesは構築が面倒というイメージがあります。一度立ててしまえばそれまでですが、検証のために作ったり壊したりしたいということも結構あるんじゃないでしょうか。

非力なPCではローカルでクラスタを組むのも厳しく、またminikubeだとクラスターではないので検証用途に見合わないケースも多々あります。

なるべくお金をかけずにかつお手軽に立てられないかを考え、VPSを利用することにしました。

VULTR について

VULTR はVPSを提供するサービスです。1CPU、1G Memが月$5という安さで、しかも1時間ごとの従量課金です。プランもいくつか選択できるので、潤沢にリソースが欲しいユースケースにも対応できます。

APIも豊富に提供されており、API経由でVMインスタンスを作ったり壊したりできます。さらにそのAPIを利用した Ansibleの公式モジュール も用意されており、Ansibleからお手軽に利用することもできます。

今回はこの VULTRのAnsibleモジュールkubespray を使って、Macから VMインスタンスとKubernetesクラスターを構築するプレイブックを書きました

事前準備

「ほぼ」コマンド一発と言いましたが事前準備が必要です 🙇

1. プレイブック をgit clone

今回作成したプレイブックをダウンロードします。pythonやpipがあらかじめ必要です。

git clone https://github.com/rerorero/vultr-k8s-playbook
cd vultr-k8s-playbook
pip install -r requirements.txt

2. 鍵ペアを作成

VMにログインするためのSSH鍵ペアを作成します。後の肯定でVULTRに登録します。秘密鍵ファイルを vultr.key という名前で vultr-k8s-playbook のルートディレクトリに配置するようにしてください

ssh-keygen -f ./vultr.key

3. VULTRアカウント作成

すでに VULTR アカウントを持っている方は飛ばしてください。
VULTRページからアカウントを作成します。決済手段もいい感じに設定してください。

4. VULTRにSSH鍵を登録

先ほど作った公開鍵を VULTR に登録します。SSH KEYSを選択し、Add SSH Keyで、「my_notebook」の名前で登録します。

5. VULTR のAPIキーをローカル環境に設定

VULTRのAPIの設定画面 からAPIを有効にし、APIキーを払い出します。APIキーは以下のようなファイルを作成し、 ~/.vultr.ini に保存します。

[default]
key=<APIキー>

プレイブックを実行

事前準備が終われば、あとは構築・削除はプレイブックを流すだけになります。一度準備すればあとはコマンド一発です。

VM作成+Kubernetes構築

ansible-playbook site.yml

デフォルトのインベントリーは このようなミニマルな構成になっています
k8s-master01にログインして確認してみます。

ssh -i vultr.key root@<k8s-master01のMain IP>

root@k8s-master01:~# kubectl get componentstatus
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health": "true"}

破壊

VMごと削除します。削除し忘れると課金され続けるので忘れないよう注意。

ansible-playbook destroy.yml

VULTRの仕様でvm作成した直後5分以内だと削除できないようです。その場合はしばらく待ちましょう

おためしあれ

プランやクラスター構成の変更は inventories ファイルで設定できます。また、kubesprayの設定を変えたい場合は このへん をお好みにいじってみてください。

格安な検証用k8sクラスターをお手軽にたててみたい方、是非お試しあれ。