Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

目前 Knative 中默認支持是基於域名的轉發,但域名默認格式是:"{{.Name}}.{{.Namespace}}.{{.Domain}}"(這個可以在 config-network 配置)。但對於用戶來說並不能指定全域名。

另外一個問題就是基於Path 轉發的能力,很多情況下我們是基於一個域名,不同服務通過訪問路徑進行區分,但當前的Knative 默認是不支持設置 Path 轉發能力。

針對這兩個問題,我們在阿里雲 Knative 中提供了這樣的能力,用戶可以通過控制檯配置域名,並基於Path和Header進行轉發規則設置。

配置域名

登錄阿里雲容器服務控制檯,進入【Knative】-【組件管理】,點擊 Serving 組件【詳情】:

Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

進入詳情之後,選擇域名配置,添加自定義域名:

Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

這裡添加域名需要注意,Knative服務默認創建的域名是不允許添加的。哪些是默認創建的域名呢? 其實在Knative 中每創建一個服務都會創建對應的 VirtualService, 如 helloworld-go 對應的 VirtualService 中默認域名如下:

 hosts:
- helloworld-go.default
- helloworld-go.default.svc
- helloworld-go.default.svc.cluster.local

配置路由規則

登錄阿里雲容器服務控制檯,進入【Knative】-【服務管理】,選擇對應的服務。這裡我們選擇 helloworld-go 服務:

Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

進入服務詳情之後,選擇路由轉發頁籤, 創建路由規則:

Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

接下來我們分別說明基於路徑和 Header 的轉發。

基於路徑轉發

在路由規則中設置不通的路徑實現基於路徑的服務轉發, 這裡我們在 helloworld-go 服務中,選擇 hello.serverless.kuberun.com 域名並設置 /test 路徑:

Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

訪問頁面: http://hello.serverless.kuberun.com/test 結果如下:

Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

基於路徑與Header轉發

在 helloworld-go 服務中,選擇 hello.serverless.kuberun.com 域名並設置 /test 路徑, 並設置Header foo:bar:

Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

這時候如果我們再次直接訪問:http://hello.serverless.kuberun.com/test ,會發現無法訪問。這時候我們需要設置Header(可以通過ModHeader 插件設置請求Header)。

Knative 實戰:如何在 Knative 中配置自定義域名及路由規則

阿里雲雙11億元補貼提前領,進入抽取iPhone 11 Pro:https://www.aliyun.com/1111/2019/home?utm_content=g_1000083110


分享到:


相關文章: