0%

整合Google Cloud CDN 與 GCP VM 上的 K8s Ingress

前言

先前在公司被分配到任務,需要透過google cloud cdn代理Kubernetes集群中的各種Web服務,包括前端和後端應用程式。

主要目的是隱藏Kubernetes集群的外部IP地址,以提高應用程式的安全性和可靠性。

建立執行個體群組

首先到Google Cloud 的控制台的左側側邊欄找到”執行個體群組”

instance-group

點擊”建立執行個體群組”

create-instance-group

選擇 unmanaged instance group

unmanaged-instance-group

接著是設定個體群組的名稱以及位置

要注意個體群組的位置需要和VM的位置相同,否則會沒辦法選到VM喔

create-instance-group-2.png

Network 的設定預設即可

VM 執行個體則選擇k8s master VM

設定完成後,點擊左下角的建立

create-instance-group-3.png

大概等個10幾秒系統就建立完成囉!

create-instance-group-4.png

建立負載平衡器

接下來需要建立負載平衡器(Load Balance)

搜尋”負載平衡”

LB-1

點擊”建立負載平衡器”

LB-2

選擇設定

LB-3

接下來設置LB的前端(通訊協定選擇HTTPS)

IP位址因為目前為測試,所以選擇臨時即可,正式環境最好使用固定IP

LB-4

憑證的部分使用個人的證書

LB-5

設定完成後選擇下方的”完成”接著選擇左方的”後端設定”

再來要設定LB後端的部分

LB-6

選擇建立後端服務

LB-7

後端類型選擇”執行個體群組”,後端選擇剛才建立的執行個體群組

設定是LB的前端當接口,並代理到後端,也就是VM本身

所以LB後端的部分址需要開啟 80 port即可

LB-8

點擊”完成”

LB-9

接著看到下方的”快取模式”

建立”健康狀態檢查”

LB-10

設定維持預設即可,點擊”儲存”

LB-11

接下來點擊”建立”,創建後端服務

LB-12

最後點擊”確定”後點擊”建立”創建LB

LB-13

等個30秒應該可以看到LB前端產生的IP

LB-14

將這組IP與和你自己的DNS A類型做綁定

LB-15

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 反向代理時的設定

ingress

最後重新將web服務架起來即可

確認

LB和服務架起來後需要等待大概5分鐘左右

接著查看LB IP是否有正確連入服務

  • 測試是否能連入網頁,以及證書是否正確

    check-1

  • 檢查服務對應的IP是否為LB IP

    可以透過指令或是線上網站檢查

    check-2

    check-3

  • 確認負載平衡/CDN的是否有取得流量

    check-4

    check-5

以上就是Google Cloud CDN整合 VM內的服務的整個流程,如果有任何問題都歡迎在底下留言🎉