我正在尝试创建两个入口服务,一个将前端暴露到互联网,第二个将后端连接到前端。这是在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类上添加额外的注释,但这些信息可以在云提供商的文档中找到。