我的集群中运行着Sentry,我想用nginx ingress将它暴露在子路径上,但似乎它只在根路径上工作,我试了几种方法,但都不行。有没有什么配置可以让它在子路径上运行,因为我在sentry.conf.py文件中看到一些使用这两个变量的例子。
SENTRY_URL_PREFIX = 'sentry' FORCE_SCRIPT_NAME = 'sentry'。
但我不知道它是否有效
这里是sentry的ingress资源。
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
你的 ingress 不能正常工作。
在 nginx入口文档 您可以阅读。
重要提示: 如果
use-regex
或rewrite-target
注解被用于给定主机的任何Ingress,那么不区分大小写的正则表达式 位置修饰语 将在给定主机的所有路径上强制执行,无论它们被定义在哪个Ingress上。
也就是说,当你使用rewrite-target注解时。path
字段值被视为regexp而不是前缀。这就是为什么 path: /
是与字面意思相匹配的,而且只与 /
.
因此,如果你想使用rewrite-target,你应该按以下方式操作。
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