您可以設定自訂網域,而非使用 Cloud Run 為已部署服務提供的預設位址。
您可以透過下列幾種方式,為 Cloud Run 服務設定自訂網域:
- 使用全域外部應用程式負載平衡器 (建議)
- 使用 Cloud Run 網域對應 (有限供應和預先發布版)
- 使用 Firebase 託管
您可以將多個自訂網域對應至同一個 Cloud Run 服務。
事前準備
除非您已經有要使用的網域,否則請購買新網域。您可以使用任何網域名稱註冊商。
使用全域外部應用程式負載平衡器對應自訂網域
這個選項會在 Cloud Run 服務前方新增全域外部應用程式負載平衡器,並在負載平衡器層級設定自訂網域。
使用全域外部應用程式負載平衡器的優點之一,是您可以充分控管自訂網域設定。例如,您可以使用自己的 TLS 憑證,或將特定網址路徑轉送至 Cloud Run 服務。您也可以設定 Cloud CDN 進行快取,並設定 Google Cloud Armor 提高安全性。
您也可以使用網址遮罩,將多項服務對應至單一負載平衡器的自訂網域網址模式中的動態主機名稱或路徑,例如 <service>.example.com。
請參閱這份說明文件,瞭解如何設定具備 Cloud Run 的全域外部應用程式負載平衡器。
使用 Cloud Run 網域對應功能對應自訂網域 (有限供應和預先發布版)
Cloud Run 網域對應限制
Cloud Run 網域對應關係適用下列注意事項:
- Cloud Run 網域對應功能目前處於預先發布階段。由於延遲問題,這些功能不適用於正式環境,且正式發布版不支援。目前不建議將這個選項用於正式環境服務。
- 將服務對應至自訂網域時,系統會自動核發及更新 HTTPS 連線專用的 Google 代管憑證。
- 佈建 SSL 憑證通常需要約 15 分鐘,但最多可能需要 24 小時。
- 您無法停用 TLS 1.0 和 1.1。如果這是問題,您可以使用 Firebase 託管或 Cloud Load Balancing,啟用僅限 TLS 1.2 的流量。
- 您無法上傳及使用自己的 (自行管理) 憑證。
- Cloud Run 網域對應長度上限為 64 個字元。
- 網域對應功能適用於下列區域:
asia-east1asia-northeast1asia-southeast1europe-north1europe-west1europe-west4us-central1us-east1us-east4us-west1
- 如要對應其他區域的自訂網域,請使用其他對應選項。
- 使用 Cloud Run 網域對應時,您會將自訂網域對應至服務,然後更新 DNS 記錄。
- 您可以對應網域 (例如
example.com) 或子網域 (例如subdomain.example.com)。 - 您只能將網域對應至
/,無法對應至特定網址路徑,例如/users。 - 這項功能不支援萬用字元憑證。
將自訂網域對應至服務
您可以使用 Google Cloud 控制台、gcloud CLI 或 Terraform,將自訂網域對應至服務。
控制台
在 Google Cloud 控制台中開啟「Domain mappings」(網域對應) 頁面:
「Domain mappings」(網域對應) 頁面按一下 [新增對應]。
如果顯示視窗太小,系統就不會顯示「Add Mapping」(新增對應) 按鈕,您必須點選頁面角落的三點垂直省略符號圖示。
或者,按一下「Add custom URL」(新增自訂網址),並參閱「建立自訂網址」一節,瞭解這項設定。
從下拉式選單中,選取要對應自訂網域的服務。
選取「Cloud Run Domain Mappings」(Cloud Run 網域對應)。
在「Add mapping」(新增對應) 表單中,選取「Verify a new domain」(驗證新網域)。
在「Base domain to verify」(要驗證的基本網域) 欄位中,您必須先驗證網域擁有權,才能使用該網域,除非您是向 Google 購買網域。
如要對應
subdomain.example.com或subdomain1.subdomain2.example.com,您必須驗證example.com的擁有權。 如要進一步瞭解如何驗證網域擁有權,請參閱 Search Console 說明。按一下「繼續」。
網域驗證完成後,按一下「繼續驗證並關閉」。
使用上一步顯示的 DNS 記錄,在網域註冊商網站更新 DNS 記錄 。您隨時可以按一下網域對應「...」動作選單中的「DNS Records」(DNS 記錄),顯示記錄。
按一下「完成」。
gcloud
首次在 Google Cloud 專案中使用該網域時,必須驗證網域擁有權,除非您是向 Google 購買自訂網域。您可以執行下列指令,判斷要使用的自訂網域是否已通過驗證:
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
- 將
如要在部署服務時直接對應網域,請按照下列步驟操作:
gcloud beta run deploy SERVICE --image IMAGE --domain DOMAIN
- 將
SERVICE改成您的服務名稱。 - 將
IMAGE替換為容器映像檔。 - 將
DOMAIN替換為自訂網域。
- 將
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 供應商,請參閱「新增記錄」。
如果您為自訂網域使用憑證授權單位授權 (CAA) DNS 記錄,請授權 pki.goog 和 letsencrypt.org,讓 Cloud Run 可以核發及更新代管 TLS 憑證。詳情請參閱「指定可核發 Google 代管憑證的 CA」。
使用下列指令,擷取網域對應的 DNS 記錄資訊:
控制台
前往 Cloud Run 網域對應頁面:
網域對應頁面按一下服務右側的三點垂直省略符號圖示,然後按一下「DNS RECORDS」(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 控制台中開啟「Domain mappings」(網域對應) 頁面:
「Domain mappings」(網域對應) 頁面在「Domain mappings」(網域對應) 頁面中,選取要刪除的網域對應,然後按一下「Delete」(刪除)。
gcloud
刪除網域對應:
gcloud beta run domain-mappings delete --domain DOMAIN
- 將
DOMAIN替換為自訂網域,例如example.com或subdomain.example.com。
- 將
使用 Firebase 託管對應自訂網域
這個選項會在 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。
搭配使用自訂網域和已驗證服務
已驗證的服務受 IAM 保護。這類 Cloud Run 服務需要用戶端驗證,在憑證產生時宣告要求的預期接收者 (目標對象)。
目標對象通常是目標服務的完整網址,Cloud Run 服務預設會產生以 run.app 結尾的網址。
不過,如果您使用自訂網域,可以設定自訂目標對象,讓服務接受自訂網域做為有效目標對象。
後續步驟
- 瞭解如何保護 Cloud Run 服務。
- 如要使用全域外部應用程式負載平衡器,為 Cloud Run 設定自訂網域,請參閱「使用 Cloud Run 設定全域外部應用程式負載平衡器」。