Cloud Run 接 DNS 的功能非常簡單,
除了幫你把網域解析到 Cloud Run 的網址,
還幫你做 HTTP Redirect 到 HTTPS,
你不需要額外使用 Load Balancer 或 Nginx 來 Redirect,
至於 HTTPS 不是要有 SSL 憑證嗎?
有的,GCP 一樣提供免費而且自動續約的憑證,
而且是 Google 自己的根憑證機構發行的憑證,
整個超方便!
當然你也可以使用自己的憑證喔!(不過要使用 Google Load Balancer)
這裡提供設定 DNS 名稱解析的方法。
假設我們已經做好一個 Cloud Run,
就可以直接點擊 Manage Custom Domains:

然後再點擊 Add Mapping:

你先選擇要解析的 Cloud Run 服務,
一方會看到有三種方法可以選擇,
我們就直接選 Cloud Run Domain Mappings:

接下來要選擇解析的網域,
如果你還沒驗證過網域,只會看到 Verify a new domain,
像我這邊有一堆網域,
大多是 blogspot.com 的,是 Google 的部落格服務 Blogger 的網域。
關於網域驗證的說明,可以參考驗證網站擁有權這篇文章。

選好主網域之後,再輸入子網域:

按繼續之後,第三步驟直接按 Done 即可。

但是還沒做完喔!
回到 Domain Mappings 的畫面,
你會看到它一直在轉圈圈,
它提示你要去設定 DNS 的對應:

但是要怎麼設呢?
你看到右邊 Actions 的三個小點,
有一個 DNS records:

點擊之後會看到提示你要設定 CName,
要把你的網域解析到 ghs.googlehosted.com 這個網址:

那我們就直接去設定 DNS 的頁面。
DNS 不一定在 GCP 上喔,這裡指的是你註冊 DNS (購買網域) 的地方,
你可能用的是 Hinet 的 DNS,或是國外的 GoDaddy 或 Namecheap 等等。
像我是在 GoDaddy 註冊 DNS 的,但是我已經轉移管理權限到 Cloud DNS 了。
我就在我的網域直接 ADD STANDARD:

然後把 cloudrun.dongdonggcp.com 解析 CName 到 ghs.googlehosted.com 這個網域:

ghs.googlehosted.com 它可以把所有 Cloud Run 用戶的網域,
解析到各個 Cloud Run 的原始網址,
你也不需要設定什麼 Cloud Run 的 IP (因為沒有特定的 IP)
,非常神奇。
設定好之後,你可以先去 Google Admin Toolbox,
確認 Google 的解析結果有沒有設定正確,
看起來會像這樣:

沒問題的話,大約等 20~30 分鐘,
就會看到綠色勾勾如下:

那我開無痕模式看看網站:

成功了!
如果你的 Cloud Run 服務突然中斷,
它會顯示服務不存在:

但只要你重新部署好,
它會自動又幫你解析,完全不用重新設定 CName 喔!
另外,你也可以輸入 http://cloudrun.dongdonggcp.com
它真的會自動轉成 https 喔,超方便!

我們也可以檢查憑證的細節,
點擊「已建立安全連線」:

再點擊「憑證有效」或右方箭頭顯示憑證:

就會看到憑證的內容:

這個憑證發行單位 Google Trust Services,
是 Google 自己的根憑證機構(Root Certificate Authority,Root CA),
代表自己的憑證自己發行,別人不能發行 Google 的憑證喔!
如果你原本花錢購買自己網域的憑證,
你也可以把錢省下來,是不是非常棒呢!
快來試試看吧!