Skip to content

Commit 2e8cf3f

Browse files
authored
feat(chart): add servicemonitor (#2335)
Signed-off-by: Steve Hipwell <[email protected]>
1 parent 8974bd4 commit 2e8cf3f

File tree

7 files changed

+175
-84
lines changed

7 files changed

+175
-84
lines changed

helm/aws-load-balancer-controller/README.md

Lines changed: 78 additions & 64 deletions
Large diffs are not rendered by default.

helm/aws-load-balancer-controller/templates/_helpers.tpl

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,27 @@ Create the name of the service account to use
7272
{{- end -}}
7373
{{- end -}}
7474

75+
{{/*
76+
Create the name of the webhook service
77+
*/}}
78+
{{- define "aws-load-balancer-controller.webhookService" -}}
79+
{{- printf "%s-webhook-service" (include "aws-load-balancer-controller.namePrefix" .) -}}
80+
{{- end -}}
81+
82+
{{/*
83+
Create the name of the webhook cert secret
84+
*/}}
85+
{{- define "aws-load-balancer-controller.webhookCertSecret" -}}
86+
{{- printf "%s-tls" (include "aws-load-balancer-controller.namePrefix" .) -}}
87+
{{- end -}}
88+
7589
{{/*
7690
Generate certificates for webhook
7791
*/}}
78-
{{- define "aws-load-balancer-controller.webhook-certs" -}}
79-
{{- $namePrefix := ( include "aws-load-balancer-controller.namePrefix" . ) -}}
80-
{{- $secret := lookup "v1" "Secret" .Release.Namespace (printf "%s-tls" $namePrefix) -}}
92+
{{- define "aws-load-balancer-controller.webhookCerts" -}}
93+
{{- $serviceName := (include "aws-load-balancer-controller.webhookService" .) -}}
94+
{{- $secretName := (include "aws-load-balancer-controller.webhookCertSecret" .) -}}
95+
{{- $secret := lookup "v1" "Secret" .Release.Namespace $secretName -}}
8196
{{- if (and .Values.webhookTLS.caCert .Values.webhookTLS.cert .Values.webhookTLS.key) -}}
8297
caCert: {{ .Values.webhookTLS.caCert | b64enc }}
8398
clientCert: {{ .Values.webhookTLS.cert | b64enc }}
@@ -87,9 +102,9 @@ caCert: {{ index $secret.data "ca.crt" }}
87102
clientCert: {{ index $secret.data "tls.crt" }}
88103
clientKey: {{ index $secret.data "tls.key" }}
89104
{{- else -}}
90-
{{- $altNames := list ( printf "%s-%s.%s" $namePrefix "webhook-service" .Release.Namespace ) ( printf "%s-%s.%s.svc" $namePrefix "webhook-service" .Release.Namespace ) -}}
105+
{{- $altNames := list (printf "%s.%s" $serviceName .Release.Namespace) (printf "%s.%s.svc" $serviceName .Release.Namespace) (printf "%s.%s.svc.cluster.local" $serviceName .Release.Namespace) -}}
91106
{{- $ca := genCA "aws-load-balancer-controller-ca" 3650 -}}
92-
{{- $cert := genSignedCert ( include "aws-load-balancer-controller.fullname" . ) nil $altNames 3650 $ca -}}
107+
{{- $cert := genSignedCert (include "aws-load-balancer-controller.fullname" .) nil $altNames 3650 $ca -}}
93108
caCert: {{ $ca.Cert | b64enc }}
94109
clientCert: {{ $cert.Cert | b64enc }}
95110
clientKey: {{ $cert.Key | b64enc }}
@@ -99,6 +114,6 @@ clientKey: {{ $cert.Key | b64enc }}
99114
{{/*
100115
Convert map to comma separated key=value string
101116
*/}}
102-
{{- define "aws-load-balancer-controller.convert-map-to-csv" -}}
117+
{{- define "aws-load-balancer-controller.convertMapToCsv" -}}
103118
{{- range $key, $value := . -}} {{ $key }}={{ $value }}, {{- end -}}
104119
{{- end -}}

helm/aws-load-balancer-controller/templates/deployment.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ spec:
3737
- name: cert
3838
secret:
3939
defaultMode: 420
40-
secretName: {{ template "aws-load-balancer-controller.namePrefix" . }}-tls
40+
secretName: {{ template "aws-load-balancer-controller.webhookCertSecret" . }}
4141
{{- with .Values.extraVolumes }}
4242
{{ toYaml . | nindent 6 }}
4343
{{- end }}
@@ -120,7 +120,7 @@ spec:
120120
- --external-managed-tags={{ join "," .Values.externalManagedTags }}
121121
{{- end }}
122122
{{- if .Values.defaultTags }}
123-
- --default-tags={{ include "aws-load-balancer-controller.convert-map-to-csv" .Values.defaultTags | trimSuffix "," }}
123+
- --default-tags={{ include "aws-load-balancer-controller.convertMapToCsv" .Values.defaultTags | trimSuffix "," }}
124124
{{- end }}
125125
{{- if kindIs "bool" .Values.enableEndpointSlices }}
126126
- --enable-endpoint-slices={{ .Values.enableEndpointSlices }}
Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,41 @@
1+
{{- if.Values.serviceMonitor.enabled }}
12
apiVersion: v1
23
kind: Service
34
metadata:
4-
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-webhook-service
5+
name: {{ template "aws-load-balancer-controller.fullname" . }}
56
namespace: {{ .Release.Namespace }}
67
{{- with .Values.serviceAnnotations }}
78
annotations:
89
{{- toYaml . | nindent 4 }}
910
{{- end }}
1011
labels:
11-
{{ include "aws-load-balancer-controller.labels" . | indent 4 }}
12+
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
13+
spec:
14+
ports:
15+
- port: 8080
16+
name: metrics-server
17+
targetPort: metrics-server
18+
selector:
19+
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 4 }}
20+
---
21+
{{- end }}
22+
apiVersion: v1
23+
kind: Service
24+
metadata:
25+
name: {{ template "aws-load-balancer-controller.webhookService" . }}
26+
namespace: {{ .Release.Namespace }}
27+
{{- with .Values.serviceAnnotations }}
28+
annotations:
29+
{{- toYaml . | nindent 4 }}
30+
{{- end }}
31+
labels:
32+
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
33+
app.kubernetes.io/component: webhook
34+
prometheus.io/service-monitor: "false"
1235
spec:
1336
ports:
1437
- port: 443
38+
name: webhook-server
1539
targetPort: webhook-server
1640
selector:
1741
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 4 }}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{{- if.Values.serviceMonitor.enabled -}}
2+
apiVersion: monitoring.coreos.com/v1
3+
kind: ServiceMonitor
4+
metadata:
5+
name: {{ include "aws-load-balancer-controller.fullname" . }}
6+
labels:
7+
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
8+
{{- with .Values.serviceMonitor.additionalLabels }}
9+
{{- toYaml . | nindent 4 }}
10+
{{- end }}
11+
spec:
12+
jobLabel: {{ .Release.Name }}
13+
namespaceSelector:
14+
matchNames:
15+
- {{ .Release.Namespace }}
16+
selector:
17+
matchLabels:
18+
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 6 }}
19+
matchExpressions:
20+
- key: prometheus.io/service-monitor
21+
operator: NotIn
22+
values:
23+
- "false"
24+
endpoints:
25+
- port: metrics-server
26+
path: /metrics
27+
{{- with .Values.serviceMonitor.interval }}
28+
interval: {{ . }}
29+
{{- end }}
30+
{{- end -}}

