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クラスターをお手軽にたててみたい方、是非お試しあれ。