對應自訂網域

您可以設定自訂網域,而非 Cloud Run 為已部署服務提供的預設位址。

您可以透過幾種方式為 Cloud Run 服務設定自訂網域:

您可以將多個自訂網域對應至同一個 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 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,將自訂網域對應至服務。

控制台

  1. 在 Google Cloud 控制台中開啟網域對應頁面:
    網域對應頁面

  2. 按一下 [新增對應]。

    如果顯示視窗太小,系統不會顯示「新增對應」按鈕,您必須點選頁面角落的三點垂直橢圓圖示。

    或者,按一下「新增自訂網址」,然後參閱「建立自訂網址」一文,瞭解如何進行這項設定。

  3. 從下拉式清單中,選取要對應自訂網域的服務。

  4. 選取「Cloud Run 網域對應」。

  5. 在「新增對應」表單中,選取「驗證新網域」。

  6. 在「要驗證的基礎網域」欄位中,您必須先驗證網域擁有權,才能使用該網域 (除非您是向 Google 購買網域)。

    如要對應 subdomain.example.com 或 subdomain1.subdomain2.example.com,請務必驗證 example.com 的擁有權。 如要進一步瞭解如何驗證網域擁有權,請參閱 Search Console 說明。

  7. 按一下「繼續」。

  8. 完成網域驗證後,請按一下「繼續驗證並關閉」。

  9. 更新網域註冊機構網站的 DNS 記錄 ,使用上一步顯示的 DNS 記錄。如要隨時顯示記錄,請在網域對應的「...」動作選單中,按一下「DNS 記錄」。

  10. 按一下「完成」。

gcloud

  1. 首次在 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 說明。

  2. 將您的服務對應至自訂網域:

    • 如要將網域對應至現有服務,請按照下列步驟操作:

      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 檔案中新增下列項目:

resource "google_cloud_run_v2_service" "default" {
  name     = "custom-domain" # Replace with your service name
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" # Replace with your container image
    }
  }
}

更改項目:

  • 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 服務對應至自訂網域:

data "google_project" "project" {}

resource "google_cloud_run_domain_mapping" "default" {
  name     = "verified-domain.com"
  location = google_cloud_run_v2_service.default.location
  metadata {
    namespace = data.google_project.project.project_id
  }
  spec {
    route_name = google_cloud_run_v2_service.default.name
  }
}

將 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」。

  1. 使用下列方式,擷取網域對應的 DNS 記錄資訊:

    控制台

    1. 前往 Cloud Run 網域對應頁面:
      網域對應頁面

    2. 按一下服務右側的三點垂直橢圓圖示,然後點選「DNS 記錄」,即可顯示所有 DNS 記錄:

    選取 DNS 記錄

    gcloud

    gcloud beta run domain-mappings describe --domain [DOMAIN]

    將 [DOMAIN] 替換為自訂網域,例如 example.com 或 subdomain.example.com。

    您需要標題「resourceRecords」下傳回的所有記錄。

  2. 登入網域註冊商的帳戶,然後開啟 DNS 設定頁面。

  3. 前往您網域的設定頁面並找出「主機記錄」部分,然後新增您將網域對應到 Cloud Run 服務時取得的每一筆資源記錄。

  4. 在 DNS 供應商網站中將上述 DNS 記錄新增至帳戶時,請注意下列事項:

    • 選取上一步傳回的 DNS 記錄類型:A、AAAA 或 CNAME。
    • 使用名稱 www 對應至 www.example.com。
    • 使用名稱 @ 對應 example.com。
  5. 儲存您在網域帳戶 DNS 設定頁面上所做的變更。 在大多數情況下,這些變更會在幾分鐘內生效,但有時可能需要幾小時,具體時間取決於註冊機構和網域先前 DNS 記錄的存留時間 (TTL)。您可以使用 dig 工具 (例如線上dig版本),確認 DNS 記錄已成功更新。

  6. 如要測試是否成功,請瀏覽新網址的服務,例如 https://www.example.com。系統可能需要幾分鐘的時間,才會核發代管的 SSL 憑證。

將已驗證的網域擁有權授予其他使用者或服務帳戶

當使用者驗證網域時,系統只會對這個使用者帳戶驗證該網域。也就是說,只有這位使用者可以新增更多使用該網域的網域對應。因此,如要讓其他使用者能新增使用該網域的對應,您必須將其他使用者新增為已驗證的擁有者。

如要將網域的已驗證擁有者新增至其他使用者或服務帳戶,請透過 Search Console 頁面新增權限:

  1. 在網路瀏覽器中前往下列地址:

    https://search.google.com/search-console/welcome

  2. 在「資源」下方,點選要新增使用者或服務帳戶的網域。

  3. 前往「已驗證的擁有者」清單,按一下「新增擁有者」,然後輸入 Google 帳戶電子郵件地址或服務帳戶 ID。

    如要查看服務帳戶清單,請在 Google Cloud 控制台中開啟「服務帳戶」頁面:

    前往「Service Accounts」(服務帳戶) 頁面

刪除 Cloud Run 網域對應

您可以使用 Google Cloud 控制台或 gcloud CLI 刪除網域對應。

控制台

  1. 在 Google Cloud 控制台中開啟「網域對應」頁面:
    網域對應頁面

  2. 在「網域對應」頁面中,選取要刪除的網域對應,然後按一下「刪除」。

gcloud

  1. 刪除網域對應:

    gcloud beta run domain-mappings delete --domain DOMAIN
    • 將 DOMAIN 替換為自訂網域,例如 example.com 或 subdomain.example.com。

使用 Firebase 託管對應自訂網域

使用這個選項時,您可以在 Cloud Run 服務前方設定 Firebase 託管,並將網域連線至 Firebase 託管。

使用 Firebase 託管的費用不高,而且您可以選擇一併託管及提供靜態內容,與 Cloud Run 服務提供的動態內容並存。

如要使用 Firebase 託管對應自訂網域,請按照下列步驟操作:

  1. 將 Firebase 新增至 Google Cloud 專案。
  2. 安裝 Firebase CLI。
  3. 在與服務的原始碼不同的資料夾中,建立包含下列內容的 firebase.json 檔案:

      {
        "hosting": {
          "rewrites": [{
            "source": "**",
            "run": {
              "serviceId": "SERVICE_NAME",
              "region": "REGION"
            }
          }]
        }
      }
    

    將 SERVICE_NAME 和 REGION 替換為 Cloud Run 服務的名稱和區域。

  4. 部署 Firebase 託管設定:

    firebase deploy --only hosting --project PROJECT_ID
  5. 將自訂網域連結至 Firebase 託管。

進一步瞭解 Firebase 託管和 Cloud Run。

搭配已驗證服務使用自訂網域

通過驗證的服務受到 IAM 保護。 這類 Cloud Run 服務需要用戶端驗證,並在產生憑證時聲明要求的預期收件者 (對象)。

目標對象通常是目標服務的完整網址,Cloud Run 服務預設會產生以 run.app 結尾的網址。

不過,如果您使用自訂網域,可以設定自訂目標對象,讓服務接受自訂網域做為有效目標對象。

後續步驟