Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Minikube和Kubernetes通过Angular Webapp连接到API_Angular_Docker_Kubernetes_.net Core_Minikube - Fatal编程技术网

使用Minikube和Kubernetes通过Angular Webapp连接到API

使用Minikube和Kubernetes通过Angular Webapp连接到API,angular,docker,kubernetes,.net-core,minikube,Angular,Docker,Kubernetes,.net Core,Minikube,我试图学习Kubernetes,并想创建一个简单的示例,说明Docker容器中的一个角度前端连接到Docker容器上的.NET核心API。我能够成功地创建API和前端,并且可以在浏览中看到结果,但很难从前端的API中检索信息。由于API的IP发生变化,我无法在构建图像之前在Angular应用程序中硬编码这些值,但使用DNS名称似乎也不起作用 目前,我的Angular应用程序中有以下内容: SERVER_URI: 'http://budgetlist-api:50605/' backend-ap

我试图学习Kubernetes,并想创建一个简单的示例,说明Docker容器中的一个角度前端连接到Docker容器上的.NET核心API。我能够成功地创建API和前端,并且可以在浏览中看到结果,但很难从前端的API中检索信息。由于API的IP发生变化,我无法在构建图像之前在Angular应用程序中硬编码这些值,但使用DNS名称似乎也不起作用

目前,我的Angular应用程序中有以下内容:

SERVER_URI: 'http://budgetlist-api:50605/'
backend-api.service.yaml

apiVersion: v1
kind: Service
metadata:
  name: bucketlist-api
spec:
  selector:
    app: bucketlist-api
  ports:
    - protocol: TCP
      port: 50605
  type: ClusterIP
apiVersion: v1
kind: Service
metadata:
  name: bucketlist-app
spec:
  selector:
    app: bucketlist-app
  ports:
    - protocol: TCP
      port: 4200
      targetPort: 4200
  type: NodePort
前端-app.service.yaml

apiVersion: v1
kind: Service
metadata:
  name: bucketlist-api
spec:
  selector:
    app: bucketlist-api
  ports:
    - protocol: TCP
      port: 50605
  type: ClusterIP
apiVersion: v1
kind: Service
metadata:
  name: bucketlist-app
spec:
  selector:
    app: bucketlist-app
  ports:
    - protocol: TCP
      port: 4200
      targetPort: 4200
  type: NodePort
我的Angular应用程序的Dockerfile是:

FROM node:12.2.0
WORKDIR /app

COPY package.json ./

RUN npm install
RUN npm install -g @angular/cli

COPY . .

CMD ng serve --host 0.0.0.0

我不确定还需要什么,但如果需要,我很乐意添加更多信息。任何帮助都是非常感谢的,因为我一直在努力解决这个问题

您的后端服务是ClusterIP,因此只能从Minikube集群内部访问它 Angular正在从集群外部运行(从浏览器)

您应该将后端服务类型更改为NodePort或LoadBalancer。或者使用入口控制器

apiVersion: v1
kind: Service
metadata:
  name: bucketlist-api
spec:
  selector:
    app: bucketlist-api
  ports:
    - protocol: TCP
      port: 50605
      nodePort: 30100
  type: NodePort
并将服务器URI用作

SERVER_URI: 'http://budgetlist-api:30100/'

我假设问题是您在minikube上有2个部署和2个服务,您可以使用ip而不是dns名称进行连接?您能否将部署分为一个部署并卷曲另一个dns服务?例如,我有一些ubuntu pod和nginx pod,它们都带有服务,我执行ubuntu pod并使用
curl-v my nginx
(nginx服务),响应是
http/1.1200 OK
。你能做一些这样的事情,让我知道它是否适合你,或者你可以只卷曲端点(IP)?嗨,这是正确的。因此,我为我的后端api提供了一个部署/服务,为我的angular应用程序提供了一个部署/服务。我照你的建议做了
kubectl exec-it前端应用程序--/bin/bash
然后
curl-v后端api
这返回了相同的集群ip地址,就像我要做
kubectl get service
一样,所以如果我正确地取消了对您的访问,并且两个应用程序之间的连接都很好,那么这将是我不熟悉的角度代码本身,从kubernetes方面,我可以建议使用nginx作为容器,它将代理传递到后端,更多信息。