繁体   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