前置作業 - 網域
要綁定 VM 跟 SSL 出口,通常會使用 Load Balancer 負載平衡器的方式,因此會需要有個網域來操作,常見的 Godaddy 或是 Namecheap 都是不錯的選擇,本次以 Godaddy 作為示範。
前置作業 - 對外服務
通常對外的後端會是網頁,這邊使用 Docker Container 的方式在 VM 建立一個 port 為 8888 的網站,Docker 安裝及使用可以參考下面。
VM 在設定時記得允許流量及負載平衡器檢查健康狀態。
如果想跟著手把手做,可以用下面的docker-compose來跟著建立一個簡易的網站,資料目錄如下:
.
├── docker-compose.yaml
└── html
└── index.html
version: '3'
services:
web:
image: httpd:alpine
ports:
- "8888:80"
volumes:
- ./html:/usr/local/apache2/htdocs/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demo Website</title>
</head>
<body>
<h1>Welcome to the Demo Website</h1>
<p>這是用來示範GCP的Load Balancer 負載平衡器網頁</p>
</body>
</html>
然後執行 docker-compose up -d
就可以建立服務了。
IP 記得改成自己的對外 IP 才會顯示唷,然後也記得開 8888 防火牆。
建立網路端點群組
重要的起手式,先將 VM 的服務 加入一個執行個體群組,選單在 compute engine>網路端點群組>建立網路端點群組。
群組類型選擇 NEG 全域,下面的通訊埠就是你 VM 服務的 port,因此是8888,新的網路端點 IP 則是你 VM 對外的 IP。
加入後點進群組應該可以看到你的 VM 在成員清單中。
建立好放著即可,這就會是我們負載平衡的後端
負載平衡器
本次重點功能 GCP 的 Load Balancing 負載平衡器,它的功能很多,顧名思義可以進行流量控制,但我們要使用比較基礎的功能,就是幫我們建立連線入口跟SSL憑證即可。
從左邊選單找網路服務>負載平衡>建立負載平衡器:
GCP 改版更新的頻率很高,現在(202406)的畫面如下,選擇可以參考:
- 負載平衡器類型 -> 應用程式負載平衡器 (HTTP/HTTPS)
- 公開或內部 -> 公開 (外部)
- 全域或單一區域部署 -> 最適合全域工作負載
- 負載平衡器代別 -> 全域外部應用程式負載平衡器
前端設定
接下來進到前後端的設定,通訊協定選https,IP位置建立一個新的固定IP,不要使用臨時的。
憑證我們建立一個新的 google 代管憑證,首先到你的網域商畫面,將你的網域名稱填到憑證內的,例如我在 Godaddy 的網域是 chrislee.site:
我上面多填一個 test.chrislee.site 是因為我想讓 VM 的網頁對應到這個子網域,如果你有多個子網域,就要在這邊也加進去。
後端設定
後端設定要建立新的後端服務,基本上就是指定到你的 VM 群組。如果你的VM 有多個port對應多個服務,例如有 3 個網站對應 8888、8889、9000 不同 port,你就要建立 3 個網路端點群組,並且在這邊對應過去。
轉送規則
最後一個轉送規則,顧名思義就是把前端設定跟後端設定綁定,例如我要靶子網域 test.chrislee.site 對應到我的 VM 8888 port 後端,設定如下,中間路徑都寫/
即可。
都完成後就能送出了,基本上要跑個幾分鐘:
網域DNS設定
離開 GCP 到網域商的網站,因為我們要跟子網域作連動,要去 DNS 增加:
- 設定紀錄A,名稱@,值為負載平衡器的IP位置,如34.111.231.90
- 設定紀錄CNAME,名稱為子網域前贅test,值為網域名稱chrislee.site
通常生效要一段時間,幾分鐘到幾小時不等,你可以去What’s My DNS網站打上你的網域看IP是否修正。
等了約莫10分鐘後,我們的網頁已經完成囉:
憑證看起來也很正常,因為我們服務是使用 docker container 技術做的,所以未來的可以對接各種網站框架。
最後可以用 SSL 測試網站 來檢查憑證,就可以看到完整的檢查紀錄囉,如果覺得 TLS1.0 的憑證不夠,都是能去 GCP 改其他等級的。
許多資料科學家或工程師在使用 GCP 進行 POC 實驗,SSL 憑證是令人頭痛的問題,建議透過 GCP 代管可以省下很多時間,讓心思放在 Application 開發上吧。