Skip to content

Commit 4b51864

Browse files
author
Martin Linkhorst
committed
register generic admitter for write protection behind a feature flag
1 parent 6a33954 commit 4b51864

File tree

5 files changed

+50
-1
lines changed

5 files changed

+50
-1
lines changed

cluster/config-defaults.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,11 @@ teapot_admission_controller_configmap_deletion_protection_factories_enabled: "tr
677677
# enable the rolebinding admission-controller webhook which validates rolebindings and clusterrolebindings
678678
teapot_admission_controller_enable_rolebinding_webhook: "true"
679679

680+
# enable the generic admission-controller webhook which catches all resources
681+
teapot_admission_controller_enable_generic_webhook: "false"
682+
# prevent write operations for non-admin users in protected namespaces
683+
teapot_admission_controller_prevent_write_operations: "false"
684+
680685
# Enable and configure Pod Security Policy rules implemented in admission-controller.
681686
teapot_admission_controller_pod_security_policy_enabled: "true"
682687

cluster/manifests/01-admission-control/config.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ data:
1212

1313
dns.default.subdomain-max-length: "{{ .Cluster.ConfigItems.subdomain_max_length }}"
1414

15+
generic.prevent-write-operations.enable: "{{ .Cluster.ConfigItems.teapot_admission_controller_prevent_write_operations }}"
16+
1517
pod.container-resource-control.min-memory-request: "25Mi"
1618
pod.container-resource-control.default-cpu-request: "{{ .Cluster.ConfigItems.teapot_admission_controller_default_cpu_request }}"
1719
pod.container-resource-control.default-memory-request: "{{ .Cluster.ConfigItems.teapot_admission_controller_default_memory_request }}"

cluster/manifests/01-admission-control/teapot.yaml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,3 +267,41 @@ webhooks:
267267
apiVersions: ["v1"]
268268
resources: ["rolebindings", "clusterrolebindings"]
269269
{{- end }}
270+
{{- if eq .Cluster.ConfigItems.teapot_admission_controller_enable_generic_webhook "true" }}
271+
- name: generic-namespaced-admitter.teapot.zalan.do
272+
clientConfig:
273+
url: "https://localhost:8085/generic"
274+
caBundle: "{{ .Cluster.ConfigItems.ca_cert_decompressed }}"
275+
admissionReviewVersions: ["v1beta1"]
276+
failurePolicy: Fail
277+
sideEffects: "NoneOnDryRun"
278+
matchPolicy: Equivalent
279+
namespaceSelector:
280+
matchExpressions:
281+
- key: kubernetes.io/metadata.name
282+
operator: In
283+
values: [ "kube-system", "visibility", "kubenurse" ]
284+
rules:
285+
- operations: [ "*" ]
286+
apiGroups: ["*"]
287+
apiVersions: ["*"]
288+
resources: ["*/*"]
289+
scope: "Namespaced"
290+
- name: generic-cluster-admitter.teapot.zalan.do
291+
clientConfig:
292+
url: "https://localhost:8085/generic"
293+
caBundle: "{{ .Cluster.ConfigItems.ca_cert_decompressed }}"
294+
admissionReviewVersions: ["v1beta1"]
295+
failurePolicy: Fail
296+
sideEffects: "NoneOnDryRun"
297+
matchPolicy: Equivalent
298+
objectSelector:
299+
matchLabels:
300+
admission.zalando.org/infrastructure-component: "true"
301+
rules:
302+
- operations: [ "*" ]
303+
apiGroups: ["*"]
304+
apiVersions: ["*"]
305+
resources: ["*/*"]
306+
scope: "Cluster"
307+
{{- end }}

cluster/manifests/prometheus/rbac.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ apiVersion: rbac.authorization.k8s.io/v1
88
kind: ClusterRole
99
metadata:
1010
name: prometheus
11+
labels:
12+
admission.zalando.org/infrastructure-component: "true"
1113
rules:
1214
- apiGroups: [""]
1315
resources:
@@ -37,6 +39,8 @@ apiVersion: rbac.authorization.k8s.io/v1
3739
kind: ClusterRoleBinding
3840
metadata:
3941
name: prometheus
42+
labels:
43+
admission.zalando.org/infrastructure-component: "true"
4044
roleRef:
4145
apiGroup: rbac.authorization.k8s.io
4246
kind: ClusterRole

cluster/node-pools/master-default/userdata.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ write_files:
206206
limits:
207207
memory: {{ .Values.InstanceInfo.MemoryFraction (parseInt64 .Cluster.ConfigItems.apiserver_memory_limit_percent)}}
208208
{{- end }}
209-
- image: 926694233939.dkr.ecr.eu-central-1.amazonaws.com/production_namespace/teapot/admission-controller:master-222
209+
- image: 926694233939.dkr.ecr.eu-central-1.amazonaws.com/production_namespace/teapot/admission-controller:master-224
210210
name: admission-controller
211211
lifecycle:
212212
preStop:

0 commit comments

Comments
 (0)