...
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 func TestIssue3377(t *testing.T) {
13 th := kusttest_test.MakeHarness(t)
14 opts := th.MakeDefaultOptions()
15 th.WriteK(".", `
16 resources:
17 - service-a.yaml
18 - service-b.yaml
19
20 patchesJson6902:
21 - path: service-a-patch.yaml
22 target:
23 version: v1
24 group: networking.k8s.io
25 kind: Ingress
26 name: service-a
27 - path: service-b-patch.yaml
28 target:
29 version: v1
30 group: networking.k8s.io
31 kind: Ingress
32 name: service-b
33 vars:
34 - name: SERVICE_A_DNS_NAME
35 objref:
36 apiVersion: networking.k8s.io/v1
37 kind: Ingress
38 name: service-a
39 fieldref:
40 fieldpath: spec.rules[0].host
41 - name: SERVICE_B_DNS_NAME
42 objref:
43 apiVersion: networking.k8s.io/v1
44 kind: Ingress
45 name: service-b
46 fieldref:
47 fieldpath: spec.rules[0].host
48 `)
49
50 th.WriteF("service-a.yaml", `
51 apiVersion: apps/v1
52 kind: Deployment
53 metadata:
54 name: service-a
55 spec:
56 replicas: 1
57 selector:
58 matchLabels:
59 app.kubernetes.io/component: service-a
60 template:
61 metadata:
62 labels:
63 app.kubernetes.io/component: service-a
64 spec:
65 containers:
66 - image: repository/service-a:v1
67 imagePullPolicy: Always
68 name: service-b
69 ports:
70 - containerPort: 8080
71 env:
72 - name: REDIRECT_URI
73 value: "http://$(SERVICE_B_DNS_NAME):80/oauth_redir"
74 ---
75 apiVersion: v1
76 kind: Service
77 metadata:
78 name: service-a
79 labels:
80 app.kubernetes.io/component: service-a
81 spec:
82 type: LoadBalancer
83 ports:
84 - port: 8080
85 selector:
86 app.kubernetes.io/component: service-a
87 ---
88 apiVersion: networking.k8s.io/v1
89 kind: Ingress
90 metadata:
91 name: service-a
92 spec:
93 rules:
94 - host: service-a.k8s.com
95 http:
96 paths:
97 - path: /
98 pathType: Prefix
99 backend:
100 service:
101 name: service-a
102 port:
103 number: 8080
104 `)
105
106 th.WriteF("service-a-patch.yaml", `
107 - op: replace
108 path: /spec/rules/0/host
109 value: new-service-a.k8s.com
110 `)
111
112 th.WriteF("service-b.yaml", `
113 apiVersion: apps/v1
114 kind: Deployment
115 metadata:
116 name: service-b
117 spec:
118 replicas: 1
119 selector:
120 matchLabels:
121 app.kubernetes.io/component: service-b
122 template:
123 metadata:
124 labels:
125 app.kubernetes.io/component: service-b
126 spec:
127 containers:
128 - image: repository/service-b:v1
129 imagePullPolicy: Always
130 name: service-b
131 ports:
132 - containerPort: 8080
133 env:
134 - name: REDIRECT_URI
135 value: "http://$(SERVICE_A_DNS_NAME):80/oauth_redir"
136 ---
137 apiVersion: v1
138 kind: Service
139 metadata:
140 name: service-b
141 labels:
142 app.kubernetes.io/component: service-b
143 spec:
144 type: LoadBalancer
145 ports:
146 - port: 8080
147 selector:
148 app.kubernetes.io/component: service-b
149 ---
150 apiVersion: networking.k8s.io/v1
151 kind: Ingress
152 metadata:
153 name: service-b
154 spec:
155 rules:
156 - host: service-b.k8s.com
157 http:
158 paths:
159 - path: /
160 pathType: Prefix
161 backend:
162 service:
163 name: service-b
164 port:
165 number: 8080
166 `)
167 th.WriteF("service-b-patch.yaml", `
168 - op: replace
169 path: /spec/rules/0/host
170 value: new-service-b.k8s.com
171 `)
172 m := th.Run(".", opts)
173 th.AssertActualEqualsExpected(
174 m, `
175 apiVersion: apps/v1
176 kind: Deployment
177 metadata:
178 name: service-a
179 spec:
180 replicas: 1
181 selector:
182 matchLabels:
183 app.kubernetes.io/component: service-a
184 template:
185 metadata:
186 labels:
187 app.kubernetes.io/component: service-a
188 spec:
189 containers:
190 - env:
191 - name: REDIRECT_URI
192 value: http://new-service-b.k8s.com:80/oauth_redir
193 image: repository/service-a:v1
194 imagePullPolicy: Always
195 name: service-b
196 ports:
197 - containerPort: 8080
198 ---
199 apiVersion: v1
200 kind: Service
201 metadata:
202 labels:
203 app.kubernetes.io/component: service-a
204 name: service-a
205 spec:
206 ports:
207 - port: 8080
208 selector:
209 app.kubernetes.io/component: service-a
210 type: LoadBalancer
211 ---
212 apiVersion: networking.k8s.io/v1
213 kind: Ingress
214 metadata:
215 name: service-a
216 spec:
217 rules:
218 - host: new-service-a.k8s.com
219 http:
220 paths:
221 - backend:
222 service:
223 name: service-a
224 port:
225 number: 8080
226 path: /
227 pathType: Prefix
228 ---
229 apiVersion: apps/v1
230 kind: Deployment
231 metadata:
232 name: service-b
233 spec:
234 replicas: 1
235 selector:
236 matchLabels:
237 app.kubernetes.io/component: service-b
238 template:
239 metadata:
240 labels:
241 app.kubernetes.io/component: service-b
242 spec:
243 containers:
244 - env:
245 - name: REDIRECT_URI
246 value: http://new-service-a.k8s.com:80/oauth_redir
247 image: repository/service-b:v1
248 imagePullPolicy: Always
249 name: service-b
250 ports:
251 - containerPort: 8080
252 ---
253 apiVersion: v1
254 kind: Service
255 metadata:
256 labels:
257 app.kubernetes.io/component: service-b
258 name: service-b
259 spec:
260 ports:
261 - port: 8080
262 selector:
263 app.kubernetes.io/component: service-b
264 type: LoadBalancer
265 ---
266 apiVersion: networking.k8s.io/v1
267 kind: Ingress
268 metadata:
269 name: service-b
270 spec:
271 rules:
272 - host: new-service-b.k8s.com
273 http:
274 paths:
275 - backend:
276 service:
277 name: service-b
278 port:
279 number: 8080
280 path: /
281 pathType: Prefix
282 `)
283 }
284
View as plain text