本指南說明如何設定 Google Cloud網址對應項目。網址對應是一組規則,用於將傳入的 HTTP(S) 要求轉送至特定後端服務 或後端值區。最簡單的網址對應涵蓋所有傳入要求路徑 (/*
)。
在您依循這份指南操作之前,請先熟悉網址對應概念。
網址對應可與下列 Google Cloud 產品搭配使用:
與全域外部應用程式負載平衡器、區域性外部應用程式負載平衡器、內部應用程式負載平衡器和 Cloud Service Mesh 搭配使用的網址對應功能,也支援多項進階流量管理功能。詳情請參閱「網址對應概念:進階流量管理」。
網址對應預設值
網址對應有兩個預設值,如下表所示。
預設類型 | 設定 | 意義 |
---|---|---|
網址對應預設值 | gcloud compute url-maps create
|
如果沒有任何路徑比對器或主機規則與收到的網址相符,就會使用指定的預設後端服務 或後端值區 。 |
路徑比對器預設值 | gcloud compute url-maps add-path-matcher
|
如果網址路徑與路徑比對器相符,但沒有任何指定的 --path-rules 相符,系統就會使用指定的預設後端服務 或後端值區 。 |
主機規則
主機規則定義了一組要用來比對要求的主機。
在主機規則中,主機名稱必須是完整網域名稱 (FQDN)。主機名稱不得是 IPv4 或 IPv6 位址。例如:
- 作品:
example.com
- 作品:
web.example.com
- 作品:
*.example.com
- 無法運作:
35.244.221.250
設定網址對應
網址對應可將流量傳送至後端服務或後端值區。區域性外部應用程式負載平衡器和內部應用程式負載平衡器不支援後端值區。
主控台
如要使用 Google Cloud 控制台新增網址對應,請按照下列步驟操作:
- 前往「負載平衡」頁面。
- 按一下負載平衡器的「名稱」。
- 在「Load Balancer Details」(負載平衡器詳細資料) 頁面中,按一下所選負載平衡器的「Edit」(編輯) 圖示 。
- 選取 [Host and path rules] (主機與路徑規則)。
- 按一下 [Add host and path rule] (新增主機與路徑規則)。
請填寫「Host」(主機) 或「Path」(路徑) 欄位,或者兩者皆填,然後選取後端服務 或後端值區。
- 請輸入完整且符合資格的主機名稱,例如
web.example.com
。 - 輸入路徑,例如
/video
。 - 在「Host and path rules」(主機與路徑規則) 頁面上,於「Backends」選單中,選取可用的後端服務 或後端值區。
- 請輸入完整且符合資格的主機名稱,例如
確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。
gcloud
如要使用 Google Cloud CLI 新增網址對應,請使用 url-maps create
指令:
gcloud compute url-maps create URL_MAP_NAME \ (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \ [--description DESCRIPTION] \ [--global | --region=REGION]
針對區域性外部應用程式負載平衡器和內部應用程式負載平衡器,建立網址對應時請務必加入 --region
旗標。
如要建立路徑比對器,請使用 gcloud compute url-maps add-path-matcher
指令:
gcloud compute url-maps add-path-matcher URL_MAP_NAME \ (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \ --path-matcher-name PATH_MATCHER \ [--path-rules="PATH=SERVICE or BUCKET"]
此指令需要有預設的後端服務 或後端值區 ,這樣才能將不相符的要求傳送到預設後端服務上。--path-rules
旗標會定義要求路徑與後端服務 或值區之間的對應。以下範例會將要求路徑 /video/
和 /video/*
轉送至 video-service
後端服務:
--path-rules="/video=video-service,/video/*=video-service"
如要建立主機規則,請使用 gcloud compute url-maps add-host-rule
指令:
gcloud compute url-maps add-host-rule URL_MAP_NAME \ --hosts=[HOSTS] --path-matcher-name=PATH_MATCHER
舉例來說,下列 --hosts
值會比對 www.example.com
和 altostrat.com
的任何子網域:
--hosts=[*.altostrat.com,www.example.com]
如要變更網址對應的預設服務 或預設值區 ,請使用 url-maps set-default-service
指令:
gcloud compute url-maps set-default-service URL_MAP_NAME (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE)[GCLOUD_WIDE_FLAG ...]
Terraform
如要建立全域網址對應,請使用 google_compute_url_map 資源。
如要建立地區網址對應,請使用 google_compute_region_url_map 資源。
驗證網址對應設定
在部署網址對應之前,請務必驗證網址對應設定,確保對應會依預期將要求轉送至適當的後端。您可以在網址對應設定中加入測試,您可以嘗試不同的網址對應規則,並視需要執行多項測試,確保對應會在部署時適當地轉送流量。此外,如果日後需要變更任何規則,您可以在實際發布新設定前先測試這些變更。
使用 gcloud compute url-maps
validate
指令驗證網址對應設定。這項指令只會測試提供的設定。無論測試是否通過,系統都不會將任何變更儲存至已部署的網址對應項目。這項行為與其他網址對應指令 (edit
、import
) 不同,後者雖然也會執行相同的測試,但會在測試通過後實際儲存新設定。如要測試新的路由設定,但不變更已部署的網址對應,請使用 validate
指令。
validate
指令可讓您測試進階路徑設定,例如根據標頭和查詢參數進行轉送、HTTP 到 HTTPS 的重新導向,以及重新撰寫網址。
主控台
您無法使用 Google Cloud 主控台驗證網址對應設定。請改用 gcloud
或 REST API。
gcloud
如要驗證網址對應設定,請使用 gcloud compute url-maps validate
指令。
全域外部應用程式負載平衡器:
gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
針對傳統版應用程式負載平衡器:
gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \ --load-balancing-scheme=EXTERNAL \ --global
- PATH_TO_URL_MAP_CONFIG_FILE:請將此路徑替換為包含網址對應設定的檔案路徑,以便進行驗證。
驗證對現有負載平衡器網址對應所做的變更
如果您有需要變更網址對應的現有負載平衡器,可以在變更生效前先測試這些設定變更。
將負載平衡器現有的網址對應匯出為 YAML 檔案。
gcloud compute url-maps export URL_MAP_NAME \ --destination PATH_TO_URL_MAP_CONFIG_FILE \ --global
編輯 YAML 檔案,加入新的設定。舉例來說,如果您想編輯外部應用程式負載平衡器,並將所有路徑為
/video
的要求傳送至名為video-backend-service
的新後端服務,可以按照下列方式,在網址對應設定中新增測試:現有的網址對應設定,其中包含單一預設
web-backend-service
:kind: compute#urlMap name: URL_MAP_NAME defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
編輯網址對應設定,新增路徑比對器,並測試預設
web-backend-service
和新的video-backend-service
後端服務:kind: compute#urlMap name: URL_MAP_NAME defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service hostRules: - hosts: - '*' pathMatcher: pathmap pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service name: pathmap pathRules: - paths: - /video - /video/* service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service tests: - description: Test routing to existing web service host: foobar path: / service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service - description: Test routing to new video service host: foobar path: /video service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
驗證新設定。
gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
如果所有測試都通過,您應該會看到成功訊息,例如:
Successfully validated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_CONFIG_FILE_NAME]
如果測試失敗,系統會顯示錯誤訊息。請對網址對應設定檔進行必要的修正,然後再次嘗試驗證。
Error: Invalid value for field 'urlMap.tests': ''. Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.
確認新設定可正常運作且不會影響現有設定後,即可將其匯入網址對應項目。請注意,這個步驟也會部署含有新設定的網址對應。
gcloud compute url-maps import URL_MAP_NAME \ --source PATH_TO_URL_MAP_CONFIG_FILE \ --global
在網址對應中加入測試
您可以為網址對應新增設定測試,確保網址對應會依預期將要求轉送至後端服務或後端值區。
本節說明如何在已部署的網址對應中加入測試。如果您想測試網址對應的新變更,但不想實際部署地圖,請參閱「驗證網址對應設定」。
編輯網址對應時,系統會執行測試,如果測試失敗,系統會顯示錯誤訊息:
Error: Invalid value for field 'urlMap.tests': ''. Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.
您可以自行選擇是否要在網址對應中加入測試。
主控台
如何在 Google Cloud 主控台執行測試:
- 前往「負載平衡」頁面。
- 按一下負載平衡器的「名稱」。
- 在「Load Balancer Details」(負載平衡器詳細資料) 頁面上,按一下所選負載平衡器的「Edit」(編輯) 圖示 。
- 按一下「轉送規則」。對於傳統版應用程式負載平衡器,則是「主機與路徑規則」。
- 按一下「顯示設定測試」。
- 按一下「新增設定測試」。加入以下測試網址和後端:
- 測試主機和路徑 1
example.com
與後端www-service.
- 測試主機和路徑 2
example.net
和後端www-service.
- 測試主機和路徑 3
example.net/web
和後端www-service.
- 測試主機和路徑 4
example.com/videos
和後端video-service.
- 測試主機和路徑 5
example.com/videos/browse
和後端video-service.
- 測試主機和路徑 6
example.net/static
和後端static-service.
- 測試主機和路徑 7
example.net/static/images
和後端static-service.
- 測試主機和路徑 1
- 確認「Routing rules」左邊出現了藍色勾號,然後按一下「Update」按鈕。如果是傳統版應用程式負載平衡器,請找出「Host and path rules」(主機與路徑規則) 旁邊的藍色勾號。
gcloud
如要使用 Google Cloud CLI 在網址對應中新增測試,請使用 gcloud compute url-maps edit
指令:
gcloud compute url-maps edit URL_MAP_NAME
這會啟動文字編輯器。如果使用的是外部應用程式負載平衡器,測試必須使用下列格式:
tests: - host: example.com service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service - host: example.net service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service - host: example.com path: /videos service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service - host: example.com path: /videos/browse service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service - host: example.net path: /web service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service - host: example.net path: /static service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service - host: example.net path: /static/images service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service
請注意,如果未在主機規則中指定主機,來自所有主機的網址 (包含 example.com 與 example.net) 都會符合規則。如果您有主機規則,就必須建立同時符合 example.com 與 example.net 的規則。
列出網址對應
主控台
您無法在 Google Cloud 控制台中列出所有網址對應項目。
gcloud
如要使用 Google Cloud CLI 顯示網址對應的清單,請使用 url-maps list
指令。
gcloud compute url-maps list
取得網址對應的資訊
主控台
若要取得網址對應的資訊,請依照下列步驟操作:
- 前往「負載平衡」頁面。
- 按一下負載平衡器的「名稱」。
- 在「Load Balancer Details」(負載平衡器詳細資料) 頁面上,按一下所選負載平衡器的「Edit」(編輯) 圖示 。
- 檢視「Host and path rules」(主機與路徑規則)。
gcloud
如要使用 Google Cloud CLI 取得單一網址對應的資訊,請使用 url-maps describe
指令。
gcloud compute url-maps describe URL_MAP_NAME
刪除網址對應
您必須先刪除所有參考該網址對應的目標 Proxy,才能刪除網址對應。詳情請參閱「刪除目標 Proxy」。
主控台
如需刪除網址對應,請依照下列步驟操作:
- 前往「負載平衡」頁面。
- 按一下負載平衡器的「名稱」。
- 在「Load Balancer Details」(負載平衡器詳細資料) 頁面上,按一下所選負載平衡器的「Edit」(編輯) 圖示 。
- 在「Load Balancer Details」(負載平衡器詳細資料) 頁面上,檢視「Host and path rules」(主機與路徑規則)。
- 按一下網址對應旁的「X」,即可刪除網址對應。網址對應就會消失。
- 確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。
gcloud
如要使用 Google Cloud CLI 刪除網址對應,請使用 url-maps delete
指令。刪除網址對應前,必須先刪除任何參考該網址對應的目標 HTTP Proxy。
gcloud compute url-maps delete URL_MAP_NAME [--quiet]
刪除路徑比對器
主控台
如要刪除路徑比對器,請依照下列步驟操作:
- 前往「負載平衡」頁面。
- 按一下負載平衡器的「名稱」。
- 在「Load Balancer Details」(負載平衡器詳細資料) 頁面上,按一下所選負載平衡器的「Edit」(編輯) 圖示 。
- 選取 [Host and path rules] (主機與路徑規則)。
- 在現有網址對應的「Paths」(路徑) 欄位,按一下路徑比對器名稱上的「x」。
- 確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。
gcloud
如要刪除路徑比對器,請使用 gcloud compute url-maps remove-path-matcher
指令:
gcloud compute url-maps remove-path-matcher URL_MAP_NAME \ [--path-matcher-name PATH_MATCHER]
刪除主機規則
主控台
若要刪除主機規則,請依照下列步驟操作:
- 如果尚未進入「Host and path rules」(主機與路徑規則) 頁面,請前往「Load balancing」(負載平衡) 頁面。
- 按一下負載平衡器的「名稱」。
- 在「Load Balancer Details」(負載平衡器詳細資料) 頁面上,按一下所選負載平衡器的「Edit」(編輯) 圖示 。
- 選取 [Host and path rules] (主機與路徑規則)。
- 在現有網址對應的「Hosts」(主機) 欄位中,按一下主機名稱上的「x」。
- 確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。
gcloud
如要從網址對應中刪除主機規則,請使用 gcloud compute url-maps remove-host-rule
指令:
gcloud compute url-maps remove-host-rule URL_MAP_NAME --host=HOST
舉例來說,若要移除的主機規則,包含來自名為 my-map
網址對應的主機 altostrat.com
,您需要執行下列指令:
gcloud compute url-maps remove-host-rule my-map --host altostrat.com
流量管理指南
並非所有產品都支援所有網址對應功能。網址對應可搭配負載平衡器使用,支援多項進階流量管理功能,但並非所有功能都支援傳統版應用程式負載平衡器。
請參閱下表,瞭解管理工作中的網址對應功能。
產品 | 網址對應功能和流量管理指南 |
---|---|
全域外部應用程式負載平衡器 | 負載平衡器功能:轉送和流量管理 |
傳統版應用程式負載平衡器 | 負載平衡器功能:轉送和流量管理 |
區域性外部應用程式負載平衡器 | 負載平衡器功能:轉送和流量管理 |
內部應用程式負載平衡器 | 負載平衡器功能:轉送和流量管理 |
Cloud Service Mesh | Cloud Service Mesh 功能:路由和流量管理 |
API 和 gcloud CLI 參考資料
除了 Google Cloud 控制台之外,您也可以使用 API 和 gcloud CLI 建立網址對應。
API
如需透過 REST API 使用網址對應項目時可用的屬性和方法說明,請參閱以下內容:
產品 | API 說明文件 |
---|---|
外部應用程式負載平衡器 | urlMaps |
內部應用程式負載平衡器 | regionUrlMaps |
Cloud Service Mesh | urlMaps |
gcloud CLI
如要瞭解 Google Cloud CLI 中的 Google Cloud CLI,請參閱以下內容:
- 全域:
--global
- 地區性:
--region=[REGION]
如要進行進階流量管理,請使用 YAML 檔案,並透過 gcloud compute url-maps import
指令匯入這些檔案。
後續步驟
- 如要瞭解網址對應的運作方式,請參閱網址對應總覽。
- 如要瞭解網址對應在外部應用程式負載平衡器中的作用方式,請參閱「外部應用程式負載平衡器總覽」。
- 如要瞭解網址對應在內部應用程式負載平衡器中的作用方式,請參閱「內部應用程式負載平衡器總覽」一文。