在kubernetes上创建Ingress服务,用于连接springboot [backend]到前端[angular]



我正在尝试创建两个入口服务,一个将前端暴露到互联网,第二个将后端连接到前端。这是在Minikube中,我启用了ingress addon

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: angular-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: angular.test
- http:
paths:
- path: /
pathType: Prefix  
backend:
service:
name: angular-service
port:
number: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: spring-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: springboot.test
- http:
paths:
- path: /exact/form-config/applicant/field?section=Additional%20Details&page-index=1&enabled-on=
pathType: Exact
backend:
service:
name: angular-service
port:
number: 8080

我想在我的springboot的angular应用程序中使用后端主机url的名称,我希望它们不使用IP连接,因为IP是动态的。这是正确的吗?

假设你的Angular应用中有这样一个服务:

apiVersion: v1
kind: Service
metadata:
name: your-angular-app
namespace: dev
spec:
selector:
app: your-angular-app
ports:
- protocol: TCP
port: 80
targetPort: 80
name: http

并在相同的命名空间中为Spring Boot应用程序提供一个服务,如下所示:

apiVersion: v1
kind: Service
metadata:
name: your-spring-app
namespace: dev
spec:
selector:
app: your-spring-app
ports:
- protocol: TCP
port: 80
targetPort: 80
name: http

确保你的部署(或者你用来在集群中实际创建应用实例的任何东西)有匹配的标签。部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
name: your-spring-app
namespace: dev
spec:
replicas: 1
selector:
matchLabels:
app: your-spring-app # <- this must match the spec.selector.app in the service

假设你的Spring应用提供了所有带有/api前缀的API端点,你可以使用这样的入口:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: your-ingress
namespace: dev
spec:
rules:
- host: your-site.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: your-angular-app
port:
name: http
- path: /api
pathType: Prefix
backend:
service:
name: your-spring-app
port:
name: http

在云环境中,您很可能需要在Ingress类上添加额外的注释,但这些信息可以在云提供商的文档中找到。

相关内容

最新更新