我目前正在評估 Knative,但我肯定找不到在 URL 中使用路徑而不是子域來訪問服務的方法。
默認情況下,在創建服務時,URL 是這樣的:http://Name.Namespace.Domain我想要的是這樣的 http://Domain/Namespace/Name
有人知道這是否可能嗎?提前致謝,
塞德里克
uj5u.com熱心網友回復:
Knative 使用子域而不是 URL 路徑,因為底層容器可以處理許多不同的 URL,并且可能使用絕對 URL(根據部署可能指向不同的函式)或相對 URL(將指向當前應用程式內)對請求進行編碼。
如果您想在一個域名下映射多個 Knative 服務,您可以使用 Ingress 實作或 API 服務器,如Kong、Istio或許多其他服務。您將需要一個 HTTP 路由器,它可以重寫Host標頭以指向相關 Knative 服務的主機名;默認的 KubernetesIngress資源不公開此功能。
如果您選擇進行此設定,您還需要確定映射 URL 路徑的策略:您可以在將 URL 路徑傳遞給 Knative 服務時將其剝離,或者保留它們。剝離 URL 路徑可能更有意義,因為否則您最終需要在應用程式代碼和您選擇部署它的 和 之間建立依賴namespace關系name。
其他需要注意的問題:
- 由于所有 Knative 服務都位于一個主機名后面,因此它們將共享同一個 cookie 域,并且可能會無意中踩踏或毒害彼此的 cookie。
- 正如我上面提到的,絕對與相對 URL 參考。您的 HTTP 路由器可能無法在出站路徑上重新添加已剝離的 URL 前綴;如果您的 URL 是用 HTML 或 Javascript 構建的,而不是簡單地在 URL 標頭中構建,則更是如此。
- 在創建新服務時自動對 HTTP 路由器進行編程并不是自動化的——您需要自己進行。您還可以撰寫一個 Knative Service 來執行此路由,并使用 a
DomainMapping將該 Knative Service 映射到您想要的域名。然后,Knative 服務可以自動進行 URL 重寫,如果您愿意,您可以在出站上進行反向重寫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434284.html
標籤:Kubernetes 原生的 本地服务
