目標
在本教學課程中,您將瞭解下列內容:
- 建立 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 同意畫面,系統會提示您進行設定:
-
Go to the OAuth consent screen.
Configure consent screen - Under Support email, select the email address you want to display as a public contact. The email address must belong to the currently logged in user account or to a Google Group for which the currently logged in user is a manager or owner.
- Enter the Application name you want to display.
- Add any optional details you'd like.
- Click Save.
To change information on the OAuth consent screen later, such as the product name or email address, repeat the preceding steps to configure the consent screen.
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」(防火牆) 頁面。
- 找出要刪除的防火牆規則,然後勾選對應的核取方塊。
- 如要刪除防火牆規則,請按一下「 刪除」。