local utils = import '../utils.libsonnet'; local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; { _config+:: { namespace: 'monitoring', grafanaDashboards+:: { 'nginx-dashboard.json': (import '../grafana-dashboards/nginx-dashboard.json'), }, }, nginxExporter+:: { serviceMonitor: utils.newServiceMonitor('nginx', $._config.namespace, { 'app.kubernetes.io/name': 'ingress-nginx' }, 'ingress-nginx', 'prometheus', 'http'), service: local service = k.core.v1.service; local servicePort = k.core.v1.service.mixin.spec.portsType; local nginxPort = servicePort.newNamed('prometheus', 10254, 10254); service.new('nginx-ingress-metrics', {'app.kubernetes.io/name': 'ingress-nginx'}, nginxPort) + service.mixin.metadata.withNamespace('ingress-nginx') + service.mixin.metadata.withLabels({'app.kubernetes.io/name': 'ingress-nginx'}) + service.mixin.spec.withClusterIp('None'), clusterRole: utils.newClusterRole('nginx-exporter', [ { apis: [''], res: ['services', 'endpoints', 'pods'], verbs: ['get', 'list', 'watch'], }, ], null), serviceAccount: utils.newServiceAccount('nginx-exporter', $._config.namespace, null), clusterRoleBinding: utils.newClusterRoleBinding('nginx-exporter', 'nginx-exporter', $._config.namespace, 'nginx-exporter', null), }, }