Prometheus仪表板通过入口控制器公开

时间:2019-12-30 22:47:51

标签: kubernetes-ingress nginx-ingress prometheus-operator

我正在尝试在k8集群中设置Prometheus,使其能够使用头盔运行。当我使用外部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: /$2
spec:
  rules:
  - http:
      paths:
      - path: /prometheus(/|$)(.*)
        backend:
          serviceName: prometheus-server
          servicePort: 80

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

请更改您的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: /$2
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