1+ {{- $k8sMinor := (include "k8s-version-minor" .) -}}
2+ {{- $altNames := list -}}
3+ {{- $altNames = append $altNames (printf "%s-svc" .Chart.Name) -}}
4+ {{- $altNames = append $altNames (printf "%s-svc.%s" .Chart.Name .Release.Namespace) -}}
5+ {{- $altNames = append $altNames (printf "%s-svc.%s.svc" .Chart.Name .Release.Namespace) -}}
6+ {{- $altNames = append $altNames (printf "%s-svc.%s.svc.cluster.local" .Chart.Name .Release.Namespace) -}}
7+ {{- $certs := genSelfSignedCert (printf "%s-svc.%s.svc" .Chart.Name .Release.Namespace) nil $altNames 36500 -}}
8+ apiVersion : v1
9+ kind : Secret
10+ metadata :
11+ name : {{ .Chart.Name }}-tls
12+ namespace : {{ .Release.Namespace }}
13+ labels :
14+ {{- include "itsfriday.labels" . | nindent 4 }}
15+ type : Opaque
16+ data :
17+ tls.crt : {{ default ($certs.Cert | b64enc) (include "getInstalledTLSCert" .) }}
18+ tls.key : {{ default ($certs.Key | b64enc) (include "getInstalledTLSKey" .) }}
19+ ---
20+ {{ if lt ($k8sMinor | int) 17 }}
21+ apiVersion : admissionregistration.k8s.io/v1beta1
22+ {{ else }}
23+ apiVersion : admissionregistration.k8s.io/v1
24+ {{ end }}
25+ kind : ValidatingWebhookConfiguration
26+ metadata :
27+ name : {{ .Chart.Name }}-webhook
28+ labels :
29+ {{- include "itsfriday.labels" . | nindent 4 }}
30+ annotations :
31+ " helm.sh/hook " : post-delete
32+ " helm.sh/hook-delete-policy " : before-hook-creation, hook-succeeded, hook-failed
33+ webhooks :
34+ - name : {{ .Chart.Name }}-svc.{{ .Release.Namespace }}.svc
35+ failurePolicy : Ignore
36+ clientConfig :
37+ service :
38+ name : {{ .Chart.Name }}-svc
39+ namespace : {{ .Release.Namespace }}
40+ path : /validate
41+ caBundle : {{ default ($certs.Cert | b64enc) (include "getInstalledTLSCert" .) }}
42+ rules : []
43+ sideEffects : None
44+ {{- if lt ($k8sMinor | int) 17 }}
45+ admissionReviewVersions : ["v1beta1"]
46+ {{- else }}
47+ admissionReviewVersions : ["v1"]
48+ {{- end }}
49+ ---
50+ {{ if lt ($k8sMinor | int) 17 -}}
51+ apiVersion : admissionregistration.k8s.io/v1beta1
52+ {{ else -}}
53+ apiVersion : admissionregistration.k8s.io/v1
54+ {{ end -}}
55+ kind : ValidatingWebhookConfiguration
56+ metadata :
57+ name : {{ .Chart.Name }}-webhook
58+ labels :
59+ {{- include "itsfriday.labels" . | nindent 4 }}
60+ annotations :
61+ " helm.sh/hook " : post-install, post-upgrade, post-rollback
62+ webhooks :
63+ - name : {{ .Chart.Name }}-svc.{{ .Release.Namespace }}.svc
64+ failurePolicy : {{ .Values.failurePolicy | default "Fail" }}
65+ clientConfig :
66+ service :
67+ name : {{ .Chart.Name }}-svc
68+ namespace : {{ .Release.Namespace }}
69+ path : /validate
70+ caBundle : {{ default ($certs.Cert | b64enc) (include "getInstalledTLSCert" .) }}
71+ rules :
72+ - operations : ["CREATE", "UPDATE"]
73+ apiGroups : ["*"]
74+ apiVersions : ["*"]
75+ resources : ["pods", "deployments", "replicationcontrollers", "replicasets", "daemonsets", "statefulsets", "jobs", "cronjobs"]
76+ sideEffects : None
77+ {{- if gt ($k8sMinor | int) 13 }}
78+ timeoutSeconds : 30
79+ {{- end }}
80+ {{- if lt ($k8sMinor | int) 17 }}
81+ admissionReviewVersions : ["v1beta1"]
82+ {{- else }}
83+ admissionReviewVersions : ["v1"]
84+ {{- end }}
85+ {{- if .Values.namespacedValidation }}
86+ {{- if .Values.namespacedValidation.enabled }}
87+ namespaceSelector :
88+ matchExpressions :
89+ - key : itsfriday/webhookenabled
90+ {{- if not .Values.onlyMarkedNamespaces.mode}}
91+ operator : NotIn
92+ values :
93+ - ignore
94+ {{- else if eq .Values.onlyMarkedNamespaces.mode "ignore"}}
95+ operator : NotIn
96+ values :
97+ - ignore
98+ {{- else if eq .Values.onlyMarkedNamespaces.mode "validate"}}
99+ operator : In
100+ values :
101+ - validate
102+ {{- end }}
103+ {{- end }}
104+ {{- end }}
0 commit comments