我在集群中运行了Sentry,我想使用nginx ingress在子路径上公开它,但它似乎只在根路径上工作,我尝试了几种方法,但都不起作用。有什么配置可以让它在子路径上工作吗?因为我在sentry.conf.py文件中看到了一些使用这两个变量的例子:
SENTRY_URL_PREFIX='/ssent'
FORCE_SCRIIPT_NAME='/ssent'
但我不知道是否有效
这是哨兵的入口资源:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: "sentry-ingress"
namespace: "tools"
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
labels:
app: sentry-ingress
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: "sentry"
servicePort: 9000
您的入口无法正常工作。
在nginxingress文档中,您可以阅读:
重要注意事项:如果在给定主机的任何Ingress上使用
use-regex
或rewrite-target
注释,则无论在什么Ingress上定义它们,都将对给定主机的所有路径强制使用不区分大小写的正则表达式位置修饰符。
这意味着当您使用重写目标注释时,path
字段值将被视为regexp,而不是前缀。这就是为什么path: /
仅与/
在字面上匹配。
所以,如果你想使用重写目标,你应该这样做:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: sentry-ingress
namespace: tools
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
labels:
app: sentry-ingress
spec:
rules:
- http:
paths:
- path: /sentry/(.*)
backend:
serviceName: sentry
servicePort: 9000