mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
308 lines
6.0 KiB
Go
308 lines
6.0 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"
|
|
)
|
|
|
|
func writeMediumBase(th kusttest_test.Harness) {
|
|
th.WriteK("base", `
|
|
namePrefix: baseprefix-
|
|
commonLabels:
|
|
foo: bar
|
|
commonAnnotations:
|
|
baseAnno: This is a base annotation
|
|
resources:
|
|
- deployment/deployment.yaml
|
|
- service/service.yaml
|
|
`)
|
|
th.WriteF("base/service/service.yaml", `
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mungebot-service
|
|
labels:
|
|
app: mungebot
|
|
spec:
|
|
ports:
|
|
- port: 7002
|
|
selector:
|
|
app: mungebot
|
|
`)
|
|
th.WriteF("base/deployment/deployment.yaml", `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mungebot
|
|
labels:
|
|
app: mungebot
|
|
spec:
|
|
replicas: 1
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: mungebot
|
|
spec:
|
|
containers:
|
|
- name: nginx
|
|
image: nginx
|
|
env:
|
|
- name: foo
|
|
value: bar
|
|
ports:
|
|
- containerPort: 80
|
|
`)
|
|
}
|
|
|
|
func TestMediumBase(t *testing.T) {
|
|
th := kusttest_test.MakeHarness(t)
|
|
writeMediumBase(th)
|
|
m := th.Run("base", th.MakeDefaultOptions())
|
|
th.AssertActualEqualsExpected(m, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
annotations:
|
|
baseAnno: This is a base annotation
|
|
labels:
|
|
app: mungebot
|
|
foo: bar
|
|
name: baseprefix-mungebot
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
foo: bar
|
|
template:
|
|
metadata:
|
|
annotations:
|
|
baseAnno: This is a base annotation
|
|
labels:
|
|
app: mungebot
|
|
foo: bar
|
|
spec:
|
|
containers:
|
|
- env:
|
|
- name: foo
|
|
value: bar
|
|
image: nginx
|
|
name: nginx
|
|
ports:
|
|
- containerPort: 80
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
annotations:
|
|
baseAnno: This is a base annotation
|
|
labels:
|
|
app: mungebot
|
|
foo: bar
|
|
name: baseprefix-mungebot-service
|
|
spec:
|
|
ports:
|
|
- port: 7002
|
|
selector:
|
|
app: mungebot
|
|
foo: bar
|
|
`)
|
|
}
|
|
|
|
func TestMediumOverlay(t *testing.T) {
|
|
th := kusttest_test.MakeHarness(t)
|
|
writeMediumBase(th)
|
|
th.WriteK("overlay", `
|
|
namePrefix: test-infra-
|
|
commonLabels:
|
|
app: mungebot
|
|
org: kubernetes
|
|
repo: test-infra
|
|
commonAnnotations:
|
|
note: This is a test annotation
|
|
resources:
|
|
- ../base
|
|
patchesStrategicMerge:
|
|
- deployment/deployment.yaml
|
|
configMapGenerator:
|
|
- name: app-env
|
|
envs:
|
|
- configmap/db.env
|
|
- configmap/units.ini
|
|
- configmap/food.ini
|
|
- name: app-config
|
|
files:
|
|
- nonsense=configmap/dummy.txt
|
|
images:
|
|
- name: nginx
|
|
newTag: 1.8.0`)
|
|
|
|
th.WriteF("overlay/configmap/db.env", `
|
|
DB_USERNAME=admin
|
|
DB_PASSWORD=somepw
|
|
`)
|
|
th.WriteF("overlay/configmap/units.ini", `
|
|
LENGTH=kilometer
|
|
ENERGY=electronvolt
|
|
`)
|
|
th.WriteF("overlay/configmap/food.ini", `
|
|
FRUIT=banana
|
|
LEGUME=chickpea
|
|
`)
|
|
th.WriteF("overlay/configmap/dummy.txt",
|
|
`Lorem ipsum dolor sit amet, consectetur
|
|
adipiscing elit, sed do eiusmod tempor
|
|
incididunt ut labore et dolore magna aliqua.
|
|
`)
|
|
th.WriteF("overlay/deployment/deployment.yaml", `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mungebot
|
|
spec:
|
|
replicas: 2
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: nginx
|
|
image: nginx:1.7.9
|
|
env:
|
|
- name: FOO
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: app-env
|
|
key: somekey
|
|
- name: busybox
|
|
image: busybox
|
|
envFrom:
|
|
- configMapRef:
|
|
name: someConfigMap
|
|
- configMapRef:
|
|
name: app-env
|
|
volumeMounts:
|
|
- mountPath: /tmp/env
|
|
name: app-env
|
|
volumes:
|
|
- configMap:
|
|
name: app-env
|
|
name: app-env
|
|
`)
|
|
m := th.Run("overlay", th.MakeDefaultOptions())
|
|
th.AssertActualEqualsExpected(m, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
annotations:
|
|
baseAnno: This is a base annotation
|
|
note: This is a test annotation
|
|
labels:
|
|
app: mungebot
|
|
foo: bar
|
|
org: kubernetes
|
|
repo: test-infra
|
|
name: test-infra-baseprefix-mungebot
|
|
spec:
|
|
replicas: 2
|
|
selector:
|
|
matchLabels:
|
|
app: mungebot
|
|
foo: bar
|
|
org: kubernetes
|
|
repo: test-infra
|
|
template:
|
|
metadata:
|
|
annotations:
|
|
baseAnno: This is a base annotation
|
|
note: This is a test annotation
|
|
labels:
|
|
app: mungebot
|
|
foo: bar
|
|
org: kubernetes
|
|
repo: test-infra
|
|
spec:
|
|
containers:
|
|
- env:
|
|
- name: FOO
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
key: somekey
|
|
name: test-infra-app-env-8h5mh7f7ch
|
|
- name: foo
|
|
value: bar
|
|
image: nginx:1.8.0
|
|
name: nginx
|
|
ports:
|
|
- containerPort: 80
|
|
- envFrom:
|
|
- configMapRef:
|
|
name: someConfigMap
|
|
- configMapRef:
|
|
name: test-infra-app-env-8h5mh7f7ch
|
|
image: busybox
|
|
name: busybox
|
|
volumeMounts:
|
|
- mountPath: /tmp/env
|
|
name: app-env
|
|
volumes:
|
|
- configMap:
|
|
name: test-infra-app-env-8h5mh7f7ch
|
|
name: app-env
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
annotations:
|
|
baseAnno: This is a base annotation
|
|
note: This is a test annotation
|
|
labels:
|
|
app: mungebot
|
|
foo: bar
|
|
org: kubernetes
|
|
repo: test-infra
|
|
name: test-infra-baseprefix-mungebot-service
|
|
spec:
|
|
ports:
|
|
- port: 7002
|
|
selector:
|
|
app: mungebot
|
|
foo: bar
|
|
org: kubernetes
|
|
repo: test-infra
|
|
---
|
|
apiVersion: v1
|
|
data:
|
|
DB_PASSWORD: somepw
|
|
DB_USERNAME: admin
|
|
ENERGY: electronvolt
|
|
FRUIT: banana
|
|
LEGUME: chickpea
|
|
LENGTH: kilometer
|
|
kind: ConfigMap
|
|
metadata:
|
|
annotations:
|
|
note: This is a test annotation
|
|
labels:
|
|
app: mungebot
|
|
org: kubernetes
|
|
repo: test-infra
|
|
name: test-infra-app-env-8h5mh7f7ch
|
|
---
|
|
apiVersion: v1
|
|
data:
|
|
nonsense: "Lorem ipsum dolor sit amet, consectetur\nadipiscing elit, sed do eiusmod
|
|
tempor\nincididunt ut labore et dolore magna aliqua. \n"
|
|
kind: ConfigMap
|
|
metadata:
|
|
annotations:
|
|
note: This is a test annotation
|
|
labels:
|
|
app: mungebot
|
|
org: kubernetes
|
|
repo: test-infra
|
|
name: test-infra-app-config-49d6f5h7b5
|
|
`)
|
|
}
|