【发布时间】:2022-07-08 20:23:25
【问题描述】:
go 版本:1.17
ng 版本:9
这个项目由后端 svc 和部署、前端 svc 和部署组成, 入口
后端服务:
service/fiber-service ClusterIP 10.105.244.88 <none> 3000/TCP 43m
入口文件:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-lite-srv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: lite.com
http:
paths:
- path: /api/?(.*)
pathType: Prefix
backend:
service:
name: fiber-service
port:
number: 3000 # service port
- path: /?(.*) #need to check order
pathType: Prefix
backend:
service:
name: forms-service
port:
number: 80 # service port
目前我正在使用 HTTPClient 并在做
testUrl(url: string): Observable<any> {
return this._http.get(url)
}
以上代码来自我的前端,在按钮点击事件中调用
现在,在隧道之后,我可以在访问 http://lite.com 时访问前端 我可以通过http://lite.com/api/v1 或其他方式进行 API 调用
我想要实现的是通过服务名称调用后端 API
例如:fiber-service:3000/api/v1 作为上述函数的 url
基本上是 clusterIP 到 clusterIP 服务而不涉及 Ingress
这是可能的还是入口会干扰? 性能差异会是什么? (因为这是内部沟通)
【问题讨论】:
-
是的,有可能,它们生活在同一个命名空间中,对吧?
-
是的,默认命名空间
-
不可能,因为前端代码正在客户端计算机上运行,而不是在您的服务器上。
-
前端代码在浏览您页面的人的浏览器中运行。
-
^^^ 您的前端代码在使用您的网络应用程序的用户的浏览器中运行。如果您尝试向后端服务发出请求,用户计算机将不知道将该请求路由到何处,因为该主机没有 DNS 条目。
标签: angular docker kubernetes kubernetes-ingress