在本篇中,您將了解如何通過路由暴露服務。
服務和路由是什麼?
服務和路由對象允許您使用Kong Gateway向客戶端暴露服務。在配置對API的訪問時,您將從指定一個服務開始。在Kong Gateway中,服務是表示外部上游API或微服務的實體——例如,數據轉換微服務、賬單API等等。
服務的主要屬性是它的URL,服務在其中監聽請求。可以使用單個字元串指定URL,也可以分別指定其協議、主機、埠和路徑。
在開始對服務發出請求之前,需要向其添加一個路由。路由決定請求在到達Kong Gateway後如何(以及是否)發送到它們的服務。
單個服務可以有多個路由。配置好服務和路由後,您就可以開始通過Kong Gateway發出請求了。
此圖說明了通過服務路由到後端API的請求和響應的流量。
服務路由到後端API的請求和響應的流程
添加服務
出於本例的目的,您將創建一個指向Mockbin API的服務。Mockbin是一個「echo」類型的公共網站,它將請求作為響應返回給請求者。這種可視化將有助於了解Kong Gateway如何代理API請求。
Kong Gateway在埠8001上公開RESTful管理API。網關的配置(包括添加服務和路由)是通過請求Admin API完成的。
可以通過以下三種方式添加:
- Admin API
1.使用名稱example_service和URL http://mockbin.org定義服務。
使用cURL:
$ curl -i -X POST http://<admin-hostname>:8001/services
--data name=example_service
--data url='http://mockbin.org'
或者使用HTTPie:
$ http POST :8001/services name=example_service url='http://mockbin.org'
如果服務成功創建,您將收到一條201成功消息。
2.驗證服務的端點。
使用cURL:
$ curl -i http://<admin-hostname>:8001/services/example_service
或者使用HTTPie:
$ http :8001/services/example_service
- Kong Manager
1.在Kong Manager的Workspaces選項卡上,滾動到工作區部分並單擊默認工作區。這個示例使用默認的工作空間,但是您也可以創建一個新的工作空間,或者使用一個現有的工作空間。
2.向下滾動到Services並單擊Add a Service。
3.在創建服務對話框中,輸入名稱example_service和URL http://mockbin.org。
4.單擊Create。
服務被創建,頁面自動重定向回example_service概覽頁面。
- decK (YAML)
1.在Kong網關的kong.yaml文件中,定義一個名為example_service的服務,URL為http://mockbin.org:
_format_version: "1.1"
services:
- host: mockbin.org
name: example_service
port: 80
protocol: http
2.保存文件。從您的終端,同步配置以更新Kong:
$ deck sync
該消息應該顯示您正在創建一個服務:
creating service example_service
Summary:
Created: 1
Updated: 0
Deleted: 0
添加路由
要想通過Kong Gateway訪問該服務,您需要為其添加一個路由。
可以通過以下三種方式添加:
- Admin API
為客戶端請求的特定路徑服務(example_service)定義一個路由(/mock)。注意,要使路由與服務匹配,必須設置至少一個主機、路徑或方法。
使用cURL:
$ curl -i -X POST http://<admin-hostname>:8001/services/example_service/routes
--data 'paths[]=/mock'
--data name=mocking
或者使用HTTPie:
$ http :8001/services/example_service/routes paths:='["/mock"]' name=mocking
一條201消息表示路由已成功創建。
- Kong Manager
1.在example_service概覽頁面中,向下滾動到Route部分並單擊New Route。Create Route對話框將顯示自動填充服務名稱和ID號的服務欄位。此欄位是必需的。注意:如果服務欄位沒有自動填充,請單擊左側導航窗格中的Services。找到您的服務,單擊id欄位旁邊的剪貼板圖標,然後返回到創建路由頁面並將其粘貼到服務欄位。
2,為路由輸入一個名稱,以及至少以下欄位中的一個:主機、方法或路徑。對於這個例子,使用以下方法:
- 名字輸入「mock」。
- 路徑,單擊添加路徑並進入/mock。
3.單擊Create。
創建路由後,您將自動重定向回example_service概覽頁面。新路由出現在路由部分的下面。
- decK (YAML)
1.將以下內容粘貼到kong.yaml文件,在example_service條目下:
routes:
- name: mocking
paths:
- /mock
strip_path: true
你的文件現在應該是這樣的:
_format_version: "1.1"
services:
- host: mockbin.org
name: example_service
port: 80
protocol: http
routes:
- name: mocking
paths:
- /mock
strip_path: true
2.同步配置:
$ deck sync
3.你可以用Kong現在使用的配置更新你的本地文件(可選):
小心!任何後續的堆轉儲將覆蓋現有的kong.yaml文件。根據需要創建備份。
$ deck dump
另外,在同步對配置的更改時,您還將在decK顯示的差異中看到此配置。
你會注意到服務和路由現在都有了你沒有顯式設置的參數,這些是每個服務和路由創建時使用的默認參數:
services:
- connect_timeout: 60000
host: mockbin.org
name: example_service
port: 80
protocol: http
read_timeout: 60000
retries: 5
write_timeout: 60000
routes:
- name: mocking
paths:
- /mock
path_handling: v0
preserve_host: false
protocols:
- http
- https
regex_priority: 0
strip_path: true
https_redirect_status_code: 426
你可以這樣做後,任何deck同步看到Kong Gateway的最新配置。
本指南的其餘部分繼續使用配置文件的簡化版本,但不為每個步驟執行deck轉儲,以使其易於遵循。
驗證路由將請求轉發給服務
- Admin API
使用Admin API,發出以下信息:
使用cURL:
$ curl -i -X GET http://<admin-hostname>:8000/mock/request
或者使用HTTPie:
$ http :8000/mock/request
- Web瀏覽器
默認情況下,Kong在埠8000上處理代理請求。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231011.html