簡體   English   中英

如何在存在入口的k8s中從角度(clusterIP svc)調用golang API(clusterIP svc)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM