目標
在本教學課程中,您將瞭解下列內容:
- 建立 Compute Engine 執行個體範本與代管執行個體群組 (MIG)。
- 取得網域名稱與憑證。
- 建立 HTTPS 負載平衡器 ,並附加憑證。
- 啟用 IAP。
- 測試 IAP 是否正常運作。
費用
本教學課程使用 Google Cloud的計費元件,包括:
- Compute Engine
- 4 部虛擬機器 (VM)
- 網路
- 全域 負載平衡器轉送規則
- 輸入流量
如要根據預測用量估算費用,請參閱 Pricing Calculator。
事前準備
開始本教學課程前,請先備妥下列項目:
選取或建立 Google Cloud 專案。
前往「Projects」(專案) 頁面啟用專案的計費功能。瞭解如何修改專案的帳單設定。
步驟 1:建立 Compute Engine 範本
在 Google Cloud 控制台中,前往 「Compute Engine」 >「Create an instance template」(建立執行個體範本) 頁面,然後選取要建立範本的專案。
除下列選項以外,均使用預設值:
- 機型:
- micro (f1-micro)
- 存取權範圍:
- 針對各個 API 設定存取權
- Compute Engine:唯讀
- 防火牆:
- 允許 HTTP 流量
- 在「管理」區段的「自動化」>「開機指令碼」下方,複製並貼上下列指令碼:
值更新完畢後,點選「建立」即可建立範本。
步驟 2:建立代管執行個體群組
在 Google Cloud 控制台中,前往 「Compute Engine」 >「Create a new instance group」(建立新的執行個體群組) 頁面,然後選取要在其中建立代管執行個體群組的專案。
除下列選項以外,均使用預設值:
- Name (名稱):my-managed-instance-group
- Location (位置):多區域
- Instance template (執行個體範本):選取您在步驟 1 中建立的執行個體範本
- 執行個體數量:如要變更執行個體數量,必須先停用自動調度資源功能。
- Autoscaling mode (自動調度資源模式):不要自動調整資源配置
健康狀態檢查:選取「建立健康狀態檢查」,然後輸入下列值:
- Name (名稱):my-health-check
- Protocol (通訊協定):HTTP
點選「儲存並繼續」,即可使用新的健康狀態檢查。
更新完值之後,按一下 [Create] (建立),建立代管執行個體群組 (MIG)。
步驟 3:取得網域名稱與憑證
如要搭配 HTTPS 流量使用負載平衡器,您需要網域名稱和已簽署的憑證。您可以透過 Cloud Domains 註冊網域,也可以使用您選擇的網域註冊商。請先註冊網域再繼續。
設定您的憑證
建立憑證,向使用者識別您的網站。如要瞭解如何建立憑證,請參閱「使用 Google 代管的 SSL 憑證」。
您的 CA 必須驗證您是否擁有已註冊的網域名稱。在下列步驟中,您將建立 VM,向 CA 驗證網域。
建立 VM 以驗證您的網域擁有權
在 Google Cloud 控制台中,前往「Compute Engine」>「Create an instance」(建立執行個體) 頁面。
除下列選項以外,均使用預設值:
- Name (名稱):certbot-vm
- Machine type (機器類型):micro (f1-micro)
- 存取權範圍:
- 針對各個 API 設定存取權
- Compute Engine:讀取/寫入
- 開機磁碟映像檔:
- Debian GNU/Linux 9 (stretch)
- 防火牆:
- 允許 HTTP 流量
- 允許 HTTPS 流量
值更新完畢後,點選「建立」即可建立 VM 執行個體。請記下您剛建立的 VM 外部 IP 位址,在下一步中將會用到。
將網域設定為指向 VM
如要將網域設為指向 VM,請按照下列步驟設定 A 記錄:
- 登入網域代管商提供給您的網域帳戶。
- 尋找頁面以更新網域的 DNS 記錄。該頁面的名稱可能是「DNS 管理」、「名稱伺服器管理」或「進階設定」。
- 將 A 記錄變更為下列值:
- Name/Host/Alias (名稱/主機/別名):@
- 值:您在上方建立的 VM 外部 IP 位址,用於驗證網域擁有權。
- TTL (存留時間):註冊商的預設值,或 86400 (一天)。
- 等待 DNS 記錄更新。您新增的記錄最多需要一天時間才能傳播完畢。
詳情請參閱關於 A 記錄一文。
測試伺服器
如要測試伺服器是否正常運作,請按照下列步驟操作:
在 Google Cloud 控制台中,依序前往 「Compute Engine」 >「VM Instances」(VM 執行個體) 頁面。
前往「VM instances」(VM 執行個體) 頁面在「certbot-vm」的「Connect」(連線) 下,點選 [SSH]。
執行下列指令,在 VM 上執行較小的網路伺服器:
mkdir web cd web echo "Hello" > index.html sudo busybox httpd -v -f在網路瀏覽器中,前往您之前註冊的網域名稱。網路瀏覽器應會顯示
Hello,且 SSH 工作階段應會顯示包含... response:200的訊息。若並非如此,請等待幾分鐘,然後重複這個步驟。在測試成功之後,按下 Ctrl+C 來停止網路伺服器。
建立憑證
如要建立憑證,請在 VM 上執行下列指令,向 Let's Encrypt 註冊,其中 YOUR_DOMAIN 是您的網域名稱 (不含通訊協定):
sudo pkill busybox sudo apt-get install -y certbot sudo certbot certonly --standalone -d YOUR-DOMAIN
在這個過程中,Let's Encrypt 可能會要求您提供電子郵件地址,以便在憑證到期時傳送提醒 (預設為核發後的 3 個月)。您也必須同意 Let's Encrypt 的《服務條款》。
成功註冊後,系統會顯示「Congratulations! Your certificate and chain have been saved at...」訊息。
將憑證新增至專案
如要將憑證新增至您的專案,請在 VM 上執行下列指令:
sudo su cd /etc/letsencrypt/live/YOUR_DOMAIN gcloud compute ssl-certificates create my-cert --certificate=fullchain.pem --private-key=privkey.pem
成功建立憑證後,畫面會顯示類似以下的訊息:Created
[https://www.googleapis.com/compute/v1/projects/example-project/global/sslCertificates/my-cert]
請先關閉 SSH 工作階段再繼續。
步驟 4:建立負載平衡器
在開始這個步驟之前,請確保您已關閉在上一步中啟動的 SSH 工作階段。若已準備好,請按照下列步驟建立負載平衡器:
在 Google Cloud 控制台,依序前往 「Network Services」(網路服務) >「Create a load balancer」(建立負載平衡器) 頁面,然後選取要建立負載平衡器的專案。
前往「建立負載平衡器」頁面在 「HTTP(S) 負載平衡」下方,點選「開始設定」。
選取 「從網際網路到我的 VM」。
在顯示的「New external Application Load Balancer」(新增 外部應用程式負載平衡器) 頁面中,輸入負載平衡器的「Name」(名稱)。
按一下「後端設定」。
在「Backend services & backend buckets」(後端服務和後端 bucket) 下方,選取「Create a backend service」(建立後端服務)。
為後端服務新增名稱,例如
my-backend-service。
前往「Security」(安全性) 部分,然後選取「Enable IAP to secure access to your applications」(啟用 IAP 來安全地存取應用程式)。
Cloud CDN 和 IAP 不相容。如果您已啟用 Cloud CDN,並選取啟用 IAP,Cloud CDN 會自動停用。
點選「建立」。「Load balancing」(負載平衡) 頁面會載入,並在負載平衡器清單中顯示新的負載平衡器。
Google Cloud 控制台建立新的負載平衡器後,請點選負載平衡器的名稱,然後記下「詳細資料」>「前端」下方的外部 IP 位址,您會在下一個步驟中使用。
將網域設定為指向負載平衡器
如要將網域設為指向負載平衡器,請按照下列步驟設定 A 記錄:
- 登入網域代管商提供給您的網域帳戶。
- 尋找頁面以更新網域的 DNS 記錄。該頁面的名稱可能是「DNS 管理」、「名稱伺服器管理」或「進階設定」。
- 將 A 記錄變更為下列值:
- Name/Host/Alias (名稱/主機/別名):@
- 值:您先前建立的負載平衡器外部 IP 位址。請勿在 DNS 記錄中加入通訊埠
:443。 - TTL (存留時間):註冊商的預設值,或 86400 (一天)。
- 等待 DNS 記錄更新。您剛新增的記錄最多需要一天時間才能傳播完畢。
- 如要測試負載平衡器,請使用網路瀏覽器前往採用
https://通訊協定的網域。- 如果尚未設定負載平衡器,系統會顯示「HTTP 502」錯誤。
- 負載平衡器準備就緒後,您會看到「未經授權的要求」。
詳情請參閱關於 A 記錄一文。
重新啟動 VM
您必須在 MIG 中重新啟動 VM,才能透過 IAP 正確驗證要求。
- 在 Google Cloud 控制台中,依序前往
「Compute Engine」 >「Instance groups」(執行個體群組) 頁面。
前往「執行個體群組」頁面 - 點選「my-managed-instance-group」。
- 在顯示的執行個體群組詳細資料頂端,點選 [Rolling Restart/Replace] (輪動式重新啟動/取代)。
- 在「Restart/replace instances of my-managed-instance-group」(重新啟動/取代 my-managed-instance-group 的執行個體) 頁面,設定下列值:
- Operation (作業):重新啟動
- Maximum unavailable (無法使用的執行個體數量上限):3 個執行個體 (共 3 個執行個體)
- Minimum wait time (最短等待時間):0 秒
- 更新完值之後,按一下 [Restart] (重新啟動)。
步驟 5:設定 IAP
設定防火牆
接下來,設定防火牆來禁止存取基礎 VM,並僅允許透過 IAP 存取:
前往 Google Cloud 控制台的 「VPC network」(虛擬私有雲網路) >「Firewall rules」(防火牆規則)。
前往「防火牆規則」頁面勾選下列規則旁的核取方塊:
default-allow-http
default-allow-https
default-allow-internal
點選「刪除」。
點選「建立防火牆規則」,並設定下列值:
Name (名稱):allow-iap-traffic
Targets (目標):網路中的所有執行個體
「Source IP ranges」(來源 IP 範圍) (在欄位中貼上每個值後,按下 Enter 鍵):您必須允許來自這些 IP 位址範圍的流量,負載平衡器才能與後端通訊。
130.211.0.0/22
35.191.0.0/16
通訊協定和通訊埠:
指定的通訊協定和通訊埠
tcp:80
值更新完畢後,點選「建立」。
設定 IAP
請按照下列步驟,為專案設定 IAP:
1. 在 Google Cloud 控制台中,依序前往 「Security」(安全性) >「Identity-Aware Proxy」 頁面,然後選取要啟用 IAP 的專案。前往「Identity-Aware Proxy」頁面 1. 如果您尚未設定專案的 OAuth 同意畫面,系統會提示您進行設定:
-
前往 OAuth 同意畫面。
設定同意畫面 - 在「Support email」(支援電子郵件) 下方,選取您想顯示為公開聯絡人的電子郵件地址。電子郵件地址必須屬於目前登入的使用者帳戶,或是目前登入使用者擔任管理員或擁有者的 Google 群組。
- 輸入您想顯示的「Application name」(應用程式名稱)。
- 新增您想要的任何選填詳細資料。
- 按一下 [儲存]。
如要稍後變更 OAuth 同意畫面上的資訊 (例如產品名稱或電子郵件地址),請重複上述步驟以設定同意畫面。
1. 在「IAP」欄中, 1. 在隨即顯示的「啟用 IAP」視窗中,勾選「我已詳閱設定規定,並按照說明文件的指示設定 Compute Engine 資源。」旁的方塊。1. 按一下「啟用」。將主體新增至存取清單
接下來,將主體新增至專案的 IAP 存取清單。
- 在「Security」(安全性) >「Identity-Aware Proxy」右側的「Access」(存取權) 區段,點選「Add」(新增)。
- 輸入要授予存取權的主體 (包括您自己),並指派「受 IAP 保護的網頁應用程式使用者」角色。主體可以是:
- Google 帳戶:user@gmail.com
- Google 群組:admins@googlegroups.com
- 服務帳戶:server@example.gserviceaccount.com
- Google Workspace 網域:example.com
步驟 6:測試 IAP
如要測試 IAP 是否正常運作,請按照下列步驟操作:
1. 在網路瀏覽器中前往您的網域。如果看到「Unauthorized request」(未經授權的要求),請稍候幾分鐘再試。1. 看到 Google 登入畫面時,請使用您在上一個步驟中授予存取權的 Google 帳戶登入。1. 系統會顯示類似「Hi, user@example.com. I am my-managed-instance-group-29z6.」的訊息。1. 請重新整理頁面,瀏覽器應會顯示代管執行個體群組中 3 部機器的名稱。這個負載平衡器會將流量分配到群組中的 VM。恭喜!您已成功使用 IAP 啟用負載平衡服務。
清除所用資源
為避免因為本教學課程所用資源,導致系統向 Google Cloud 帳戶收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
完成 Compute Engine 的 IAP 設定後,您可以清除在 Google Cloud 上建立的資源,以免日後產生費用。下列各節將說明如何刪除或關閉這些資源。
刪除專案
如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。
刪除專案的方法如下:
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
刪除執行個體
如要刪除 Compute Engine 執行個體:
- 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
- 找出要刪除的執行個體,然後勾選對應的核取方塊。
- 如要刪除執行個體,請依序點選 >「More actions」(更多動作) 和「Delete」(刪除),然後按照指示操作。
刪除預設網路的防火牆規則
刪除防火牆規則:
- 前往 Google Cloud 控制台的「Firewall」(防火牆) 頁面。
- 找出要刪除的防火牆規則,然後勾選對應的核取方塊。
- 如要刪除防火牆規則,請按一下「 刪除」。