文章目錄
GKE 透過 Private IP 連線 Cloud SQL
因為團隊中沒有傳統 DBA (只有 BA 兼任 DBA 哈哈),所以在 db 的選擇上一直都偏好使用外部服務 (自建環境時與其他團隊共享 DBA 資源) 所以在評估 GCP 時也就選擇使用 Cloud SQL,當然使用 SaaS 服務的限制: 1. 沒辦法進行細微設定 2. 底層 patch 可控程度低 3. 語法受限 4. 硬體效能受限 5. 價格昂貴 …. 等等,都已經被納入評估,最後決定因素主要還是在 便利
與 彈性
,GCP 管理大多數情況下應該會優於外行人管理吧 XD
我 google 了一下,網路上的文章跟官方建議都使用 Cloud SQL Proxy 為主,雖然我認同 Cloud SQLProxy 的安全性,但我覺得部署與設定的動作太多了,對測試環境還是 on-premiss 機房的我們而已,要兼容修改的範圍過大,所以才想從網路這層著手
基本環境說明
- GKE (1.17.13-gke.2001)
- Cloud SQL (MySQL 8.0)
設定方式
建立 GKE (已有 GKE instance 可忽略)
建立叢集
設定 Kubernetes networking
使用
default
VPC
建立 Cloud SQL
建立執行個體
選擇資料庫引擎
這邊以
mysql
為例設定 db networking
使用
Private IP
並指定default
VPC
驗證方式
部署 container
以下使用之前筆記 使用 Kubernetes Liveness 來檢查 ASP.NET Core gRPC 回應合乎預期 的 image 來進行示範
kubectl create deployment test --image=gcr.io/thermal-setup-295904/healthcheck:healthy
至 container 直接連線
語法
kubectl exec -it {pod name} -- bash
範例
kubectl exec -it test-c57fc89dc-jf5dx -- bash
安裝 mysql client
請依 base image os 自行調整
apt update && apt install -y default-mysql-client
使用 Private IP 連線至 Cloud SQL
取得 Cloud SQL Private IP
語法
mysql -h {cloud sql private ip} -u{username} -p{passowrd}
範例
mysql -h 10.65.195.3 -uroot -ppass.123
實際結果
心得
經過一連串測試調整一直遇到連線不通的問題,後來重新看了說明文件才發現漏看了一段重點 @@”
這充份說明:別自以為是,不管做什麼還是需要閱讀公開說明書XD
參考資訊
文章作者 Yowko Tsai
上次更新 2020-12-11
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。