...
1
2
3
4 package krusty_test
5
6 import (
7 "testing"
8
9 kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
10 )
11
12
13 func TestValidatingWebhookCombinedNamespaces(t *testing.T) {
14 th := kusttest_test.MakeHarness(t)
15 th.WriteK("base", `
16 resources:
17 - service.yaml
18 - validatingwebhook.yaml
19 `)
20 th.WriteF("base/service.yaml", `
21 apiVersion: v1
22 kind: Service
23 metadata:
24 name: admission
25 namespace: base-namespace
26 spec:
27 type: ClusterIP
28 ports:
29 - name: https-webhook
30 port: 443
31 targetPort: webhook
32 `)
33 th.WriteF("base/validatingwebhook.yaml", `
34 apiVersion: admissionregistration.k8s.io/v1
35 kind: ValidatingWebhookConfiguration
36 metadata:
37 name: validatingwebhook
38 webhooks:
39 - name: validate
40 matchPolicy: Equivalent
41 rules:
42 - apiGroups:
43 - networking.k8s.io
44 apiVersions:
45 - v1beta1
46 operations:
47 - CREATE
48 - UPDATE
49 resources:
50 - ingresses
51 failurePolicy: Fail
52 sideEffects: None
53 admissionReviewVersions:
54 - v1
55 - v1beta1
56 clientConfig:
57 service:
58 namespace: base-namespace
59 name: admission
60 path: /networking/v1beta1/ingresses
61 `)
62 th.WriteK("overlay", `
63 namespace: merge-namespace
64 resources:
65 - ../base
66 patchesStrategicMerge:
67 - validatingwebhookdelete.yaml
68 `)
69 th.WriteF("overlay/validatingwebhookdelete.yaml", `
70 apiVersion: admissionregistration.k8s.io/v1
71 kind: ValidatingWebhookConfiguration
72 metadata:
73 name: validatingwebhook
74 $patch: delete
75 `)
76 th.WriteK("combined", `
77 resources:
78 - ../base
79 - ../overlay
80 `)
81 m := th.Run("combined", th.MakeDefaultOptions())
82 th.AssertActualEqualsExpected(m, `
83 apiVersion: v1
84 kind: Service
85 metadata:
86 name: admission
87 namespace: base-namespace
88 spec:
89 ports:
90 - name: https-webhook
91 port: 443
92 targetPort: webhook
93 type: ClusterIP
94 ---
95 apiVersion: admissionregistration.k8s.io/v1
96 kind: ValidatingWebhookConfiguration
97 metadata:
98 name: validatingwebhook
99 webhooks:
100 - admissionReviewVersions:
101 - v1
102 - v1beta1
103 clientConfig:
104 service:
105 name: admission
106 namespace: merge-namespace
107 path: /networking/v1beta1/ingresses
108 failurePolicy: Fail
109 matchPolicy: Equivalent
110 name: validate
111 rules:
112 - apiGroups:
113 - networking.k8s.io
114 apiVersions:
115 - v1beta1
116 operations:
117 - CREATE
118 - UPDATE
119 resources:
120 - ingresses
121 sideEffects: None
122 ---
123 apiVersion: v1
124 kind: Service
125 metadata:
126 name: admission
127 namespace: merge-namespace
128 spec:
129 ports:
130 - name: https-webhook
131 port: 443
132 targetPort: webhook
133 type: ClusterIP
134 `)
135 }
136
View as plain text