您可以設定自訂網域,取代 Cloud Run 提供給已部署服務的預設位址。
您可以透過幾種方式為 Cloud Run 服務設定自訂網域:
- 使用全域外部應用程式負載平衡器 (建議)
- 使用 Firebase 託管
- 使用 Cloud Run 網域對應 (僅限部分地區,預先發布版)
您可以將多個自訂網域對應至同一個 Cloud Run 服務。
事前準備
除非您已經有要使用的網域,否則請購買新網域。您可以向任何網域名稱註冊商購買網域。
使用全域外部應用程式負載平衡器對應自訂網域
使用這個選項時,您會在 Cloud Run 服務前方新增全域外部應用程式負載平衡器,並在負載平衡器層級設定自訂網域。
使用全域外部應用程式負載平衡器的一項優點是,您可以充分掌控自訂網域設定。舉例來說,您可以透過這項功能使用自己的 TLS 憑證,或將特定網址路徑導向 Cloud Run 服務。您也可以設定 Cloud CDN 進行快取,以及設定 Google Cloud Armor 提升安全性。
您也可以使用網址遮罩,將多項服務對應至單一負載平衡器的自訂網域網址模式中的動態主機名稱或路徑,例如 <service>.example.com
。
請參閱這份文件,瞭解如何設定全域外部應用程式負載平衡器搭配 Cloud Run。
使用 Firebase Hosting 對應自訂網域
使用這個選項時,您會在 Cloud Run 服務前方設定 Firebase 託管,並將網域連結至 Firebase 託管。
使用 Firebase 託管的費用不高,而且您也可以選擇一併託管及提供靜態內容,與 Cloud Run 服務提供的動態內容並存。
如要使用 Firebase 託管對應自訂網域,請按照下列步驟操作:
- 將 Firebase 新增至 Google Cloud 專案。
- 安裝 Firebase CLI。
在與服務原始碼不同的資料夾中,建立包含下列內容的
firebase.json
檔案:{ "hosting": { "rewrites": [{ "source": "**", "run": { "serviceId": "SERVICE_NAME", "region": "REGION" } }] } }
將 SERVICE_NAME 和 REGION 換成 Cloud Run 服務的名稱和區域。
部署 Firebase 託管設定:
firebase deploy --only hosting --project PROJECT_ID
進一步瞭解 Firebase 託管和 Cloud Run。
使用 Cloud Run 網域對應功能對應自訂網域 (僅限預先發布版)
Cloud Run 網域對應限制
Cloud Run 網域對應有以下注意事項:
- Cloud Run 網域對應目前處於預先發布版推出階段。 由於延遲問題,這些功能尚未準備好用於正式環境,因此正式發布時不會提供支援。目前不建議將這個選項用於正式版服務。
- 將服務對應至自訂網域時,系統會自動核發並續訂用於 HTTPS 連線的 Google 代管憑證。
- 佈建 SSL 憑證通常約需 15 分鐘,但最多可能會耗費 24 小時。
- 您無法停用 TLS 1.0 和 1.1。如果這是問題所在,您可以使用 Firebase Hosting 或 Cloud Load Balancing,只允許 TLS 1.2 流量。
- 您無法上傳及使用自己的 (自行管理的) 憑證。
- Cloud Run 網域對應關係長度不得超過 64 個字元。
- 網域對應功能適用於下列區域:
asia-east1
asia-northeast1
asia-southeast1
europe-north1
europe-west1
europe-west4
us-central1
us-east1
us-east4
us-west1
- 如要在其他區域對應自訂網域,請使用其他對應選項。
- 使用 Cloud Run 網域對應時,您可以將自訂網域對應至服務,然後更新 DNS 記錄。
- 您可以對應網域 (例如
example.com
) 或子網域 (例如subdomain.example.com
)。 - 您只能將網域對應至
/
,無法對應至特定網址路徑,例如/users
。 - 這項功能不支援萬用字元憑證。
將自訂網域對應至服務
您可以使用 Google Cloud 控制台、gcloud CLI 或 Terraform,將自訂網域對應至服務。
控制台
在 Google Cloud 控制台中開啟網域對應頁面:
網域對應頁面按一下 [新增對應]。
如果顯示視窗太小,畫面不會顯示「新增對應」按鈕,您必須點選頁面角落的三點垂直刪節號圖示。
從下拉式清單中,選取要對應自訂網域的服務。
選取「Cloud Run 網域對應」。
在「新增對應」表單中,選取「驗證新網域」。
在「要驗證的基礎網域」欄位中,除非您是向 Google 購買網域,否則必須先驗證網域的擁有權,才能使用該網域。
如要對應
subdomain.example.com
或subdomain1.subdomain2.example.com
,必須驗證example.com
的擁有權。如要進一步瞭解驗證擁有權,請參閱Search Console 說明按一下「繼續」。
完成網域驗證後,按一下「繼續驗證並關閉」。
前往網域註冊商網站,使用最後一步顯示的 DNS 記錄更新您的 DNS 記錄 。 您隨時都可以顯示記錄,只要在網域對應 [...] 動作選單中按一下「DNS 記錄」即可。
按一下 [完成]。
gcloud
除非您是向 Google 購買自訂網域,否則在 Google Cloud 專案中第一次使用該網域時,必須先驗證網域的擁有權。如要判斷要使用的自訂網域是否已通過驗證,請執行下列指令:
gcloud domains list-user-verified
如果您必須驗證網域擁有權,請開啟 Search Console 驗證頁面:
gcloud domains verify BASE-DOMAIN
其中
BASE-DOMAIN
是您要驗證的基本網域。舉例來說,如要對應subdomain.example.com
,您必須驗證example.com
的擁有權。在 Search Console 中完成網域擁有權驗證。詳情請參閱 Search Console 說明。
將您的服務對應至自訂網域:
gcloud beta run domain-mappings create --service SERVICE --domain DOMAIN
- 將
SERVICE
改成您的服務名稱。 - 將
DOMAIN
改成您的自訂網域,例如example.com
或subdomain.example.com
- 將
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
如要建立 Cloud Run 服務,請在現有的 main.tf
檔案中新增下列項目:
取代:
custom-domain
改為您的 Cloud Run 服務名稱。us-docker.pkg.dev/cloudrun/container/hello
,並參照容器映像檔。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的形狀為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。
將 Cloud Run 服務對應至自訂網域:
將 verified-domain.com
改成您已驗證的自訂網域,例如 example.com
或 subdomain.example.com
。
將 DNS 記錄新增到網域註冊商的系統中
將服務對應至 Cloud Run 中的自訂網域之後,接著必須更新您放在網域註冊商的 DNS 記錄。為方便作業,Cloud Run 會產生並顯示您必須輸入的 DNS 記錄。您必須將這些指向 Cloud Run 服務的記錄新增到網域註冊商那裡,以使對應生效。
如果您使用 Cloud DNS 做為 DNS 供應商,請參閱「新增記錄」。
使用下列方式,擷取網域對應的 DNS 記錄資訊:
控制台
前往 Cloud Run 網域對應頁面:
網域對應頁面按一下服務右側三點垂直刪節號圖示,然後按一下「DNS 記錄」顯示所有的 DNS 記錄:
gcloud
gcloud beta run domain-mappings describe --domain [DOMAIN]
將
[DOMAIN]
改成您的自訂網域,例如example.com
或subdomain.example.com
。您需要顯示在
resourceRecords
標題底下的所有記錄。在網域註冊商服務中登入您的帳戶,然後開啟 DNS 設定頁面。
前往您網域的設定頁面並找出「主機記錄」部分,然後新增您將網域對應到 Cloud Run 服務時取得的每一筆資源記錄。
將上述 DNS 記錄全部新增至您在 DNS 供應商的帳戶時:
- 選取上一步傳回的 DNS 記錄類型:
A
、AAAA
或CNAME
。 - 使用名稱
www
對應至www.example.com
。 - 使用名稱
@
對應example.com
。
- 選取上一步傳回的 DNS 記錄類型:
儲存您在網域帳戶 DNS 設定頁面上所做的變更。 通常這些變更只要幾分鐘就能生效,不過在某些情況下可能要耗費數小時,時間長短取決於註冊商,以及網域中任何之前 DNS 記錄的存留時間 (TTL)。您可以使用
dig
工具 (例如線上dig
版本),確認 DNS 記錄是否已成功更新。前往服務的新網址 (例如
https://www.example.com
),測試是否成功。核發代管 SSL 憑證可能需要幾分鐘的時間。
將已驗證的網域擁有者新增至其他使用者或服務帳戶
當使用者驗證網域時,系統只會對這個使用者帳戶驗證該網域。也就是說,只有這位使用者可以新增更多使用該網域的網域對應。因此,如要讓其他使用者能新增使用該網域的對應,您必須將其他使用者新增為已驗證的擁有者。
如果必須將您網域的已驗證擁有者新增至其他使用者或服務帳戶,您可以透過「Search Console」頁面新增權限:
在網路瀏覽器中前往下列網址:
在「Properties」(屬性) 底下,按一下要新增使用者或服務帳戶的網域。
前往「已驗證擁有者」清單,按一下「新增擁有者」,然後輸入 Google 帳戶電子郵件地址或服務帳戶 ID。
如要查看服務帳戶清單,請在 Google Cloud 控制台中開啟「Service Accounts」(服務帳戶) 頁面:
刪除 Cloud Run 網域對應
您可以使用 Google Cloud 控制台或 gcloud CLI 刪除網域對應。
控制台
在 Google Cloud 控制台中開啟「網域對應」頁面:
網域對應頁面在「網域對應」頁面中,選取要刪除的網域對應,然後按一下「刪除」。
gcloud
刪除網域對應關係:
gcloud beta run domain-mappings delete --domain DOMAIN
- 將
DOMAIN
改成您的自訂網域,例如example.com
或subdomain.example.com
。
- 將
透過已驗證的服務使用自訂網域
通過驗證的服務會受到 IAM 保護。 這類 Cloud Run 服務需要用戶端驗證,在產生憑證時聲明要求的預期收件者 (即對象)。
目標對象通常是目標服務的完整網址,Cloud Run 服務預設會產生以 run.app
結尾的網址。不過,如果您使用自訂網域,可以設定自訂目標對象,讓服務接受自訂網域做為有效目標對象。