![](/img/trans.png)
[英]How to properly configure k8s nginx ingress base url substitution to handle Angular client side routing (LocationStrategy)?
[英]How to call a golang API(clusterIP svc) from angular(clusterIP svc) in k8s with ingress present?
去版本:1.17
版本: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
这是可能的还是入口会干扰? 性能差异会是什么? (因为这是内部沟通)
我发现这是不可能的,尤其是当一个前端有客户端渲染时
因此,问题是当用户访问网页时,它会在客户端系统上呈现。 因此,我们无法找到fiber-service:3000/api/v1
所以,它必须通过入口调用,即http://lite.com/api/v1
如果是服务器端渲染,那么就可以调用服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.