我有一个k3s
包含 Prometheus 和 Alertmanager 部署的集群,并Ingress
为每个集群设置了一个资源。我的初始设置分别是prometheus.domain.com
和alermanager.domain.com
,并且这些都按预期工作。
但是,我想将它分别切换到domain.com/prometheus
和domain.com/alertmanager
,而我研究的选项不起作用。
目标
让我的 Prometheus 服务domain.com/prometheus
作为我的 Prometheus 路径的“根”工作,因此domain.com/prometheus/graph
根据其默认行为自动重定向到 ,并且 Prometheus 下的所有子路径(警报、配置、管理 API)都遵循相同的行为。
尝试#1
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
app: Prometheus
annotations:
traefik.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /prometheus($|/)(.*)
backend:
serviceName: prometheus
servicePort: 9090
通过 SSH 连接到托管我的 k3s 集群的 Vagrant box:
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS
prometheus <none> * 192.168.0.200 80
$ curl 192.168.0.200/prometheus
404 page not found
$ curl 192.168.0.200/prometheus/graph
404 page not found
尝试#2
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
app: Prometheus
annotations:
traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip
spec:
rules:
- http:
paths:
- path: /prometheus
backend:
serviceName: prometheus
servicePort: 9090
结果与上述相同。