对于本地开发,我有一个工作的minikube。我们有不同的服务部署。现在我想将前端连接到后端。Kubernetes前端和后端之间的通信
前端是一个角度的应用程序,并在其自己的服务生活。 后端是一个node.js应用程序,它也使用单独的服务并使用DNS连接到其他内部服务,如mongodb。
现在我想从前端与后端进行通信。 DNS不工作,因为前端不知道如何解析指定的路由。问题是告诉前端应该使用哪个后端URL和端口来发送请求?
当我首次启动具有类型NodePort的后端服务并将url和端口复制到前端目标URL时,唯一的工作状态被接近。我认为这对我来说很不洁净。有没有另一种方法将后端请求的URL加入前端?
我知道当我们在类型=“LoadBalancer”的生产系统上部署一项服务时,该服务通过外部IP公开,我可以从那里访问该服务。并且外部IP在pod更新等情况下将是永久的。我也看到的问题是,需要通过额外的提交将后端IP注入到Docker容器中。
编辑(1):后端服务
apiVersion: v1
kind: Service
metadata:
name: backend
labels:
app: some-app
tier: backend
spec:
type: NodePort
ports:
- port: 3000
selector:
app: some-app
tier: backend
编辑(2):当我从客户端请求与FQN我也得到这样的响应:
OPTIONS http://backend.default.svc.cluster.local:3000/signup/ net::ERR_NAME_NOT_RESOLVED
你揭露你服务后台?如果是的话,你应该已经定义了服务定义中的端口,并且你应该得到DNS解析说http:// backend:80/ –
@SebastienGoasguen我已经添加了后端服务定义。所以我已经为后端定义了端口3000,并且它也不可访问。我认为角度应用程序不知道如何解决DNS名称'后端'。 – Lunero
你可以用这个'backend.default.svc.cluster.local'来尝试fqn。您可能需要将默认值替换为您的名称空间。 – sfgroups