diff --git a/haproxy-ingress/README.md b/haproxy-ingress/README.md index 35f1406..a1a5f2a 100755 --- a/haproxy-ingress/README.md +++ b/haproxy-ingress/README.md @@ -146,10 +146,12 @@ Parameter | Description | Default `controller.stats.service.servicePort` | the port number exposed by the stats service | `1936` `controller.stats.service.type` | type of controller service to create | `ClusterIP` `controller.metrics.enabled` | If `controller.stats.enabled = true` and `controller.metrics.enabled = true`, Prometheus metrics will be exported | `false` -`controller.metrics.image.repository` | prometheus-exporter image repository | `quay.io/prometheus/haproxy-exporter` +`controller.metrics.embedded` | defines if embedded haproxy's exporter should be used | `true` +`controller.metrics.port` | port number the exporter is listening to | `9101` +`controller.metrics.image.repository` | prometheus-exporter image repository when embedded is `false` | `quay.io/prometheus/haproxy-exporter` `controller.metrics.image.tag` | prometheus-exporter image tag | `v0.11.0` `controller.metrics.image.pullPolicy` | prometheus-exporter image pullPolicy | `IfNotPresent` -`controller.metrics.extraArgs` | Extra arguments to the haproxy_exporter | `{}` +`controller.metrics.extraArgs` | Extra arguments to the prometheus-exporter | `{}` `controller.metrics.resources` | prometheus-exporter container resource requests & limits | `{}` `controller.metrics.service.annotations` | annotations for metrics service | `{}` `controller.metrics.service.clusterIP` | internal metrics cluster service IP | `nil` diff --git a/haproxy-ingress/templates/_podtemplate.yaml b/haproxy-ingress/templates/_podtemplate.yaml index 1120062..5faece0 100644 --- a/haproxy-ingress/templates/_podtemplate.yaml +++ b/haproxy-ingress/templates/_podtemplate.yaml @@ -56,6 +56,11 @@ spec: hostPort: {{ .Values.controller.daemonset.hostPorts.https }} {{- end }} {{- end }} +{{- if and .Values.controller.metrics.enabled .Values.controller.metrics.embedded }} + - name: metrics + containerPort: {{ .Values.controller.metrics.port }} + protocol: TCP +{{- end }} {{- if .Values.controller.stats.enabled }} - name: stats containerPort: {{ .Values.controller.stats.port }} @@ -125,12 +130,13 @@ spec: resources: {{- toYaml .Values.controller.logs.resources | nindent 8 }} {{- end }} -{{- if and .Values.controller.stats.enabled .Values.controller.metrics.enabled }} +{{- if and .Values.controller.stats.enabled .Values.controller.metrics.enabled (not .Values.controller.metrics.embedded) }} - name: prometheus-exporter image: "{{ .Values.controller.metrics.image.repository }}:{{ .Values.controller.metrics.image.tag }}" imagePullPolicy: "{{ .Values.controller.metrics.image.pullPolicy }}" args: - '--haproxy.scrape-uri=http://localhost:{{ .Values.controller.stats.port }}/haproxy?stats;csv' + - --web.listen-address=:{{ .Values.controller.metrics.port }} {{- range $key, $value := .Values.controller.metrics.extraArgs }} {{- if $value }} - --{{ $key }}={{ $value }} @@ -140,7 +146,7 @@ spec: {{- end }} ports: - name: metrics - containerPort: 9101 + containerPort: {{ .Values.controller.metrics.port }} protocol: TCP livenessProbe: httpGet: diff --git a/haproxy-ingress/templates/controller-configmap.yaml b/haproxy-ingress/templates/controller-configmap.yaml index 247311d..12c4027 100644 --- a/haproxy-ingress/templates/controller-configmap.yaml +++ b/haproxy-ingress/templates/controller-configmap.yaml @@ -7,6 +7,9 @@ metadata: namespace: {{ .Release.Namespace }} data: healthz-port: {{ .Values.controller.healthzPort | quote }} +{{- if and .Values.controller.metrics.enabled .Values.controller.metrics.embedded }} + prometheus-port: {{ .Values.controller.metrics.port | quote }} +{{- end }} stats-port: {{ .Values.controller.stats.port | quote }} {{- if .Values.controller.logs.enabled }} syslog-endpoint: "localhost:514" diff --git a/haproxy-ingress/templates/controller-metrics-service.yaml b/haproxy-ingress/templates/controller-metrics-service.yaml index b2e72b3..b085c0c 100644 --- a/haproxy-ingress/templates/controller-metrics-service.yaml +++ b/haproxy-ingress/templates/controller-metrics-service.yaml @@ -1,4 +1,4 @@ -{{- if and .Values.controller.stats.enabled .Values.controller.metrics.enabled -}} +{{- if and .Values.controller.metrics.enabled (or .Values.controller.stats.enabled .Values.controller.metrics.embedded) -}} apiVersion: v1 kind: Service metadata: diff --git a/haproxy-ingress/values.yaml b/haproxy-ingress/values.yaml index 0d6f7ce..4367be7 100644 --- a/haproxy-ingress/values.yaml +++ b/haproxy-ingress/values.yaml @@ -241,13 +241,22 @@ controller: type: ClusterIP ## If controller.stats.enabled = true and controller.metrics.enabled = true, Prometheus metrics will be exported + ## Metrics will also be exposed if the embedded haproxy's exporter is used ## metrics: enabled: false + # Defines if the haproxy's embedded prometheus exporter should be used + # If false, haproxy_exporter sidecar container is used instead and stats need to be enabled + embedded: true + + # Port number the exporter is listening to + port: 9101 + # prometheus exporter for haproxy # https://github.com/prometheus/haproxy_exporter # (scrapes the stats port and exports metrics to prometheus) + # Only used if embedded == false image: repository: quay.io/prometheus/haproxy-exporter tag: "v0.11.0"