Cloud Spanner 搭配 Terraform

1. 總覽

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

什麼是 Cloud Spanner?

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

主要功能與特色

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

查看所有功能與特色

課程內容

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

2. 設定和需求

自修環境設定

如果您還沒有 Google 帳戶 (Gmail 或 Google Apps),請先建立帳戶。登入 Google Cloud Platform 控制台 ( console.cloud.google.com),並建立新專案:

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

提醒您,專案 ID 是所有 Google Cloud 專案的專屬名稱 (已經有人使用上述名稱,很抱歉對您不符!)。稍後在本程式碼研究室中會稱為 PROJECT_ID

接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Google Cloud 資源。

執行本程式碼研究室所需的費用不應超過數美元,但如果您決定使用更多資源,或讓這些資源繼續運作,費用會增加 (請參閱本文件結尾的「清理」一節)。

新使用者符合 $300 美元免費試用資格的 Google Cloud Platform。

驗證

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

$ gcloud auth application-default login

Terraform

如果您尚未安裝 Terraform,請安裝 Terraform

3. Google Cloud Terraform 供應商

Google Cloud Terraform 供應商提供四種 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 資源。

瞭解詳情