![](/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.