【发布时间】:2019-10-17 00:18:50
【问题描述】:
从 React JS 前端调用时,无法解析托管在 Minikube 上的 ClusterIP 服务的 API。
我的应用程序的基本架构如下 React --> .NET 核心 API
这两个组件都作为 ClusterIP 服务托管。我创建了一个入口服务,其中包含指向 React 组件和 .NET 核心 API 的 http 路径。
但是,当我尝试从浏览器调用它时,反应应用程序会呈现,但对 API 的调用失败并显示 网络::ERR_NAME_NOT_RESOLVED
以下是 .yml 文件
1。反应应用程序
apiVersion: v1
kind: Service
metadata:
name: frontend-clusterip
spec:
type: ClusterIP
ports:
- port: 59000
targetPort: 3000
selector:
app: frontend
2。 .NET 核心 API
apiVersion: v1
kind: Service
metadata:
name: backend-svc-nodeport
spec:
type: ClusterIP
selector:
app: backend-svc
ports:
- port: 5901
targetPort: 59001
3。入口服务
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: frontend-clusterip
servicePort: 59000
- path: /api/?(.*)
backend:
serviceName: backend-svc-nodeport
servicePort: 5901
4。前端部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
selector:
matchLabels:
app: frontend
replicas: 1
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: upendra409/tasks_tasks.frontend
ports:
- containerPort: 3000
env:
- name: "REACT_APP_ENVIRONMENT"
value: "Kubernetes"
- name: "REACT_APP_BACKEND"
value: "http://backend-svc-nodeport"
- name: "REACT_APP_BACKENDPORT"
value: "5901"
这是我在浏览器中遇到的错误:
xhr.js:166 GET
http://backend-svc-nodeport:5901/api/tasks net::ERR_NAME_NOT_RESOLVED
我在前端容器中安装 curl 以进入前端 pod 以尝试使用上述 URL 连接后端 API,但该命令不起作用
C:\test\tasks [develop ≡ +1 ~6 -0 !]> kubectl exec -it frontend-655776bc6d-nlj7z --curl http://backend-svc-nodeport:5901/api/tasks
Error: unknown flag: --curl
【问题讨论】:
-
未知标志 curl 是因为双破折号和 curl 之间没有空格。它应该是 --curl,而不是 --curl。
-
谢谢Suren,现在我得到了api的回复。但是本地机器中的浏览器仍然抛出同样的错误
-
你是如何从浏览器发出请求的?你不会
http://backend-svc-nodeport:5901/api/tasks对吧? -
@Upendra 你好,能否提供以下信息:集群环境、kubernetes 版本、网络插件和版本。
-
@Suren,我有一个在 minikube 中运行的 React JS 前端。
标签: reactjs kubernetes .net-core kubernetes-ingress