Cloud Spanner 搭配 Terraform

1. 總覽

上次更新時間:2020 年 7 月 23 日

什麼是 Cloud Spanner?

Google Cloud Spanner 是遍及全球且符合 ACID 標準的資料庫,可自動執行備用資源、資料分割和交易處理,因此您可以根據使用模式快速調度資源,確保產品取得成功。

主要功能

  • 專為規模擴充所設計的關聯資料庫:具備關聯資料庫的所有特點,包括結構定義、SQL 查詢和 ACID 交易,都已通過嚴苛檢驗,且可以隨時擴充至全球規模。
  • 99.999% 可用性:Cloud Spanner 針對多區域執行個體提供領先業界的 99.999% 可用性,停機時間比可用性 99.99% 的服務還少 10 倍,並依據跨區域與多區域設定執行透明化的同步複製服務。
  • 自動分片:Cloud Spanner 會根據資料的要求負載和大小自動執行資料分割,藉此達到最佳效能。因此,您不必費時擔心如何擴充資料庫,只需專注於拓展業務規模。

查看所有功能

課程內容

  • 如何使用 Google Cloud Terraform 供應商。
  • 使用 Terraform 建立 Cloud Spanner 執行個體和資料庫。
  • 使用 Terraform 修改 Cloud Spanner 資源。
  • 使用 Terraform 刪除 Cloud Spanner 資源。

2. 設定和需求

自修實驗室環境設定

如果您沒有 Google 帳戶 (Gmail 或 Google 應用程式),請先建立帳戶。登入 Google Cloud Platform 主控台 ( console.cloud.google.com),然後建立新專案:

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

請記住專案 ID,這是所有 Google Cloud 專案中不重複的名稱 (上述名稱已遭占用,因此不適用於您,抱歉!)。本程式碼研究室稍後會將其稱為 PROJECT_ID

接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Google Cloud 資源。

完成本程式碼研究室的費用不應超過數美元,但如果您決定使用更多資源,或是將資源繼續執行 (請參閱本文件結尾的「清除」一節),則可能會增加費用。

Google Cloud Platform 新使用者享有價值 $300 美元的免費試用期

驗證

如果您尚未安裝 gcloud 指令列工具,請先完成安裝作業。安裝 gcloud 後,請在終端機中執行下列指令,啟用應用程式預設憑證:

$ gcloud auth application-default login

Terraform

如果您先前未安裝 Terraform,請安裝 Terraform

3. Google Cloud Terraform 供應商

Google Cloud Terraform Provider 提供四種 Cloud Spanner 資源:

在本程式碼研究室中,我們將建立及管理 Cloud Spanner 執行個體和資料庫。

環境

在開發環境中,為 Terraform 設定檔建立新目錄。

$ mkdir ~/terraform-spanner
$ cd ~/terraform-spanner

接著,建立名為「main.tf」的檔案,並加入下列內容,然後將 PROJECT_ID 換成您自己的 Google Cloud 專案 ID:

$ cat >> main.tf <<'EOF'
provider "google" {
  project = "PROJECT_ID"
}
EOF

在本程式碼研究室的其餘部分,我們將修改這個檔案並套用變更。

4. 建立執行個體和資料庫

使用下列內容修改 main.tf,新增 Cloud Spanner 執行個體:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

執行下列指令來套用變更:

$ terraform apply
# ...
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes
# ...
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

套用變更後,您可以在 Google Cloud 控制台中看到執行個體。請注意,建立執行個體後,就無法修改區域設定。

48b67416982fa152.png

建立執行個體後,我們會在後續步驟中建立資料庫。使用下列內容修改 main.tf:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

再次使用下列指令套用變更:

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

成功後,my-first-database 會顯示在執行個體下方:

9962a71c6b2a3aff.png

5. 修改執行個體

如先前章節所述,並非所有執行個體屬性都能修改。但您可以增加/減少節點數量,藉此調整執行個體使用的資源。建立的執行個體有 3 個節點。修改 main.tf 檔案,將節點數量增加至 5 個:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

接下來請套用變更:

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

成功後,執行個體就會使用 5 個節點。

6. 刪除資料庫

如果不再需要資料庫,可以永久刪除。只要從 main.tf 移除資料庫,然後套用變更即可。

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

成功刪除後,資料庫就會永久刪除。

7. 刪除執行個體

如果不再需要執行個體,可以永久刪除。只要從 main.tf 移除執行個體,然後套用變更即可。

provider "google" {
  project = "PROJECT_ID"
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

成功後,執行個體就會永久刪除。

8. 恭喜!

您已使用 Terraform 建立、修改及刪除 Cloud Spanner 資源。

涵蓋內容

  • 如何使用 Google Cloud Terraform 供應商。
  • 使用 Terraform 建立 Cloud Spanner 執行個體和資料庫。
  • 使用 Terraform 修改 Cloud Spanner 資源。
  • 使用 Terraform 刪除 Cloud Spanner 資源。

瞭解詳情