访问prometheus服务器的入口路由规则

Imr*_*han 3 kubernetes prometheus kubernetes-ingress

我已经在 kubernetes(1.17.3) 上部署了 prometheus 服务器(2.13.1),我可以在http://my.prom.com:9090

但我想访问它,http://my.prom.com:9090/prometheus所以我添加了以下入口规则,但它不起作用

第一次尝试:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/app-root: /prometheus
  name: approot
  namespace: default
spec:
  rules:
  - host: my.prom.com
    http:
      paths:
      - backend:
          serviceName: prometheus-svc
          servicePort: 9090
        path: /
Run Code Online (Sandbox Code Playgroud)

这会导致 404 错误

第二次尝试:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  rules:
  - host: my.prom.com
    http:
      paths:
      - backend:
          serviceName: prometheus-svc
          servicePort: 9090
        path: /prometheus(/|$)(.*)
Run Code Online (Sandbox Code Playgroud)

现在,当我在浏览器中访问 URL 时,http://my.prom.com:9090/prometheus它会更改为http://my.prom.com:9090/graph并显示 404 错误

Mar*_*ney 6

普罗米修斯不知道你想要实现什么,这就是它重定向到未知目的地的原因。

您必须告诉普罗米修斯接受新路径上的流量,如此处此处所示

突出显示第二个链接,您必须将- "--web.route-prefix=/"和包含- "--web.external-url=http://my.prom.com:9090/prometheus"在您的普罗米修斯部署中。

然后我必须修改 prometheus 部署以接受新 路径 ( /prom ) 上的流量。使用基本身份验证确保 Prometheus API 和 UI 端点安全文档中对此进行了介绍 :

在你的环境中它应该看起来像这样:

> grep web deploy.yaml 
            - "--web.enable-lifecycle"
            - "--web.route-prefix=/"
            - "--web.external-url=http://my.prom.com:9090/prometheus"
Run Code Online (Sandbox Code Playgroud)