建立自訂網址

本頁說明如何設定及管理自訂網址,讓您為 Cloud Run 服務取得簡單好記且全球通用的網址,而非預設的決定性網址:

  • 自訂網址格式:https://CUSTOM_SUBDOMAIN.cloud.run
  • 預設網址格式:https://SERVICE_NAME-PROJECT_NUMBER.REGION.run.app

使用自訂網址時,您不必設定自訂網域、DNS 記錄或外部負載平衡器,即可共用服務。

為 Cloud Run 服務使用自訂網址可享有下列優點:

  • 簡單網址:將服務對應至簡潔的 https://CUSTOM_SUBDOMAIN.cloud.run格式。
  • 全球適用:自訂網址可從任何地方存取,與標準 .run.app 網址相符。
  • 彈性生命週期:在服務之間彈性附加、卸離或移動自訂網址,不必部署新版本。
  • 多個對應:您可以將多個自訂網址對應至單一服務。

事前準備

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. 在 Google Cloud 專案中設定 Cloud Run 開發環境。
  4. 安裝並初始化 gcloud CLI。

必要的角色

如要取得管理自訂網址所需的權限,請要求管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

限制

  • 根據預設,每個專案最多可對應 50 個網域。
  • 自訂網址子網域的長度必須介於 6 至 63 個半形字元之間,符合標準 DNS 命名慣例 (允許使用英數字元和連字號),且開頭和結尾不得為連字號。
  • 部分子網域受到限制。
  • 您無法像停用預設 .run.app網址一樣,暫時停用自訂網址。如要停止從該對應項目放送流量,請刪除對應項目。
  • 不支援將輸入流量限制為「內部」或「內部和 Cloud Load Balancing」流量的 Cloud Run 服務。
  • Terraform 不支援自訂網址。為避免潛在的重大變更,請勿使用 Preview domain_mapping 資源。
  • 自訂網址完全獨立,如果選擇停用服務的預設 .run.app 網址,自訂網址對應仍會完全啟用並可供存取。

將自訂網址附加或對應至服務

部署新服務時,您可以附加自訂網址,也可以使用 Google Cloud 控制台或 gcloud,將自訂網址對應至現有服務。

將自訂網址附加至新服務

部署新的 Cloud Run 服務時,您可以附加自訂網址做為部署設定的一部分。

控制台

  1. 在 Google Cloud 控制台中,前往「Cloud Run」「Services」(服務) 頁面。

    前往 Cloud Run。

  2. 按一下「Deploy container」(部署容器)。

  3. 填寫服務的基本設定詳細資料。

  4. 在「自訂網址」部分,按一下「新增自訂網址」。

  5. 請輸入有效的自訂網址子網域。

  6. 選用。如要新增多個自訂網址,請再次按一下「新增自訂網址」。

  7. 點選「建立」。

gcloud

  • 從容器映像檔部署

    如要在初始容器部署期間,為 Cloud Run 服務建立自訂網址子網域對應,請執行下列指令:

    gcloud beta run deploy SERVICE \
        --image=IMAGE_URL \
        --domain=CUSTOM_SUBDOMAIN.cloud.run

    更改下列內容:

    • SERVICE:要部署的 Cloud Run 服務名稱。您可以省略這個參數,但如果省略,系統可能會提示您輸入服務名稱。
    • IMAGE_URL:容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
    • CUSTOM_SUBDOMAIN:要附加的子網域。
  • 從來源部署

    如要在初始來源部署期間為 Cloud Run 服務建立自訂網址子網域對應,請執行下列指令:

    gcloud beta run deploy SERVICE \
        --source=SOURCE \
        --domain=CUSTOM_SUBDOMAIN.cloud.run

    更改下列內容:

    • SERVICE:要部署的 Cloud Run 服務名稱。您可以省略這個參數,但如果省略,系統可能會提示您輸入服務名稱。
    • SOURCE:要建構的來源位置 (例如目前目錄的 .)。
    • CUSTOM_SUBDOMAIN:要附加的子網域。

如果要求的子網域已由其他使用者或服務 Google Cloud使用,您會收到錯誤訊息,且必須選擇專屬目標。

將自訂網址對應至現有服務

您可以使用Google Cloud 控制台或 gcloud CLI,將自訂網址對應至現有的 Cloud Run 服務。

控制台

  1. 前往 Google Cloud 控制台的「網域對應」頁面。

    前往「網域對應」頁面

  2. 按一下「新增自訂網址」。

  3. 在「服務」清單中,選取要對應的服務。

  4. 輸入自訂網址子網域。

  5. 按一下「繼續」。

