前言
先前在公司被分配到任務,需要透過google cloud cdn代理Kubernetes集群中的各種Web服務,包括前端和後端應用程式。
主要目的是隱藏Kubernetes集群的外部IP地址,以提高應用程式的安全性和可靠性。
建立執行個體群組
首先到Google Cloud 的控制台的左側側邊欄找到”執行個體群組”
點擊”建立執行個體群組”
選擇 unmanaged instance group
接著是設定個體群組的名稱以及位置
要注意個體群組的位置需要和VM的位置相同,否則會沒辦法選到VM喔
Network 的設定預設即可
VM 執行個體則選擇k8s master VM
設定完成後,點擊左下角的建立
大概等個10幾秒系統就建立完成囉!
建立負載平衡器
接下來需要建立負載平衡器(Load Balance)
搜尋”負載平衡”
點擊”建立負載平衡器”
選擇設定
接下來設置LB的前端(通訊協定選擇HTTPS)
IP位址因為目前為測試,所以選擇臨時即可,正式環境最好使用固定IP
憑證的部分使用個人的證書
設定完成後選擇下方的”完成”接著選擇左方的”後端設定”
再來要設定LB後端的部分
選擇建立後端服務
後端類型選擇”執行個體群組”,後端選擇剛才建立的執行個體群組
設定是LB的前端當接口,並代理到後端,也就是VM本身
所以LB後端的部分址需要開啟 80 port即可
點擊”完成”
接著看到下方的”快取模式”
建立”健康狀態檢查”
設定維持預設即可,點擊”儲存”
接下來點擊”建立”,創建後端服務
最後點擊”確定”後點擊”建立”創建LB
等個30秒應該可以看到LB前端產生的IP
將這組IP與和你自己的DNS A類型做綁定
ingress設定
LB建立完成後,還有web服務本身需要做設定
由於服務是透過k8s架設,所以需要進入k8s調整服務本身的ingress
需要調整的部分為以下:
ingress的annotations需要加入以下語法:
nginx.ingress.kubernetes.io/ssl-redirect: “false”TLS的部分請註解或是移除
目的是只要讓服務開通HTTP即可,並且不要啟動自動導向HTTPS的設定
在LB前端那會以HTTPS的形式呈現網頁,LB後端在接服務的80 port
這樣的架構有點像 nginx 在設置 API 反向代理時的設定
最後重新將web服務架起來即可
確認
LB和服務架起來後需要等待大概5分鐘左右
接著查看LB IP是否有正確連入服務
測試是否能連入網頁,以及證書是否正確
檢查服務對應的IP是否為LB IP
可以透過指令或是線上網站檢查
確認負載平衡/CDN的是否有取得流量
以上就是Google Cloud CDN整合 VM內的服務的整個流程,如果有任何問題都歡迎在底下留言🎉