こんにちは、ゲームソリューション部のsoraです。
今回は、TiDB CloudのクラスタをTerraformで構築してみたことについて書いていきます。
はじめに
使用するために、TiDB CloudのAPIキーが必要になります。
APIキーの作成方法については以下記事の冒頭をご確認ください。
Terraformコード
TerraformでTiDB Cloudプロバイダーがあったため、こちらを参考にクラスタの構築を試していきます。
tidbcloud Provider
早速ですが、以下がDedicated TierとServerless Tierを両方構築する場合のコードです。
main.tf
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で構築してみたことを記事にしました。
どなたかの参考になると幸いです。