mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-18 12:42:19 +00:00
217 lines
4.0 KiB
Go
217 lines
4.0 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package target_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"sigs.k8s.io/kustomize/api/testutils/kusttest"
|
|
)
|
|
|
|
// Demo custom configuration of a builtin transformation.
|
|
// This is a NamePrefixer that only touches Deployments
|
|
// and Services.
|
|
func TestCustomNamePrefixer(t *testing.T) {
|
|
tc := kusttest_test.NewPluginTestEnv(t).Set()
|
|
defer tc.Reset()
|
|
|
|
tc.BuildGoPlugin(
|
|
"builtin", "", "PrefixSuffixTransformer")
|
|
|
|
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
|
|
|
|
th.WriteK("/app", `
|
|
resources:
|
|
- deployment.yaml
|
|
- role.yaml
|
|
- service.yaml
|
|
transformers:
|
|
- prefixer.yaml
|
|
`)
|
|
th.WriteF("/app/prefixer.yaml", `
|
|
apiVersion: builtin
|
|
kind: PrefixSuffixTransformer
|
|
metadata:
|
|
name: customPrefixer
|
|
prefix: zzz-
|
|
fieldSpecs:
|
|
- kind: Deployment
|
|
path: metadata/name
|
|
- kind: Service
|
|
path: metadata/name
|
|
`)
|
|
th.WriteF("/app/deployment.yaml", `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: myDeployment
|
|
spec:
|
|
template:
|
|
metadata:
|
|
labels:
|
|
backend: awesome
|
|
spec:
|
|
containers:
|
|
- name: whatever
|
|
image: whatever
|
|
`)
|
|
th.WriteF("/app/role.yaml", `
|
|
apiVersion: v1
|
|
kind: Role
|
|
metadata:
|
|
name: myRole
|
|
`)
|
|
th.WriteF("/app/service.yaml", `
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: myService
|
|
`)
|
|
|
|
m, err := th.MakeKustTarget().MakeCustomizedResMap()
|
|
if err != nil {
|
|
t.Fatalf("Err: %v", err)
|
|
}
|
|
th.AssertActualEqualsExpected(m, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: zzz-myDeployment
|
|
spec:
|
|
template:
|
|
metadata:
|
|
labels:
|
|
backend: awesome
|
|
spec:
|
|
containers:
|
|
- image: whatever
|
|
name: whatever
|
|
---
|
|
apiVersion: v1
|
|
kind: Role
|
|
metadata:
|
|
name: myRole
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: zzz-myService
|
|
`)
|
|
}
|
|
|
|
// Demo custom configuration as a base.
|
|
func TestReusableCustomNamePrefixer(t *testing.T) {
|
|
tc := kusttest_test.NewPluginTestEnv(t).Set()
|
|
defer tc.Reset()
|
|
|
|
tc.BuildGoPlugin(
|
|
"builtin", "", "PrefixSuffixTransformer")
|
|
tc.BuildGoPlugin(
|
|
"builtin", "", "LabelTransformer")
|
|
|
|
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app/foo")
|
|
|
|
// This kustomization file contains resources that
|
|
// all happen to be plugin configurations. This makes
|
|
// these plugins all available as part of a base,
|
|
// re-usable in any number of other kustomizations.
|
|
// Just specify the path (or URL) to this base in the
|
|
// "transformers:" field (not the "resources" field).
|
|
th.WriteK("/app/mytransformers", `
|
|
resources:
|
|
- prefixer.yaml
|
|
- labeller.yaml
|
|
`)
|
|
th.WriteF("/app/mytransformers/prefixer.yaml", `
|
|
apiVersion: builtin
|
|
kind: PrefixSuffixTransformer
|
|
metadata:
|
|
name: myPrefixer
|
|
prefix: zzz-
|
|
fieldSpecs:
|
|
- kind: Deployment
|
|
path: metadata/name
|
|
- kind: Service
|
|
path: metadata/name
|
|
`)
|
|
th.WriteF("/app/mytransformers/labeller.yaml", `
|
|
apiVersion: builtin
|
|
kind: LabelTransformer
|
|
metadata:
|
|
name: myLabeller
|
|
labels:
|
|
company: acmeCorp
|
|
fieldSpecs:
|
|
- path: spec/template/metadata/labels
|
|
kind: Deployment
|
|
`)
|
|
|
|
th.WriteK("/app/foo", `
|
|
resources:
|
|
- deployment.yaml
|
|
- role.yaml
|
|
- service.yaml
|
|
transformers:
|
|
- ../mytransformers
|
|
`)
|
|
th.WriteF("/app/foo/deployment.yaml", `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: myDeployment
|
|
spec:
|
|
template:
|
|
metadata:
|
|
labels:
|
|
backend: awesome
|
|
spec:
|
|
containers:
|
|
- name: whatever
|
|
image: whatever
|
|
`)
|
|
th.WriteF("/app/foo/role.yaml", `
|
|
apiVersion: v1
|
|
kind: Role
|
|
metadata:
|
|
name: myRole
|
|
`)
|
|
th.WriteF("/app/foo/service.yaml", `
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: myService
|
|
`)
|
|
|
|
m, err := th.MakeKustTarget().MakeCustomizedResMap()
|
|
if err != nil {
|
|
t.Fatalf("Err: %v", err)
|
|
}
|
|
th.AssertActualEqualsExpected(m, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: zzz-myDeployment
|
|
spec:
|
|
template:
|
|
metadata:
|
|
labels:
|
|
backend: awesome
|
|
company: acmeCorp
|
|
spec:
|
|
containers:
|
|
- image: whatever
|
|
name: whatever
|
|
---
|
|
apiVersion: v1
|
|
kind: Role
|
|
metadata:
|
|
name: myRole
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: zzz-myService
|
|
`)
|
|
}
|