kubernetes - Knative 服务 URL

标签 kubernetes knative knative-serving

我目前正在评估 Knative,但我确实找不到在 URL 中使用路径而不是子域来访问服务的方法。

默认情况下,创建服务时,URL 的格式如下:http://Name.Namespace.Domain我想要的是这样的 http://Domain/Namespace/Name

有人知道这是否可能吗? 提前致谢,

塞德里克

最佳答案

Knative 使用子域而不是 URL 路径,因为底层容器可以处理许多不同的 URL,并且可能使用绝对 URL(这可能指向不同的函数,具体取决于部署)或相对 URL(这将指向当前应用程序内)对请求进行编码)。

如果您想在单个域名下映射多个 Knative 服务,您可以使用 Ingress 实现或 API 服务器,如 Kong , Istio ,或许多其他。您将需要一个 HTTP 路由器,它可以重写 Host header 以指向相关 Knative 服务的主机名;默认的 Kubernetes Ingress 资源不公开此功能。

如果您选择进行此设置,您还需要决定映射 URL 路径的策略:您可以在将 URL 路径传递到 Knative 服务时将其剥离,也可以将其保留。去掉 URL 路径可能更有意义,否则您最终将需要应用程序代码与您拥有的 namespacename 之间存在依赖关系选择将其部署在。

其他需要注意的问题:

  • 由于所有 Knative 服务都位于同一个主机名后面,因此它们将共享相同的 Cookie 域,并且可能会无意中破坏或毒害彼此的 Cookie。
  • 正如我上面提到的,绝对 URL 引用与相对 URL 引用。您的 HTTP 路由器可能无法在出站路径上重新添加剥离的 URL 前缀;如果您的 URL 是用 HTML 或 Javascript 构建的,而不是简单地在 URL header 中构建的,则情况会加倍。
  • 在创建新服务时自动对 HTTP 路由器进行编程并不是自动化的 - 您需要自己执行此操作。您还可以编写 Knative 服务来执行此路由并使用 DomainMapping将该 Knative 服务映射到您所需的域名。然后 Knative Service 可以自动进行 URL 重写,如果您愿意,您可以在出站上进行反向重写。

关于kubernetes - Knative 服务 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71268823/

相关文章:

kubernetes - 在 Kubernetes 中,如何使用 Ingress 实现 session 关联?

kubernetes - 访问 Cloud Run on GKE 服务的奇怪方式

go - 如何使用代码生成器生成自定义资源定义的代码

kubernetes - 在 knative 服务定义中更改公共(public) url

google-cloud-run - 如何增加部署在 GKE 上的 Google Cloud Run 服务的 15 分钟请求超时?

git - GitOps 与传统 CI/CD 的区别

ssl - 容器引擎 kubernetes 和 ssl

computer-science - Kubernetes 白皮书

go - 列出服务