Files
kustomize/api/krusty/inlinelabels_test.go
2022-10-08 20:38:44 -03:00

528 lines
9.6 KiB
Go

// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
const resources string = `apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
template:
spec:
containers:
- name: my-deployment
livenessProbe:
httpGet:
path: /healthz
port: 8080
---
apiVersion: example.dev/v1
kind: MyCRD
metadata:
name: crd
`
func TestKustomizationLabels(t *testing.T) {
th := kusttest_test.MakeHarness(t)
makeResourcesForPatchTest(th)
th.WriteK("/app", `
resources:
- deployment.yaml
labels:
- pairs:
foo: bar
- pairs:
a: b
includeSelectors: true
- pairs:
c: d
fields:
- path: spec/selector
group: example.dev
version: v1
kind: MyCRD
create: true
`)
th.WriteF("/app/deployment.yaml", resources)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
a: b
c: d
foo: bar
name: my-deployment
spec:
selector:
matchLabels:
a: b
template:
metadata:
labels:
a: b
spec:
containers:
- livenessProbe:
httpGet:
path: /healthz
port: 8080
name: my-deployment
---
apiVersion: example.dev/v1
kind: MyCRD
metadata:
labels:
a: b
c: d
foo: bar
name: crd
spec:
selector:
c: d
`)
}
func TestKustomizationLabelsInDeploymentTemplate(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteF("app/deployment.yaml", `
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
name: deployment
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
template:
metadata:
labels:
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
`)
th.WriteK("/app", `
resources:
- deployment.yaml
labels:
- pairs:
foo: bar
includeSelectors: false
includeTemplates: true
`)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
foo: bar
name: deployment
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
template:
metadata:
labels:
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
foo: bar
`)
}
func TestKustomizationLabelsInTemplateWhenLabelsIsNil(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteF("app/deployment.yaml", `
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
spec:
replicas: 1
template:
spec:
containers:
- name: test-server
image: test-server
`)
th.WriteK("/app", `
resources:
- deployment.yaml
commonLabels:
app: test-server
labels:
- pairs:
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
includeSelectors: false
includeTemplates: true
`)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test-server
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
name: deployment
spec:
replicas: 1
selector:
matchLabels:
app: test-server
template:
metadata:
labels:
app: test-server
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
spec:
containers:
- image: test-server
name: test-server
`)
}
func TestKustomizationLabelsDoesNotCreateInvalidTemplatePaths(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteF("app/deployment.yaml", `
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
spec:
replicas: 1
template:
spec:
containers:
- name: test-server
image: test-server
`)
th.WriteF("app/service.yaml", `
apiVersion: v1
kind: Service
metadata:
name: service
spec:
ports:
- port: 80
protocol: TCP
targetPort: 9376
`)
th.WriteK("/app", `
resources:
- deployment.yaml
- service.yaml
commonLabels:
app: test-server
labels:
- pairs:
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
includeSelectors: false
includeTemplates: true
`)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test-server
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
name: deployment
spec:
replicas: 1
selector:
matchLabels:
app: test-server
template:
metadata:
labels:
app: test-server
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
spec:
containers:
- image: test-server
name: test-server
---
apiVersion: v1
kind: Service
metadata:
labels:
app: test-server
app.kubernetes.io/component: a
app.kubernetes.io/instance: b
app.kubernetes.io/name: c
app.kubernetes.io/part-of: d
name: service
spec:
ports:
- port: 80
protocol: TCP
targetPort: 9376
selector:
app: test-server
`)
}
func TestKustomizationLabelsInDaemonSetTemplate(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteF("app/ds.yaml", `
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app.kubernetes.io/name: daemon
name: daemon
spec:
selector:
matchLabels:
app.kubernetes.io/name: daemon
template:
metadata:
labels:
app.kubernetes.io/name: daemon
`)
th.WriteK("/app", `
resources:
- ds.yaml
labels:
- pairs:
foo: bar
includeSelectors: false
includeTemplates: true
`)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app.kubernetes.io/name: daemon
foo: bar
name: daemon
spec:
selector:
matchLabels:
app.kubernetes.io/name: daemon
template:
metadata:
labels:
app.kubernetes.io/name: daemon
foo: bar
`)
}
func TestKustomizationLabelsInStatefulSetTemplate(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteF("app/sts.yaml", `
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/name: set
name: set
spec:
replicas: 3
selector:
matchLabels:
app.kubernetes.io/name: set
serviceName: set
template:
metadata:
labels:
app.kubernetes.io/name: set
`)
th.WriteK("/app", `
resources:
- sts.yaml
labels:
- pairs:
foo: bar
includeSelectors: false
includeTemplates: true
`)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/name: set
foo: bar
name: set
spec:
replicas: 3
selector:
matchLabels:
app.kubernetes.io/name: set
serviceName: set
template:
metadata:
labels:
app.kubernetes.io/name: set
foo: bar
`)
}
func TestKustomizationLabelsInCronJobTemplate(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteF("app/cjob.yaml", `
apiVersion: batch/v1
kind: CronJob
metadata:
labels:
app.kubernetes.io/name: job
name: job
spec:
jobTemplate:
spec:
backoffLimit: 4
template:
metadata:
labels:
app.kubernetes.io/name: job
spec:
restartPolicy: Never
schedule: '* * * * *'
`)
th.WriteK("/app", `
resources:
- cjob.yaml
labels:
- pairs:
foo: bar
includeSelectors: false
includeTemplates: true
`)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: batch/v1
kind: CronJob
metadata:
labels:
app.kubernetes.io/name: job
foo: bar
name: job
spec:
jobTemplate:
metadata:
labels:
foo: bar
spec:
backoffLimit: 4
template:
metadata:
labels:
app.kubernetes.io/name: job
foo: bar
spec:
restartPolicy: Never
schedule: '* * * * *'
`)
}
func TestKustomizationLabelsInJobTemplate(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteF("app/job.yaml", `
apiVersion: batch/v1
kind: Job
metadata:
labels:
app.kubernetes.io/name: job
name: job
spec:
backoffLimit: 4
template:
metadata:
labels:
app.kubernetes.io/name: job
spec:
restartPolicy: Never
`)
th.WriteK("/app", `
resources:
- job.yaml
labels:
- pairs:
foo: bar
includeSelectors: false
includeTemplates: true
`)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: batch/v1
kind: Job
metadata:
labels:
app.kubernetes.io/name: job
foo: bar
name: job
spec:
backoffLimit: 4
template:
metadata:
labels:
app.kubernetes.io/name: job
foo: bar
spec:
restartPolicy: Never
`)
}