Skip to content

Commit 91e002a

Browse files
authored
Merge pull request #4751 from aibarbetta/fix-4717
[address #4717] create template/metadata when using includeTemplates if not present
2 parents 1b0fe2a + 15545cc commit 91e002a

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

api/internal/target/kusttarget_configplugin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
288288
} else {
289289
// merge spec/template/metadata fieldSpec if includeTemplate flag is true
290290
if label.IncludeTemplates {
291-
fss, err = fss.MergeOne(types.FieldSpec{Path: "spec/template/metadata/labels", CreateIfNotPresent: false})
291+
fss, err = fss.MergeOne(types.FieldSpec{Path: "spec/template/metadata/labels", CreateIfNotPresent: true})
292292
if err != nil {
293293
return nil, errors.Wrap(err, "failed to merge template fieldSpec")
294294
}

api/krusty/inlinelabels_test.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,66 @@ spec:
160160
foo: bar
161161
`)
162162
}
163+
164+
func TestKustomizationLabelsInTemplateWhenLabelsIsNil(t *testing.T) {
165+
th := kusttest_test.MakeHarness(t)
166+
th.WriteF("app/deployment.yaml", `
167+
apiVersion: apps/v1
168+
kind: Deployment
169+
metadata:
170+
name: deployment
171+
spec:
172+
replicas: 1
173+
template:
174+
spec:
175+
containers:
176+
- name: test-server
177+
image: test-server
178+
`)
179+
th.WriteK("/app", `
180+
resources:
181+
- deployment.yaml
182+
183+
commonLabels:
184+
app: test-server
185+
186+
labels:
187+
- pairs:
188+
app.kubernetes.io/component: a
189+
app.kubernetes.io/instance: b
190+
app.kubernetes.io/name: c
191+
app.kubernetes.io/part-of: d
192+
includeSelectors: false
193+
includeTemplates: true
194+
`)
195+
m := th.Run("/app", th.MakeDefaultOptions())
196+
th.AssertActualEqualsExpected(m, `
197+
apiVersion: apps/v1
198+
kind: Deployment
199+
metadata:
200+
labels:
201+
app: test-server
202+
app.kubernetes.io/component: a
203+
app.kubernetes.io/instance: b
204+
app.kubernetes.io/name: c
205+
app.kubernetes.io/part-of: d
206+
name: deployment
207+
spec:
208+
replicas: 1
209+
selector:
210+
matchLabels:
211+
app: test-server
212+
template:
213+
metadata:
214+
labels:
215+
app: test-server
216+
app.kubernetes.io/component: a
217+
app.kubernetes.io/instance: b
218+
app.kubernetes.io/name: c
219+
app.kubernetes.io/part-of: d
220+
spec:
221+
containers:
222+
- image: test-server
223+
name: test-server
224+
`)
225+
}

0 commit comments

Comments
 (0)