gpt4 book ai didi

docker - 如何定义/使用端点从 Javascript 连接到 Kubernetes

转载 作者:行者123 更新时间:2023-12-02 20:10:23 27 4
gpt4 key购买 nike

我对如何构建我的 dockerized 堆栈有疑问,在两个容器中简化以获得帮助:

  • static:NGINX 提供静态资源(JS/HTML)。
  • rest:用于 REST Api 的 express.js 后端。

  • 如果没有 Kubernetes,只需在节点上进行 docker-compose,rest 只是在不同的端口上监听,并且从 Javascript 中,请求转到 same_host:rest_port,这里没问题。

    对于 Kubernetes,我知道我需要使用来自 Kubernetes 的服务名称,例如“rest”(使服务本身透明),但该名称只能从为静态资源提供服务的 docker 容器中看到。

    我的问题:我需要将流量从 NGINX 转发到 REST Api 吗?例如,Kubernetes 是否公开了可从 Javascript 使用的公共(public)服务名称?

    谢谢你。

    最佳答案

    With Kubernetes, I understand that I need to use the service name from Kubernetes, something like "rest" (to make transparent the service itself), but that name would only be visible from the docker container serving the static resources.



    你的理解是正确的。 As long as you have a kube-dns add-on running in your cluster ,您的服务名称为域名可解析 在同一个 Kubernetes 集群和命名空间中 .换句话说,正如您所说,“rest”只能在 kubernetes 集群中使用。

    My question: do I need to forward traffic from NGINX to the REST Api? Does Kubernetes expose a public service name usable from Javascript, for example?



    这是实现这一目标的一种方法。

    优势 这种方法是,您将避免所有的同源策略/CORS 问题,您的微服务(快速)身份验证详细信息将从用户的浏览器中提取出来。 (这不一定是优势)。

    缺点这种方法的特点是,您的后端微服务(express)将与前端紧密耦合(反之亦然,具体取决于您如何看待它),这将使后端的扩展 依赖 在前端。您的后端未公开。因此,如果您有另一个消费者(我们只是说一个 android 应用程序),它将无法访问您的服务。

    另一种解决方案

    创建一个入口(并在集群中使用入口 Controller )并公开您的微服务(Express)。

    关于docker - 如何定义/使用端点从 Javascript 连接到 Kubernetes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47022519/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com