我有一个在容器中运行的web服务(dashboard-service
(。该服务提供所需的网页:
http://192.168.1.100:3000/page2/
http://192.168.1.100:3000/page3/
etc
我在kubernetes集群中运行了dashboard-service
,并希望使用ingress来控制访问,如下所示:
以便我可以访问:http://192.168.1.100:3000/dashboard/1
http://192.168.1.100:3000/dashboard/2
etc
我已经尝试了下面的入口设置,但得到了";404未找到";
有没有办法将路由添加到子路径?
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-service
namespace: db
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /dashboard/
pathType: Prefix
backend:
service:
name: dashboard-service
port:
number: 3000
首先,入口中没有以下配置
backend:
service:
name: dashboard-service
port:
number: 3000
你应该使用next。。
- backend:
serviceName: dashboard-service
servicePort: 3000
接下来,我建议您安装、配置和使用nginx ingress控制器,而不是常规的kubernetes ingress。另外请注意,如果你使用nginx控制器,你的注释应该是nginx.ingress.kubernetes.io/rewrite-target:
,而不是ingress.kubernetes.io/rewrite-target:
根据NGINX入口控制器重写文档,您的入口应该看起来像
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /page$2
name: dashboard-service
namespace: db
spec:
rules:
http:
paths:
- backend:
serviceName: dashboard-service
servicePort: 3000
path: /dashboard(/|$)(.*)
我在这里为您测试了regex和捕获组:https://regex101.com/r/3zmz6J/1