我怀疑如何构建我的dockerized堆栈,在两个容器中简化以获得帮助:
如果没有Kubernetes,只需在一个节点上进行docker-compose, rest 只是在另一个端口上侦听,而且从Javascript开始,请求将转到 same_host:rest_port ,no问题在这里。
对于Kubernetes,我知道我需要使用Kubernetes的服务名称,例如" rest" (使服务本身透明),但该名称只能从提供静态资源的docker容器中看到。
我的问题:我是否需要将流量从NGINX转发到REST Api?例如,Kubernetes是否公开了可从Javascript使用的公共服务名称?
谢谢。
答案 0 :(得分:0)
对于Kubernetes,我知道我需要使用来自的服务名称 Kubernetes,类似于"休息" (使服务透明化 本身),但该名称只能从docker容器中看到 提供静态资源。
您的理解是正确的。 As long as you have a kube-dns add-on running in your cluster,您的服务名称为域名,可以在同一个kubernetes群集和名称空间中解析。换句话说,如你所说,"休息"只能在kubernetes集群中使用。
我的问题:我是否需要将流量从NGINX转发到REST Api? Kubernetes是否公开了可从Javascript使用的公共服务名称, 例如?
这是实现这一目标的一种方法。
优势这种方法是,您将避免所有同源策略/ CORS头痛,您的微服务(快速)身份验证详细信息将从用户的浏览器中抽象出来。 (这不一定是优势)。
缺点这种方法是,你的后端微服务(快速)将与前端紧密耦合(反之亦然,取决于你如何看待它),这将使缩放前端后端依赖。您的后端未暴露。所以,如果你有另一个消费者(只是说一个Android应用程序),它将无法访问你的服务。
创建入口(并在群集中使用入口控制器)并公开您的Microservice(Express)。