お試しにKubenetesクラスタを立てて置くのはGKEといえどそれなりにお金がかかります。マシンタイプをsmall
で Ingressを立ててhttps通信を出来るようにしてみると、200円/day くらいでしたので6000円,month/くらいはかかりそうでした。せっかくのサービスクレジットがあっという間になくなるのは勿体ないので、気軽にリソースを削除出来るようにTerraformでコード化します。
GKEのクラスタとノードの設定
前回書いた記事で作成したリソースからVPCの設定を除いた感じにします。
- リージョン : asia-northeast1(tokyo)
- マシンタイプ : small (ノード数1)
- プリエンプティブ ノードの有効化
TerraformでGCPを利用する
Terraformは Infrastructure as Codeを実現するツールです。リソースの変更する時に差分がわかりやすく表示されるのと、既存のリソースをインポートする事が出来るのが気に入ってます。
TerraformのドキュメントにGetting Started with the Google Providerがあるのでこちらを参考にしてます。実施することは主に 下記の二つ
- GCPの認証情報を作成する
- TerraformでProvider設定をする
GCPの認証情報を作成する
TerraformでProvider設定をする
コード化すると下記のようになります。下記のコードで上記の環境変数(GOOGLE_CLOUD_KEYFILE_JSON)を指定しておけば利用できるようになります。
# main.tf provider "google" { project = " ***** " region = "asia-northeast1" }
TerraformでKubenetesのコード化をする
次にKubenetesのコード化したものを追記すると下記のような感じになりました。
provider "google" { project = " ***** " region = "asia-northeast1" } locals { region_location = "asia-northeast1" } resource "google_container_cluster" " <任意の名前>" { name = "<任意のクラスタ名>" location = "${local.region_location}" remove_default_node_pool = true initial_node_count = 1 } resource "google_container_node_pool" " <任意の名前>" { name = "<任意のノード名>" location = "${local.region_location}" cluster = "${google_container_cluster.<任意のリソース名>.name}" node_count = 1 node_config { preemptible = true machine_type = "g1-small" } }
個人的にはとてもシンプルなイメージです。利用しないときは google_container_cluster
と google_container_node_pool
を一旦コード上で削除してから terraform apply
をすればお金がかからなくなります。
remove_default_node_pool
はデフォルトでノードプールが削除されるので、削除するようにして g1-small
インスタンスのノードプールを追加するようになってます。