iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
DevOps

Terraform 從零開始 - 實戰Lab打造GCP雲端自動化架構系列 第 31

Day 31 — Terraform/GCP實戰:使用 Terraform 創建 GCP 資料庫服務Cloud MemoryStore — Redis

  • 分享至 

  • xImage
  •  

使用 Terraform 創建記憶體快取服務 Cloud MemoryStore — Redis,實現快取資料的管理。

Day 31 — Terraform/GCP實戰:使用 Terraform 創建 GCP 資料庫服務Cloud MemoryStore — Redis

文章同步分享到

1. GCP 資料庫服務 Cloud MemoryStore — Redis 主要功能、用途與使用情境

資料庫服務 Cloud MemoryStore 的主要功能、用途與使用情境,可以參考先前的章節來做了解,會更幫助我們了解對應用terraform產生的雲端資源。

Terraform/GCP實戰:使用 GCP Console 創建 GCP 資料庫服務 Cloud MemoryStore — Redis

GCP 資料庫服務 — Cloud MemoryStore (Redis)

2. GCP 資料庫服務 Cloud MemoryStore — 使用Terraform創建Cloud MemoryStore — Redis

在這個章節中,我們將深入探討如何使用Terraform在Google Cloud Platform上創建Cloud Run。我們將依次進行以下步驟:

  1. 創建一個postgresql 14 的資料庫

  2. 使用最簡單的cpu與硬碟空間設定

  3. 使用dbever嘗試連線資料庫

  4. **Terraform Cloud MemoryStore 連結**:可以到github參考對應的Terraform程式碼。

下載Another Redis Desktop Manager 來進行Redis測試

  1. 前往Another Redis Desktop Manager的官方網站:https://goanother.com/#download

  2. 在下載頁面上,選擇適用於您的操作系統的版本。Another Redis Desktop Manager支援多個操作系統,包括Windows、macOS和Linux。點擊下載連結以開始下載安裝文件,請耐心等待下載完成。

  3. 完成下載後,根據您的操作系統執行安裝後,打開Another Redis Desktop Manager 應用程序。在首次運行時,您將需要配置連接到您的資料庫的設定,包括主機名稱、用戶名、密碼等。稍後我們會配合Redis來進行後續練習。

Another Redis Desktop Manager 下載社群版本

創建terraform檔案

接著創建三個檔案,分別是 0-provider.tf, 1-variables.tf, 2-main.tf。

0-provider.tf

##################################################################################
# CONFIGURATION
##################################################################################
terraform {
  required_version = ">=1.0"
    required_providers {
      google = {
        source  = "hashicorp/google"
        version = ">= 4.40.0"
      }
    }
}

provider "google" {
  project = var.GCP_PROJECT
  region  = var.GCP_REGION
  # zone        = var.zone
}

這個檔案主要用於配置 Terraform 的提供者(provider),以確保 Terraform 可以正確地與 Google Cloud Platform(GCP)進行交互。

這個檔案主要用於配置 Terraform 的提供者(provider),以確保 Terraform 可以正確地與 Google Cloud Platform(GCP)進行交互。

  • terraform :這個區塊設定了 Terraform 的版本要求,確保使用的版本符合最低要求大於4.40.0版本。同時,它也定義了所需的提供者和版本。
  • provider "google" :這個區塊指定了要使用的 GCP 提供,指定了 GCP 專案 ID(由 var. GCP_PROJECT 變數提供)。

1-variables.tf

variable "GCP_PROJECT" {
  description = "GCP Project ID"
  type        = string
  default     = "terraform101-384507"
}

variable "GCP_REGION" {
  type    = string
  default = "asia-northeast1"
}

variable "GCP_ZONE" {
  type    = string
  default = "asia-northeast1-a"
}

variable "redis_name" {
  type    = string
  default = "redis-tf-ch4-12-3"
}

terraform檔案 1-variables.tf

這個檔案用於定義 Terraform 使用的變數,以實現更高度的可配置性和重用性。

  • variable "GCP_PROJECT":這是 GCP 專案 ID 的變數,它描述了 GCP 專案的 ID。它的預設值是 "terraform101-384507",但可以在使用時指定不同的值。

  • variable "GCP_REGION":這是定義網路服務所在位置(地區)的變數。

  • variable "redis_name":這是用於定義 cloud memory store — redis名稱的變數。

2-main.tf

terraform檔案 2-main.tf

resource "google_redis_instance" "cache" {
  name         = var.redis_name
  display_name = "terraform 101 - ${var.redis_name}"
  region       = var.GCP_REGION

  memory_size_gb = 1
  tier           = "BASIC"
  redis_version  = "REDIS_6_X"

  persistence_config {
    rdb_snapshot_period = "TWENTY_FOUR_HOURS"
  }
}

這段 Terraform 程式碼的目的是使用 Terraform 工具自動化地在 Google Cloud Platform 上創建一個 Cloud MemoryStore — Redis ,並將相關的資源設定和配置進行定義。:

resource google_redis_instance cache 區塊它的功能和設置如下:

  • name:設置Redis快取實例的名稱,名稱由var.redis_name變數指定。

  • display_name:設置Redis實例的顯示名稱,通常用於標識和管理。

  • region:指定Redis實例所在的GCP區域,這是實例的物理位置。

  • memory_size_gb:設置Redis實例的記憶體大小,此處設為1GB。

  • tier:設置Redis實例的層級,這裡設為BASIC

  • redis_version:指定Redis的版本,此處設為REDIS_6_X

  • persistence_config:設置Redis持久性選項,此處僅配置了RDB快照週期為每24小時一次(TWENTY_FOUR_HOURS)。

