使用Minikube和Kubernetes通过Angular Webapp连接到API
我试图学习Kubernetes,并想创建一个简单的示例,说明Docker容器中的一个角度前端连接到Docker容器上的.NET核心API。我能够成功地创建API和前端,并且可以在浏览中看到结果,但很难从前端的API中检索信息。由于API的IP发生变化,我无法在构建图像之前在Angular应用程序中硬编码这些值,但使用DNS名称似乎也不起作用 目前,我的Angular应用程序中有以下内容:使用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
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作为容器,它将代理传递到后端,更多信息。