Skip to content

Commit afa19e5

Browse files
authored
Merge pull request #10165 from zalando-incubator/enabled-missing-configuration-for-custom-filters
skipper-validation-webhook: enabled missing configuration for custom filters
2 parents 2f5dcb1 + de6c4b2 commit afa19e5

File tree

3 files changed

+184
-6
lines changed

3 files changed

+184
-6
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: skipper-validation-webhook
5+
namespace: kube-system
6+
labels:
7+
application: skipper-ingress
8+
component: webhook
9+
---
10+
apiVersion: rbac.authorization.k8s.io/v1
11+
kind: ClusterRole
12+
metadata:
13+
name: skipper-validation-webhook
14+
rules:
15+
- apiGroups:
16+
- networking.k8s.io
17+
resources:
18+
- ingresses
19+
verbs:
20+
- get
21+
- list
22+
- apiGroups: [""]
23+
resources: ["namespaces", "services", "endpoints", "pods"]
24+
verbs: ["get", "list"]
25+
- apiGroups:
26+
- discovery.k8s.io
27+
resources:
28+
- endpointslices
29+
verbs:
30+
- get
31+
- list
32+
- apiGroups:
33+
- zalando.org
34+
resources:
35+
- routegroups
36+
verbs:
37+
- get
38+
- list
39+
---
40+
apiVersion: rbac.authorization.k8s.io/v1
41+
kind: ClusterRoleBinding
42+
metadata:
43+
name: skipper-validation-webhook
44+
roleRef:
45+
apiGroup: rbac.authorization.k8s.io
46+
kind: ClusterRole
47+
name: skipper-validation-webhook
48+
subjects:
49+
- kind: ServiceAccount
50+
name: skipper-validation-webhook
51+
namespace: kube-system
52+
---
53+
apiVersion: rbac.authorization.k8s.io/v1
54+
kind: RoleBinding
55+
metadata:
56+
name: skipper-validation-webhook-privileged-psp
57+
namespace: kube-system
58+
roleRef:
59+
apiGroup: rbac.authorization.k8s.io
60+
kind: ClusterRole
61+
name: privileged-psp
62+
subjects:
63+
- kind: ServiceAccount
64+
name: skipper-validation-webhook
65+
namespace: kube-system
66+

cluster/manifests/02-skipper-validation-webhook/deployment.yaml