如要新增多個自訂網址,請再次點選「新增自訂網址」,然後按照上述步驟操作。

gcloud

如要為現有服務建立自訂網址子網域對應,請執行下列指令:

gcloud beta run domain-mappings create \
    --service=SERVICE_NAME \
    --domain=CUSTOM_SUBDOMAIN.cloud.run

更改下列內容:

  • SERVICE_NAME:要對應自訂網址的服務名稱。
  • CUSTOM_SUBDOMAIN:要附加的子網域。

選用。如要使用 gcloud CLI 對應多個自訂網址,請針對每個自訂網址重複執行對應建立指令:

gcloud beta run domain-mappings create \
    --service=SERVICE_NAME \
    --domain=CUSTOM_SUBDOMAIN_1.cloud.run

gcloud beta run domain-mappings create \
    --service=SERVICE_NAME \
    --domain=CUSTOM_SUBDOMAIN_2.cloud.run

更改下列內容:

  • SERVICE_NAME:要部署的服務名稱。
  • CUSTOM_SUBDOMAIN_1:要附加的第一個子網域。
  • CUSTOM_SUBDOMAIN_2:要附加的第二個子網域。

如果要求的子網域已由其他使用者或服務使用 Google Cloud,您會收到錯誤訊息,且必須選擇不重複的目標。

列出及查看自訂網址

您可以列出所有自訂網址,並查看環境的對應詳細資料。

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面。

    前往 Cloud Run。

  2. 按一下服務名稱。

  3. 前往「網路」分頁。

  4. 在「Endpoints」(端點) 標籤下,找到「Custom domains」(自訂網域) 部分中附加的網址。

gcloud

如要列出專案中的所有自訂網址和網域對應,請執行下列指令:

gcloud beta run domain-mappings list

如要查看特定自訂網址子網域對應的詳細資料,請執行下列指令:

gcloud beta run domain-mappings describe \
    --domain=CUSTOM_SUBDOMAIN.cloud.run

將 CUSTOM_SUBDOMAIN 替換為要說明的子網域。

使用自訂目標對象確保安全

您可以將自訂目標對象附加至自訂網址,限制存取權。

gcloud beta run services update SERVICE_NAME \
    --add-custom-audiences=CUSTOM_SUBDOMAIN.cloud.run

更改下列內容:

  • SERVICE_NAME:服務名稱。
  • CUSTOM_SUBDOMAIN:做為自訂目標對象的子網域。

刪除自訂網址

如果不再需要自訂網址對應,可以刪除。

控制台

  1. 前往 Google Cloud 控制台的「網域對應」頁面。

    前往「網域對應」頁面

  2. 找出要刪除的自訂網址,然後勾選旁邊的核取方塊。

  3. 點選「刪除」。

gcloud

如要從 Cloud Run 服務中移除自訂網址子網域對應,請執行下列指令:

gcloud beta run domain-mappings delete \
    --domain=CUSTOM_SUBDOMAIN.cloud.run

將 CUSTOM_SUBDOMAIN 替換為要刪除的子網域。

已知問題

  • 傳播延遲:建立自訂網址後,可能需要幾秒鐘才能完全運作。建立網址後立即存取,可能會導致暫時的路由錯誤。

  • 更新或移動自訂網址:自訂網址沒有直接的更新指令。如要將附加的自訂網址從一個服務移至另一個服務,請按照刪除及重新建立流程操作。

    控制台

    1. 前往 Google Cloud 控制台的「網域對應」頁面。

      前往「網域對應」頁面

    2. 找出要移動的自訂網址,然後勾選旁邊的核取方塊。

    3. 點選「刪除」。

    4. 按一下「新增自訂網址」。

    5. 在「服務」清單中,選取新的目標服務。

    6. 輸入先前聲明的確切自訂網址子網域。

    7. 點選「建立」,將流量重新導向至新服務。

    gcloud

    1. 從舊服務中刪除現有對應:

      gcloud beta run domain-mappings delete \
          --domain=CUSTOM_SUBDOMAIN.cloud.run

      將 CUSTOM_SUBDOMAIN 替換為您先前聲明擁有的子網域。

    2. 回收網址並對應至新服務:

      gcloud beta run domain-mappings create \
          --service=NEW_SERVICE_NAME \
          --domain=CUSTOM_SUBDOMAIN.cloud.run

      更改下列內容:

      • NEW_SERVICE_NAME:要將自訂網址移至的服務名稱。
      • CUSTOM_URL_DOMAIN:要附加的子網域。

後續步驟