我有一个非常简单的场景: Ingress --> Service --> Pod 以及一些 Web 服务
需要什么:
somedomain.com/prefix1 --> 服务1
somedomain.com/prefix2 --> 服务2
somedomain.com/prefix3 --> Service3
仅适用于静态页面 如果 Web 服务重定向到任何其他路径,它确实知道这一点
/prefixN
,我可以看到浏览器正在尝试访问 /news
,但 Traefik 不知道有关此路径的任何信息,因此会失败。
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: stripprefix
spec:
stripPrefix:
prefixes:
- /speed
- /nginx
- /jenkins
...
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: services-ingress
annotations:
traefik.ingress.kubernetes.io/router.middlewares: default-stripprefix@kubernetescrd
spec:
rules:
- http:
paths:
- path: /speed
pathType: Prefix
backend:
service:
name: openspeedtest-service
port:
number: 80
- path: /nginx
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
- path: /jenkins
pathType: Prefix
backend:
service:
name: jenkins-service
Jenkins 的解决方法:我可以使用 Jenkins 的选项
--prefix=/jenkins
,但这并不是所有 Web 资源的通用解决方案。/
,但 Ingress 现在知道任何有关它的信息,并且无法正确路由流量。问题的答案是使用主机分离,而不是路径分离: 如何使用 ingress 在 kubernetes 中显示速度测试器