執行terraform部署

到專案目錄執行初始化計畫

terraform init
# or
tf init

確認部署計畫內容

terraform plan -out plan.out
# or
tfp

觀看部署計畫 terraform plan -out plan.out

最後執行 terraform apply -auto-approve來部署對應的資源到雲端架構上,就可以得到下列的結果。

terraform apply -auto-approve
# or
tfdp

部署雲端架構 terraform apply -auto-approve

GCP 資料庫服務 — Cloud Sql 創建完成

使用GCP Console創建VM,作為Redis forward的vm

由於gcp的redis我們無法直接從公開網路存取,所以我們要透過創建一個vm,再利用這個vm來連線遠端的redis。這個原理就像我們要打公司的電話號碼總機接通以後,在撥打分機號碼,才能夠真的聯絡到對方。所以這個vm就是公司的電話號碼總機,下面的章節就會來介紹。

Port forwarding VM設定

  • VM 執行個體基本資訊:包括名稱與地區,名稱使用redis-proxy,而地區使用asia-northeast1 東京
  • VM 執行機器類型:選擇最基本的e2-micro,share 2G vCPU與1G的RAM作為我們的跳板機器,用來執行port forwarding。
  • VM 部署機器:點選部署後,確認機器創建完成。

VM 執行個體基本資訊

VM 執行個體機器類型

Port forwarding 詳細設定

  • SSH Port forwarding詳細指令:下面的指令主要是將遠端10.146.0.43的6379 port,透過vm的轉介,轉發到本地電腦的6379 port。
  • ssh連線原理:首先我們要先連線到遠端的vm上,利用gcloud compute ssh [VM名稱] — project [專案ID] — zone [區域],也就是gcloud compute ssh — zone "asia-northeast1-b" "redis-proxy" — project "terraform101–384507" 會讓本地電腦可以利用ssh連線到遠端gcp上的vm,terraform101–384507這專案中的asia-northeast1-b地區上的redis-proxy這台vm。
  • port warding 連線原理-- -L [本機端口]:[redis ip]:[Redis端口] 則是用來做遠端連線port的轉發,將遠端ip的port轉發到本機上的port上,所以使用 -- -L 6379:10.146.0.43:6379 來將redis的6379 port轉發到本機的6379 port上
gcloud compute ssh [VM名稱] --project [專案ID] --zone [區域] -- -L [本機端口]:[redis ip]:[Redis端口]

gcloud compute ssh --zone "asia-northeast1-b" "redis-proxy" --project "terraform101-384507" -- -L 6379:10.12.243.27:6379

SSH Port forwarding詳細指令

Port forwarding 連線轉發redis 6379到本地電腦

測試部署的 GCP MemoryStore Redis 服務

創建修改完畢,並看到 GCP MemoryStore Redis 後,可以查看總體的詳細資料。後續我們會利用Another Redis Desktop Manager 來連線Redis,並測試連線。

Redis 詳細設定

  • 確認連線:首先確定已經執行 Port forwarding 連線轉發redis 6379到本地電腦
  • 開啟新連線:首先開啟Another Redis Desktop Manager,並且開啟新連線,指定 127.0.0.1 為 host,並使用6379 port,最後按確認。
  • 確認GCP redis 詳細資訊:連線成功後,可以看到連結的詳細資訊,包括redis info以及相關的db資訊。

Another Redis Desktop Manager — redis 連線設定

Another Redis Desktop Manager — redis 資訊

Another Redis Desktop Manager — redis 詳細資訊

3. 總結 Summary

  1. Terraform 雲端資源實作:介紹如何使用Terraform自動化地創建Cloud Sql 的過程。主要步驟包括:

    • 初始化 Terraform: 使用 terraform init 初始化 Terraform 項目,確保環境正確設定。
    • 設定變數: 定義所需變數,如 GCP 專案 ID、區域和服務名稱,以便稍後在 Terraform 中使用。
    • 建立Cloud MemoryStore Redis 服務定義: 定義 Cloud MemoryStore Redis 服務的特性,包括服務名稱、redis版本、連線資訊與網路連線設定等。
    • 生成計劃執行部署: 使用 terraform plan 生成部署計劃,並使用 terraform apply 部署 Cloud MemoryStore 服務及其相關資源到 Google Cloud Platform。
  2. 部署並測試 GCP MemoryStore Redis 的連線設定:執行Terraform部署的指令,並完成了下列設定,並嘗試使用Another Redis Desktop Manager來進行連線測試。

    • 創建Cloud MemoryStore Redis服務:使用terraform設定redis執行個體基本資訊、容量、區域、網路和版本。
    • 跳板機器:創建VM作為Redis轉發的跳板機器,設定SSH Port forwarding以實現遠端連線。
    • 測試服務:下載並使用Another Redis Desktop Manager來測試Redis連線,設定連線詳細資訊、測試連線與實際連線,確認整個連線到Redis的過程。

4. 相關連結

  1. Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Codehttps://github.com/qwedsazxc78/Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Code

  2. Terraform-project-best-practicehttps://github.com/qwedsazxc78/terraform-project-best-practice

  3. 歡迎訂閱我的udemy課程:Terraform 從零開始 - 10+實戰Lab打造GCP雲端自動化架構課程 - https://devops-with-alex.com/go/terraform


上一篇
Day 30 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 資料庫服務Cloud MemoryStore — Redis
系列文
Terraform 從零開始 - 實戰Lab打造GCP雲端自動化架構31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言