k3s
内部に Prometheus と Alertmanager がデプロイされたクラスターがありIngress
、それぞれにリソースを設定しています。私の初期設定はそれぞれprometheus.domain.com
とalermanager.domain.com
で、これらは期待どおりに機能しました。
domain.com/prometheus
ただし、それぞれに切り替えたいdomain.com/alertmanager
のですが、調査したオプションが機能していません。
GOAL
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
k3s クラスターをホストしている Vagrant ボックスに SSH で接続します。
$ 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
上記と同じ結果です。