gpt4 book ai didi

reactjs - React App 与 Go 后端 api 通信

转载 作者:IT王子 更新时间:2023-10-29 02:28:15 28 4
gpt4 key购买 nike

我有一个前端 React 应用程序和一个 Go 后端服务作为前端的 API。两者都是同一命名空间中的 Kubernetes 服务。如何在不使用外部 IP 的情况下与 Go 后端服务通信?我让它与外部 ip 一起工作,但是,我无法让 fqdn 像它应该的那样正确解析。前端服务是从 nginx:1.15.2-alpine docker 镜像构建的。如何让前端 React 应用程序与后端 Go 服务器通信?

前端服务.yaml:

apiVersion: v1
kind: Service
metadata:
name: ui
namespace: client
labels:
app: ui
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
selector:
app: ui

前端部署.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ui
namespace: client
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 2
template:
metadata:
labels:
app: ui
spec:
containers:
- name: ui
image: #######
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80

后端服务.yaml:

apiVersion: v1
kind: Service
metadata:
name: api
namespace: client
labels:
app: api
spec:
type: NodePort
ports:
- port: 8001
protocol: TCP
targetPort: http
name: http
selector:
app: api

后端部署.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: api
namespace: client
labels:
name: api
spec:
replicas: 1
revisionHistoryLimit: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: ####
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8001

最佳答案

React 应用程序不在 Kubernetes 中运行。也许您有一个在 Kubernetes 中运行的开发服务器,但它只是将 HTML 和 Javascript 文件提供给在集群外运行的浏览器。浏览器中的应用程序不知道这个“Kubernetes”的东西,无法解析 Kubernetes 内部的 ...svc.cluster.local 主机名;它需要一种与集群对话的方式。

由于您已将后端配置为 NodePort 类型服务,因此您可以查找后端的外部可见端口,然后在所服务的浏览器应用程序中将后端 URL 配置为集群中某个节点上的该端口号。这有点困惑和手动。

更好的方法是配置一个 ingress例如,https://.../ 为您的浏览器应用程序提供服务,而 https://.../api 则进入您的后端。然后后端 URL 可以只是裸路径 /api,它将被解释为与 UI 相同的主机名和方案。

关于reactjs - React App 与 Go 后端 api 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56918987/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com