TiDB CloudのクラスタをTerraformで構築してみた
こんにちは、ゲームソリューション部のsoraです。
今回は、TiDB CloudのクラスタをTerraformで構築してみたことについて書いていきます。
はじめに
使用するために、TiDB CloudのAPIキーが必要になります。
APIキーの作成方法については以下記事の冒頭をご確認ください。
Terraformコード
TerraformでTiDB Cloudプロバイダーがあったため、こちらを参考にクラスタの構築を試していきます。
tidbcloud Provider
早速ですが、以下がDedicated TierとServerless Tierを両方構築する場合のコードです。
terraform { required_providers { # TiDB Cloudプロバイダー tidbcloud = { source = "tidbcloud/tidbcloud" version = "~> 0.2.1" } } } # TiDB Cloud APIキー(事前にTiDB Cloudにて作成しておく) provider tidbcloud { public_key = "xxxxxxxx" private_key = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } # Dedicated Tierクラスタの構築 resource tidbcloud_cluster dedicated_tier_cluster { project_id = "xxxxxxxxxxxxxxxxxxxx" name = "ClusterDedicated" # Dedicated Tierの指定 cluster_type = "DEDICATED" cloud_provider = "AWS" region = "ap-northeast-1" config = { # クラスタを構成する要素の指定 components = { tidb = { # 8vCPU、16GiB node_size : "8C16G" node_quantity : 2 } tikv = { # 8vCPU、32GiB node_size : "8C32G" storage_size_gib : 500, node_quantity : 3 } tiflash = { # 8vCPU、64GiB node_size : "8C64G" storage_size_gib : 2048, node_quantity : 2 } } # IPアクセスリスト(リスト指定することに注意) ip_access_list = [ {cidr = "10.0.0.0/16", description = "test-dedicated-1"}, {cidr = "10.1.0.0/16", description = "test-dedicated-2"}, ] # 接続用のTiDBポート port = 1024 # クラスタのルートパスワード root_password = "root_password" } } # Serverless Tierクラスタの構築 resource tidbcloud_cluster serverless_tier_cluster { project_id = "xxxxxxxxxxxxxxxxxxxx" name = "ClusterServerless" # Serverless Tierの指定(ServerlessではなくDEVELOPER) cluster_type = "DEVELOPER" cloud_provider = "AWS" region = "ap-northeast-1" config = { root_password = "root_password" } }
Dedicatedでは、構成要素のサイズや数を指定する必要があります。
TiDB CloudのGUIで構築する場合に指定できる項目が全て指定できます。
IPアクセスリストとクラスタのルートパスワードは、GUI上で構築時に設定できない項目のようです。(構築後にはGUI上でも設定可能です)
Serverlessでは、cluster_type = "SERVERLESS"
ではなくcluster_type = "DEVELOPER"
を指定することに注意が必要です。
TiDB CloudのGUIで構築する場合に指定できる項目の中で、Spending Limit(支出制限)とEnhanced Encryption at Rest(Beta)は指定できなさそうです。(構築後にGUI上で設定可能です)
構築してみた
Terraformを実行していきます。
Dedicatedは無料枠がないため、今回はServerlessのみ構築します。
$ terraform init $ terraform plan $ terraform apply
実行後に、TiDB CloudのGUI上で確認してみると、Serverlessクラスタが作成できていました。
Created byもapikey-xxxxになっています。
最後に
今回は、TiDB CloudのクラスタをTerraformで構築してみたことを記事にしました。
どなたかの参考になると幸いです。