Lines changed: 118 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,55 @@ spec:
5050
- name: ndots
5151
value: "1"
5252
priorityClassName: system-cluster-critical
53+
serviceAccountName: skipper-validation-webhook
5354
containers:
5455
- name: skipper-admission-webhook
5556
image: 926694233939.dkr.ecr.eu-central-1.amazonaws.com/production_namespace/teapot/skipper:v0.22.142
57+
env:
58+
{{ if or (eq .Cluster.ConfigItems.skipper_local_tokeninfo "production") (eq .Cluster.ConfigItems.skipper_local_tokeninfo "bridge") }}
59+
- name: LOCAL_TOKENINFO
60+
value: "true"
61+
{{ end }}
62+
{{ if eq .Cluster.ConfigItems.skipper_local_tokeninfo "bridge" }}
63+
- name: LOCAL_TOKENINFO_SANDBOX
64+
value: "true"
65+
{{ end }}
66+
{{ if or (eq .Cluster.ConfigItems.nlb_switch "pre") (eq .Cluster.ConfigItems.nlb_switch "exec") }}
67+
- name: HTTP_REDIRECT
68+
value: "true"
69+
{{ end }}
70+
{{ if eq .Cluster.ConfigItems.skipper_lua_scripts_enabled "true" }}
71+
- name: LUA_PATH
72+
value: /etc/skipper/lua/?.lua
73+
- name: DATADOME_API_KEY
74+
valueFrom:
75+
secretKeyRef:
76+
name: skipper-ingress
77+
key: datadome-api-key
78+
- name: KASADA_API_KEY
79+
valueFrom:
80+
secretKeyRef:
81+
name: skipper-ingress
82+
key: kasada-api-key
83+
{{ end }}
5684
args:
5785
- skipper
58-
- -support-listener=:9981
59-
- --validation-webhook-enabled=true
60-
- --validation-webhook-address=:9085
61-
- --validation-webhook-cert-file=/etc/tls-certs/skipper-validation-webhook.pem
62-
- --validation-webhook-key-file=/etc/tls-certs/skipper-validation-webhook-key.pem
63-
- "--enable-advanced-validation={{ .Cluster.ConfigItems.enable_advanced_validation }}"
86+
- "-support-listener=:9981"
87+
- "-validation-webhook-enabled=true"
88+
- "-validation-webhook-address=:9085"
89+
- "-validation-webhook-cert-file=/etc/tls-certs/skipper-validation-webhook.pem"
90+
- "-validation-webhook-key-file=/etc/tls-certs/skipper-validation-webhook-key.pem"
91+
- "-enable-profile"
92+
- "-memory-profile-rate={{ .Cluster.ConfigItems.skipper_memory_profile_rate }}"
93+
- "-block-profile-rate={{ .Cluster.ConfigItems.skipper_block_profile_rate }}"
94+
- "-mutex-profile-fraction={{ .Cluster.ConfigItems.skipper_mutex_profile_fraction }}"
95+
- "-kubernetes"
96+
- "-kubernetes-in-cluster"
97+
- "-kubernetes-healthcheck=false" # see -inline-routes
98+
- "-kubernetes-path-mode=path-prefix"
99+
- "-enable-kubernetes-endpointslices={{ .Cluster.ConfigItems.skipper_endpointslices_enabled }}"
100+
- "-enable-advanced-validation={{ .Cluster.ConfigItems.enable_advanced_validation }}"
101+
- "-source-poll-timeout=9223372036854775807" # Max Duration
64102
- "-metrics-flavour=prometheus"
65103
- "-metrics-exp-decay-sample"
66104
- "-enable-prometheus-start-label={{ .Cluster.ConfigItems.skipper_prometheus_start_label_enabled }}"
@@ -73,6 +111,22 @@ spec:
73111
- "-disable-metrics-compat"
74112
- "-histogram-metric-buckets=.0001,.00025,.0005,.00075,.001,.0025,.005,.0075,.01,.025,.05,.075,.1,.2,.3,.4,.5,.75,1,2,3,4,5,7,10,15,20,30,60,120,300,600"
75113
- "-disabled-filters={{ .Cluster.ConfigItems.skipper_disabled_filters }}"
114+
- "-compress-encodings={{ .Cluster.ConfigItems.skipper_compress_encodings }}"
115+
- "-enable-ratelimits"
116+
{{ if eq .Cluster.ConfigItems.skipper_ingress_redis_swarm_enabled "true" }}
117+
- "-enable-swarm"
118+
- "-swarm-redis-dial-timeout={{ .Cluster.ConfigItems.skipper_redis_dial_timeout }}"
119+
- "-swarm-redis-pool-timeout={{ .Cluster.ConfigItems.skipper_redis_pool_timeout }}"
120+
- "-swarm-redis-read-timeout={{ .Cluster.ConfigItems.skipper_redis_read_timeout }}"
121+
- "-swarm-redis-write-timeout={{ .Cluster.ConfigItems.skipper_redis_write_timeout }}"
122+
- "-cluster-ratelimit-max-group-shards={{ .Cluster.ConfigItems.skipper_cluster_ratelimit_max_group_shards }}"
123+
- "-swarm-redis-min-conns={{ .Cluster.ConfigItems.skipper_redis_min_conns }}"
124+
- "-swarm-redis-max-conns={{ .Cluster.ConfigItems.skipper_redis_max_conns }}"
125+
- "-kubernetes-redis-service-namespace=kube-system"
126+
- "-kubernetes-redis-service-name=skipper-ingress-redis"
127+
- "-kubernetes-redis-service-port=6379"
128+
{{ end }}
129+
- "-lua-sources={{ .Cluster.ConfigItems.skipper_lua_sources }}"
76130
- "-default-filters-dir=/etc/config/default-filters"
77131
- '-default-filters-prepend={{ .Cluster.ConfigItems.skipper_default_filters }}'
78132
- '-default-filters-append={{ .Cluster.ConfigItems.skipper_default_filters_authentication }}'
@@ -81,6 +135,27 @@ spec:
81135
- '-kubernetes-annotation-filters-append={{ .Cluster.ConfigItems.skipper_kubernetes_annotation_filters_append }}'
82136
- '-kubernetes-east-west-range-annotation-predicates={{ .Cluster.ConfigItems.skipper_kubernetes_east_west_range_annotation_predicates }}'
83137
- '-kubernetes-east-west-range-annotation-filters-append={{ .Cluster.ConfigItems.skipper_kubernetes_east_west_range_annotation_filters_append }}'
138+
- "-oauth2-tokeninfo-url=http://127.0.0.1:9021/oauth2/tokeninfo"
139+
{{ if eq .Cluster.ConfigItems.skipper_oauth2_ui_login "true" }}
140+
- "-enable-oauth2-grant-flow"
141+
- "-oauth2-auth-url={{ .Cluster.ConfigItems.skipper_oauth2_auth_url }}"
142+
- "-oauth2-token-url={{ .Cluster.ConfigItems.skipper_oauth2_token_url }}"
143+
- "-oauth2-secret-file=/etc/skipper/secret/encryption-key"
144+
- "-oauth2-client-id-file=/etc/skipper/hostname-credentials/{host}-grant-credentials-employee-client-id"
145+
- "-oauth2-client-secret-file=/etc/skipper/hostname-credentials/{host}-grant-credentials-employee-client-secret"
146+
- "-credentials-update-interval=1m"
147+
- "-oauth2-token-cookie-name={{ .Cluster.ConfigItems.skipper_oauth2_cookie_name }}"
148+
- "-oauth2-token-cookie-remove-subdomains=0"
149+
- "-oauth2-callback-path={{ .Cluster.ConfigItems.skipper_oauth2_redirect_uri_path }}"
150+
- "-oauth2-grant-tokeninfo-keys={{ .Cluster.ConfigItems.skipper_oauth2_ui_login_tokeninfo_keys }}"
151+
{{ end }}
152+
{{ if eq .Cluster.ConfigItems.skipper_open_policy_agent_enabled "true" }}
153+
- "-enable-open-policy-agent"
154+
- "-open-policy-agent-config-template=/etc/skipper/open-policy-agent/opaconfig.yaml"
155+
- "-open-policy-agent-envoy-metadata=/etc/skipper/open-policy-agent/envoymetadata.json"
156+
- "-enable-open-policy-agent-data-preprocessing-optimization={{ .Cluster.ConfigItems.skipper_open_policy_agent_data_preprocessing_optimization_enabled }}"
157+
- "-enable-open-policy-agent-preloading={{ .Cluster.ConfigItems.skipper_open_policy_agent_preloading_enabled }}"
158+
{{ end }}
84159
lifecycle:
85160
preStop:
86161
sleep:
@@ -110,6 +185,24 @@ spec:
110185
readOnly: true
111186
- name: filters
112187
mountPath: /etc/config/default-filters
188+
{{ if eq .Cluster.ConfigItems.skipper_lua_scripts_enabled "true" }}
189+
- name: lua
190+
mountPath: /etc/skipper/lua
191+
readOnly: true
192+
{{ end }}
193+
{{ if eq .Cluster.ConfigItems.skipper_oauth2_ui_login "true"}}
194+
- name: hostname-credentials
195+
mountPath: /etc/skipper/hostname-credentials
196+
readOnly: true
197+
- name: encryption-key
198+
mountPath: /etc/skipper/secret
199+
readOnly: true
200+
{{ end }}
201+
{{ if eq .Cluster.ConfigItems.skipper_open_policy_agent_enabled "true" }}
202+
- name: open-policy-agent-config
203+
mountPath: /etc/skipper/open-policy-agent
204+
readOnly: true
205+
{{ end }}
113206
volumes:
114207
- name: tls-certs
115208
secret:
@@ -118,3 +211,22 @@ spec:
118211
configMap:
119212
name: skipper-default-filters
120213
optional: true
214+
{{ if eq .Cluster.ConfigItems.skipper_lua_scripts_enabled "true" }}
215+
- name: lua
216+
configMap:
217+
name: skipper-ingress-lua
218+
optional: true
219+
{{ end }}
220+
{{ if eq .Cluster.ConfigItems.skipper_oauth2_ui_login "true"}}
221+
- name: hostname-credentials
222+
secret:
223+
secretName: hostname-credentials
224+
- name: encryption-key
225+
secret:
226+
secretName: skipper-ingress
227+
{{ end }}
228+
{{ if eq .Cluster.ConfigItems.skipper_open_policy_agent_enabled "true" }}
229+
- name: open-policy-agent-config
230+
configMap:
231+
name: open-policy-agent-config
232+
{{ end }}

0 commit comments

Comments
 (0)