普罗米修斯仪表板暴露在入口控制器上

Prometheus dashboard exposed over ingress controller

我正在尝试在 k8 集群中设置 Prometheus,能够 运行 使用 helm。当我使用外部 ip 将 prometheus-server 公开为 LoadBalancer 服务时访问仪表板。 当我尝试将此服务配置为 ClusterIP 并使用入口控制器将其作为后端时,同样不起作用。收到 404 错误,想知道如何解决这个问题吗?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ops-ingress
  annotations:
    #nginx.org/server-snippet: "proxy_ssl_verify off;"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /prometheus(/|$)(.*)
        backend:
          serviceName: prometheus-server
          servicePort: 80

有了上面的入口定义,url“http://<>/prometheus/ 被重定向到 http://<>/graph/,然后呈现 404 错误页面。当 url 调整为 http://<>/prometheus/graph 时,某些 Web 控件在浏览器控制台上呈现时出现大量错误。

Prometheus 可能希望控制根路径 (/)。

请将 Ingress 更改为 prometheus.example.com,它应该可以正常工作。 (将其更改为子域)

请更改您的 Ingress 配置文件,添加 host 字段:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ops-ingress
  annotations:
    #nginx.org/server-snippet: "proxy_ssl_verify off;"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: prometheus.example.com
    http:
      paths:
      - path: /prometheus(/|$)(.*)
        backend:
          serviceName: prometheus-server
          servicePort: 80

然后应用更改执行命令:

$ kubectl aply -f your_ingress_congifguration_file.yaml

请求中的host头字段提供主机和端口 来自目标 URI 的信息,使源服务器能够 在为多个请求提供服务时区分资源 单个 IP 地址上的主机名。

请看这里:hosts-header.

入口定义:ingress.

有用信息:helm-prometheus.

有用的文档:ingress-path-matching