spring-boot - 基于 Kubernetes 入口路径的路由未按预期工作
问题描述
我在 kubernetes 集群中安装了NGINX Ingress 。当我试图通过入口控制器访问微服务端时,它没有按预期工作
我已经部署了两个 Spring Boot 应用程序
入口规则
- 路径 1 -> /客户
- 路径 2 -> /prac
当我尝试访问其中一项服务时。
http://test.practice.com/prac/practice/getprac,它不起作用
但是当我尝试在没有入口路径http://test.practice.com/practice/getprac的情况下访问时,它可以工作
我无法理解为什么 Ingress 路径无法正常工作,而其他服务也会发生同样的情况
微服务1(9090端口)
apiVersion: apps/v1
kind: Deployment
metadata:
name: customer
namespace: practice
labels:
app: customer
spec:
replicas: 5
selector:
matchLabels:
app: customer
template:
metadata:
labels:
app: customer
spec:
imagePullSecrets:
- name: testkuldeepsecret
containers:
- name: customer
image: kuldeep99/customer:v1
ports:
- containerPort: 9090
hostPort: 9090
---
apiVersion: v1
kind: Service
metadata:
name: customer-service
namespace: practice
labels:
spec:
ports:
- port: 9090
targetPort: 9090
protocol: TCP
name: http
selector:
app: customer
微服务2(8000端口)
apiVersion: apps/v1
kind: Deployment
metadata:
name: prac
namespace: practice
labels:
app: prac
spec:
replicas: 4
selector:
matchLabels:
app: prac
template:
metadata:
labels:
app: prac
spec:
imagePullSecrets:
- name: testkuldeepsecret
containers:
- name: prac
image: kuldeep99/practice:v1
ports:
- containerPort: 8000
hostPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: prac-service
namespace: practice
labels:
spec:
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app: prac
服务(客户服务和实践服务)
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
customer-service ClusterIP 10.97.203.19 <none> 9090/TCP 39m
ngtest ClusterIP 10.98.74.149 <none> 80/TCP 21h
prac-service ClusterIP 10.96.164.210 <none> 8000/TCP 15m
some-mysql ClusterIP None <none> 3306/TCP 2d16h
入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: practice-ingress
namespace: practice
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: practice.example.com
http:
paths:
- backend:
serviceName: customer-service
servicePort: 9090
path: /customer
- backend:
serviceName: prac-service
servicePort: 8000
path: /prac
解决方案
你已经安装了这个nginx 入口
nginx.ingress.kubernetes.io/rewrite-target: /
注释要正常工作,您需要安装此nginx ingress。
解决此问题的另一种方法是/prac
在 spring 应用程序中配置 contextPath
推荐阅读
- c# - 如何在活动目录中获取用户可以管理(添加/删除用户)的组列表
- python - Python - 升级到 3.9.1 后 bson 导入错误
- excel - 如何从 Google Analytics(分析)报告中获取真实数量的用户
- terraform - icmp 协议入口规则 aws_security_group 资源的 from_port 和 to_port 值?
- arrays - 文件指针数组的分段错误
- google-sheets - 根据所选月份填充日期行
- r - 跨不同标签的闪亮 cicerone 之旅
- javascript - 我只能通过 1/4 的测试
- java - 有没有办法使用 vaadin 8 自定义布局来修改父元素上的元素类属性?
- python - 如何从 DNS Python 响应中提取 SOA DNS 服务器