我目前正在评估 Knative,但我肯定找不到在 URL 中使用路径而不是子域来访问服务的方法。
默认情况下,在创建服务时,URL 是这样的:http://Name.Namespace.Domain我想要的是这样的 http://Domain/Namespace/Name
有人知道这是否可能吗?提前致谢,
塞德里克
我目前正在评估 Knative,但我肯定找不到在 URL 中使用路径而不是子域来访问服务的方法。
默认情况下,在创建服务时,URL 是这样的:http://Name.Namespace.Domain我想要的是这样的 http://Domain/Namespace/Name
有人知道这是否可能吗?提前致谢,
塞德里克
Knative 使用子域而不是 URL 路径,因为底层容器可以处理许多不同的 URL,并且可能使用绝对 URL(根据部署可能指向不同的函数)或相对 URL(将指向当前应用程序内)对请求进行编码。
如果您想在一个域名下映射多个 Knative 服务,您可以使用 Ingress 实现或 API 服务器,如Kong、Istio或许多其他服务。您将需要一个 HTTP 路由器,它可以重写Host
标头以指向相关 Knative 服务的主机名;默认的 KubernetesIngress
资源不公开此功能。
如果您选择进行此设置,您还需要确定映射 URL 路径的策略:您可以在将 URL 路径传递给 Knative 服务时将其剥离,或者保留它们。剥离 URL 路径可能更有意义,因为否则您最终需要在您的应用程序代码和您选择部署它的 和 之间建立依赖namespace
关系name
。
其他需要注意的问题:
DomainMapping
将该 Knative Service 映射到您想要的域名。然后,Knative 服务可以自动进行 URL 重写,如果您愿意,您可以在出站上进行反向重写。