helm/aws-load-balancer-controller/templates/webhook.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{ $tls := fromYaml ( include "aws-load-balancer-controller.webhook-certs" . ) }}
1+
{{ $tls := fromYaml ( include "aws-load-balancer-controller.webhookCerts" . ) }}
22
---
33
apiVersion: admissionregistration.k8s.io/v1
44
kind: MutatingWebhookConfiguration
@@ -14,7 +14,7 @@ webhooks:
1414
- clientConfig:
1515
caBundle: {{ if not $.Values.enableCertManager -}}{{ $tls.caCert }}{{- else -}}Cg=={{ end }}
1616
service:
17-
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-webhook-service
17+
name: {{ template "aws-load-balancer-controller.webhookService" . }}
1818
namespace: {{ $.Release.Namespace }}
1919
path: /mutate-v1-pod
2020
failurePolicy: Fail
@@ -53,7 +53,7 @@ webhooks:
5353
- clientConfig:
5454
caBundle: {{ if not $.Values.enableCertManager -}}{{ $tls.caCert }}{{- else -}}Cg=={{ end }}
5555
service:
56-
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-webhook-service
56+
name: {{ template "aws-load-balancer-controller.webhookService" . }}
5757
namespace: {{ $.Release.Namespace }}
5858
path: /mutate-elbv2-k8s-aws-v1beta1-targetgroupbinding
5959
failurePolicy: Fail
@@ -86,7 +86,7 @@ webhooks:
8686
- clientConfig:
8787
caBundle: {{ if not $.Values.enableCertManager -}}{{ $tls.caCert }}{{- else -}}Cg=={{ end }}
8888
service:
89-
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-webhook-service
89+
name: {{ template "aws-load-balancer-controller.webhookService" . }}
9090
namespace: {{ $.Release.Namespace }}
9191
path: /validate-elbv2-k8s-aws-v1beta1-targetgroupbinding
9292
failurePolicy: Fail
@@ -107,7 +107,7 @@ webhooks:
107107
- clientConfig:
108108
caBundle: {{ if not $.Values.enableCertManager -}}{{ $tls.caCert }}{{- else -}}Cg=={{ end }}
109109
service:
110-
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-webhook-service
110+
name: {{ template "aws-load-balancer-controller.webhookService" . }}
111111
namespace: {{ $.Release.Namespace }}
112112
path: /validate-networking-v1-ingress
113113
failurePolicy: Fail
@@ -131,7 +131,7 @@ webhooks:
131131
apiVersion: v1
132132
kind: Secret
133133
metadata:
134-
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-tls
134+
name: {{ template "aws-load-balancer-controller.webhookCertSecret" . }}
135135
namespace: {{ .Release.Namespace }}
136136
labels:
137137
{{ include "aws-load-balancer-controller.labels" . | indent 4 }}
@@ -154,12 +154,12 @@ metadata:
154154
{{ include "aws-load-balancer-controller.labels" . | indent 4 }}
155155
spec:
156156
dnsNames:
157-
- {{ template "aws-load-balancer-controller.namePrefix" . }}-webhook-service.{{ .Release.Namespace }}.svc
158-
- {{ template "aws-load-balancer-controller.namePrefix" . }}-webhook-service.{{ .Release.Namespace }}.svc.cluster.local
157+
- {{ template "aws-load-balancer-controller.webhookService" . }}.{{ .Release.Namespace }}.svc
158+
- {{ template "aws-load-balancer-controller.webhookService" . }}.{{ .Release.Namespace }}.svc.cluster.local
159159
issuerRef:
160160
kind: Issuer
161161
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-selfsigned-issuer
162-
secretName: {{ template "aws-load-balancer-controller.namePrefix" . }}-tls
162+
secretName: {{ template "aws-load-balancer-controller.webhookCertSecret" . }}
163163
---
164164
{{- if .Capabilities.APIVersions.Has "cert-manager.io/v1" }}
165165
apiVersion: cert-manager.io/v1

helm/aws-load-balancer-controller/values.yaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,4 +241,12 @@ objectSelector:
241241
# values:
242242
# - <value>
243243
matchLabels:
244-
# key: value
244+
# key: value
245+
246+
serviceMonitor:
247+
# Specifies whether a service monitor should be created
248+
enabled: false
249+
# Labels to add to the service account
250+
additionalLabels: {}
251+
# Prometheus scrape interval
252+
interval: 1m

0 commit comments

Comments
 (0)