【さくらのクラウド】Kubernetesクラスタ構築用のモジュールをTerraform Registryに公開しました
はじめに
先日 Open Service Broker for さくらのクラウドというプロダクトを公開しました。
参考: Open Service Broker for さくらのクラウドでKubernetes + Service Catalog出来るようになりました
これを試すには以下2つの方法があります。
Docker for Mac/Windowsの方は気軽に試せますが、やはりちゃんと複数台のサーバで構成されたKubernetesクラスタで動かしたいですよね。
でもVPC内に手動でクラスタを構築するのはなかなか大変な作業です。
そこで、Terraform(とTerraform for さくらのクラウド)でコマンド一発で構築できるようにしました。
Terraformの公式モジュールレジストリであるTerraform Registryに公開していますので非常に簡単に利用することができます。
Terraform Registry: sacloud/kubernetes-single-master/sakuracloud
今回はこのモジュールの使い方について紹介します。
Terraform RegistryのモジュールでKubernetesクラスタを構築する
準備
terraform
とterraform for さくらのクラウド
のインストールを行っておきます。
以下のドキュメントを参考にインストールし、APIキーの取得/設定などを行っておいてください。
構築
まずは以下のようなtfファイルを用意します。
module "kubernetes" { source = "sacloud/kubernetes-single-master/sakuracloud" // サーバーのrootユーザーのパスワード password = "<put-your-password-here>" // ワーカーノードの数(0でもOK、0だとマスター上でPodが稼働する) worker_count = 3 }
あとは通常のTerraformの流れでterraform init
してterraform apply
すればOKです。
簡単ですよね?
あとは構築完了まで数分待ちましょう。
Kubernetesクラスタを使ってみる!
無事構築できましたでしょうか?
構築できたら早速使ってみましょう。
以下2通りの利用方法があります。
- SSHでマスターノードに接続して利用
- マスターノードから
kubeconfig
ファイルをダウンロードして利用
順に説明します。
マスターノードにSSH接続
terraform apply
を実行したディレクトリにcerts
ディレクトリが作成されています。
この中にサーバへのSSH接続用の秘密鍵が格納されています。
これを利用すればマスターノードだけでなく、ワーカーノードへもSSH接続が行えます。
さくらのクラウド CLI Usacloudを利用する場合は以下のようにすればSSH接続できます。
# サーバ名 kubernetes-master-01を指定してSSH接続 $ usacloud server ssh -i certs/id_rsa kubernetes-master-01
デフォルトではマスターノードの名前はkubernetes-master-01
となっているはずです。
変更している場合はコマンドを適宜読み替えてください。
あとはkubectl
コマンドやhelm
コマンドが利用できるようになっています。
# クラスタの情報を表示 $ kubectl cluster-info # ノードの状態を表示 $ kubectl get node
Type: LoadBalancer
なService
は動かせませんがIngressなどはちゃんと動きます。
kubeconfig
ファイルをダウンロードして利用
SSH接続せずともkubeconfig
ファイルをマスターノードからダウンロードすることでローカルマシン上のkubectl
コマンドから操作できるようになります。
kubeconfig
ファイルはマスターノードの/etc/kubernetes/admin.conf
に置かれていますのでSCPなどでダウンロードします。
Usacloudの場合は以下のコマンドでダウンロード可能です。
# SCPでダウンロード $ usacloud server scp -i certs/id_rsa kubernetes-master-01:/etc/kubernetes/admin.conf ./admin.conf
ダウンロード後は--kubeconfig
オプションで都度指定 or KUBECONFIG
環境変数を設定するなどで利用します。
# コマンドラインオプションで都度指定する場合 $ kubectl --kubeconfig admin.conf cluster-info # 環境変数で指定することも可能 $ export KUBECONFIG=$(pwd)/admin.conf $ kubectl cluster-info
注意点
このモジュールはシングルマスタ構成で、耐障害性などは考慮していません。
開発/検証用途など向けとなっています。 必要であれば自分でetcdのバックアップなどを行ってください。
終わりに
ということで非常に簡単に使えますのでぜひご利用ください!!