mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-13 18:10:59 +00:00
set transformer annotation when the option is specified
This commit is contained in:
@@ -83,20 +83,24 @@ func (l *Loader) LoadGenerator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *Loader) LoadTransformers(
|
func (l *Loader) LoadTransformers(
|
||||||
ldr ifc.Loader, v ifc.Validator, rm resmap.ResMap) ([]resmap.Transformer, error) {
|
ldr ifc.Loader, v ifc.Validator, rm resmap.ResMap) ([]*resmap.TransformerWithProperties, error) {
|
||||||
var result []resmap.Transformer
|
var result []*resmap.TransformerWithProperties
|
||||||
for _, res := range rm.Resources() {
|
for _, res := range rm.Resources() {
|
||||||
t, err := l.LoadTransformer(ldr, v, res)
|
t, err := l.LoadTransformer(ldr, v, res)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
result = append(result, t)
|
transformerOrigin, err := resource.OriginFromCustomPlugin(res)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
result = append(result, &resmap.TransformerWithProperties{Transformer: t, Origin: transformerOrigin})
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *Loader) LoadTransformer(
|
func (l *Loader) LoadTransformer(
|
||||||
ldr ifc.Loader, v ifc.Validator, res *resource.Resource) (resmap.Transformer, error) {
|
ldr ifc.Loader, v ifc.Validator, res *resource.Resource) (*resmap.TransformerWithProperties, error) {
|
||||||
c, err := l.loadAndConfigurePlugin(ldr, v, res)
|
c, err := l.loadAndConfigurePlugin(ldr, v, res)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -105,7 +109,7 @@ func (l *Loader) LoadTransformer(
|
|||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("plugin %s not a transformer", res.OrgId())
|
return nil, fmt.Errorf("plugin %s not a transformer", res.OrgId())
|
||||||
}
|
}
|
||||||
return t, nil
|
return &resmap.TransformerWithProperties{Transformer: t}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func relativePluginPath(id resid.ResId) string {
|
func relativePluginPath(id resid.ResId) string {
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ func (kt *KustTarget) MakeCustomizedResMap() (resmap.ResMap, error) {
|
|||||||
|
|
||||||
func (kt *KustTarget) makeCustomizedResMap() (resmap.ResMap, error) {
|
func (kt *KustTarget) makeCustomizedResMap() (resmap.ResMap, error) {
|
||||||
var origin *resource.Origin
|
var origin *resource.Origin
|
||||||
if utils.StringSliceContains(kt.kustomization.BuildMetadata, types.OriginAnnotations) {
|
if len(kt.kustomization.BuildMetadata) != 0 {
|
||||||
origin = &resource.Origin{}
|
origin = &resource.Origin{}
|
||||||
}
|
}
|
||||||
ra, err := kt.AccumulateTarget(origin)
|
ra, err := kt.AccumulateTarget(origin)
|
||||||
@@ -215,7 +215,7 @@ func (kt *KustTarget) accumulateTarget(ra *accumulator.ResAccumulator, origin *r
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = kt.runTransformers(ra)
|
err = kt.runTransformers(ra, origin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -262,7 +262,6 @@ func (kt *KustTarget) runGenerators(
|
|||||||
return errors.Wrap(err, "loading generator plugins")
|
return errors.Wrap(err, "loading generator plugins")
|
||||||
}
|
}
|
||||||
generators = append(generators, gs...)
|
generators = append(generators, gs...)
|
||||||
|
|
||||||
for i, g := range generators {
|
for i, g := range generators {
|
||||||
resMap, err := g.Generate()
|
resMap, err := g.Generate()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -293,14 +292,13 @@ func (kt *KustTarget) configureExternalGenerators(origin *resource.Origin) (
|
|||||||
// not an inline config
|
// not an inline config
|
||||||
generatorPaths = append(generatorPaths, p)
|
generatorPaths = append(generatorPaths, p)
|
||||||
continue
|
continue
|
||||||
} else {
|
}
|
||||||
// inline config, track the origin
|
// inline config, track the origin
|
||||||
if origin != nil {
|
if origin != nil {
|
||||||
resources := rm.Resources()
|
resources := rm.Resources()
|
||||||
for _, r := range resources {
|
for _, r := range resources {
|
||||||
r.SetOrigin(origin.Append(kt.kustFileName))
|
r.SetOrigin(origin.Append(kt.kustFileName))
|
||||||
rm.Replace(r)
|
rm.Replace(r)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ra.AppendAll(rm)
|
ra.AppendAll(rm)
|
||||||
@@ -312,23 +310,27 @@ func (kt *KustTarget) configureExternalGenerators(origin *resource.Origin) (
|
|||||||
return kt.pLdr.LoadGenerators(kt.ldr, kt.validator, ra.ResMap())
|
return kt.pLdr.LoadGenerators(kt.ldr, kt.validator, ra.ResMap())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kt *KustTarget) runTransformers(ra *accumulator.ResAccumulator) error {
|
func (kt *KustTarget) runTransformers(ra *accumulator.ResAccumulator, origin *resource.Origin) error {
|
||||||
var r []resmap.Transformer
|
var r []*resmap.TransformerWithProperties
|
||||||
tConfig := ra.GetTransformerConfig()
|
tConfig := ra.GetTransformerConfig()
|
||||||
lts, err := kt.configureBuiltinTransformers(tConfig)
|
lts, err := kt.configureBuiltinTransformers(tConfig, origin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r = append(r, lts...)
|
r = append(r, lts...)
|
||||||
lts, err = kt.configureExternalTransformers(kt.kustomization.Transformers)
|
lts, err = kt.configureExternalTransformers(kt.kustomization.Transformers, origin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r = append(r, lts...)
|
r = append(r, lts...)
|
||||||
return ra.Transform(newMultiTransformer(r))
|
err = ra.Transform(newMultiTransformer(r))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kt *KustTarget) configureExternalTransformers(transformers []string) ([]resmap.Transformer, error) {
|
func (kt *KustTarget) configureExternalTransformers(transformers []string, origin *resource.Origin) ([]*resmap.TransformerWithProperties, error) {
|
||||||
ra := accumulator.MakeEmptyAccumulator()
|
ra := accumulator.MakeEmptyAccumulator()
|
||||||
var transformerPaths []string
|
var transformerPaths []string
|
||||||
for _, p := range transformers {
|
for _, p := range transformers {
|
||||||
@@ -339,9 +341,17 @@ func (kt *KustTarget) configureExternalTransformers(transformers []string) ([]re
|
|||||||
transformerPaths = append(transformerPaths, p)
|
transformerPaths = append(transformerPaths, p)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
// inline config, track the origin
|
||||||
|
if origin != nil {
|
||||||
|
resources := rm.Resources()
|
||||||
|
for _, r := range resources {
|
||||||
|
r.SetOrigin(origin.Append(kt.kustFileName))
|
||||||
|
rm.Replace(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
ra.AppendAll(rm)
|
ra.AppendAll(rm)
|
||||||
}
|
}
|
||||||
ra, err := kt.accumulateResources(ra, transformerPaths, &resource.Origin{})
|
ra, err := kt.accumulateResources(ra, transformerPaths, origin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -349,7 +359,7 @@ func (kt *KustTarget) configureExternalTransformers(transformers []string) ([]re
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (kt *KustTarget) runValidators(ra *accumulator.ResAccumulator) error {
|
func (kt *KustTarget) runValidators(ra *accumulator.ResAccumulator) error {
|
||||||
validators, err := kt.configureExternalTransformers(kt.kustomization.Validators)
|
validators, err := kt.configureExternalTransformers(kt.kustomization.Validators, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ func (kt *KustTarget) configureBuiltinGenerators(origin *resource.Origin) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (kt *KustTarget) configureBuiltinTransformers(
|
func (kt *KustTarget) configureBuiltinTransformers(
|
||||||
tc *builtinconfig.TransformerConfig) (
|
tc *builtinconfig.TransformerConfig, origin *resource.Origin) (
|
||||||
result []resmap.Transformer, err error) {
|
result []*resmap.TransformerWithProperties, err error) {
|
||||||
for _, bpt := range []builtinhelpers.BuiltinPluginType{
|
for _, bpt := range []builtinhelpers.BuiltinPluginType{
|
||||||
builtinhelpers.PatchStrategicMergeTransformer,
|
builtinhelpers.PatchStrategicMergeTransformer,
|
||||||
builtinhelpers.PatchTransformer,
|
builtinhelpers.PatchTransformer,
|
||||||
@@ -86,7 +86,23 @@ func (kt *KustTarget) configureBuiltinTransformers(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
result = append(result, r...)
|
var transformerOrigin *resource.Origin
|
||||||
|
if origin != nil {
|
||||||
|
transformerOrigin = &resource.Origin{
|
||||||
|
Repo: origin.Repo,
|
||||||
|
Ref: origin.Ref,
|
||||||
|
ConfiguredIn: filepath.Join(origin.Path, kt.kustFileName),
|
||||||
|
ConfiguredBy: yaml.ResourceIdentifier{
|
||||||
|
TypeMeta: yaml.TypeMeta{
|
||||||
|
APIVersion: "builtin",
|
||||||
|
Kind: bpt.String(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for i := range r {
|
||||||
|
result = append(result, &resmap.TransformerWithProperties{Transformer: r[i], Origin: transformerOrigin})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
@@ -169,6 +185,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
|||||||
builtinhelpers.NamespaceTransformer: func(
|
builtinhelpers.NamespaceTransformer: func(
|
||||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||||
result []resmap.Transformer, err error) {
|
result []resmap.Transformer, err error) {
|
||||||
|
if kt.kustomization.Namespace == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
var c struct {
|
var c struct {
|
||||||
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
||||||
FieldSpecs []types.FieldSpec
|
FieldSpecs []types.FieldSpec
|
||||||
@@ -252,6 +271,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
|||||||
builtinhelpers.LabelTransformer: func(
|
builtinhelpers.LabelTransformer: func(
|
||||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||||
result []resmap.Transformer, err error) {
|
result []resmap.Transformer, err error) {
|
||||||
|
if len(kt.kustomization.Labels) == 0 && len(kt.kustomization.CommonLabels) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
for _, label := range kt.kustomization.Labels {
|
for _, label := range kt.kustomization.Labels {
|
||||||
var c struct {
|
var c struct {
|
||||||
Labels map[string]string
|
Labels map[string]string
|
||||||
@@ -294,6 +316,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
|||||||
builtinhelpers.AnnotationsTransformer: func(
|
builtinhelpers.AnnotationsTransformer: func(
|
||||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||||
result []resmap.Transformer, err error) {
|
result []resmap.Transformer, err error) {
|
||||||
|
if len(kt.kustomization.CommonAnnotations) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
var c struct {
|
var c struct {
|
||||||
Annotations map[string]string
|
Annotations map[string]string
|
||||||
FieldSpecs []types.FieldSpec
|
FieldSpecs []types.FieldSpec
|
||||||
@@ -311,6 +336,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
|||||||
builtinhelpers.PrefixTransformer: func(
|
builtinhelpers.PrefixTransformer: func(
|
||||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||||
result []resmap.Transformer, err error) {
|
result []resmap.Transformer, err error) {
|
||||||
|
if kt.kustomization.NamePrefix == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
var c struct {
|
var c struct {
|
||||||
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
|
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
|
||||||
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
|
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
|
||||||
@@ -328,6 +356,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
|||||||
builtinhelpers.SuffixTransformer: func(
|
builtinhelpers.SuffixTransformer: func(
|
||||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||||
result []resmap.Transformer, err error) {
|
result []resmap.Transformer, err error) {
|
||||||
|
if kt.kustomization.NameSuffix == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
var c struct {
|
var c struct {
|
||||||
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
|
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
|
||||||
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
|
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
|
||||||
@@ -364,6 +395,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
|||||||
builtinhelpers.ReplacementTransformer: func(
|
builtinhelpers.ReplacementTransformer: func(
|
||||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) (
|
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) (
|
||||||
result []resmap.Transformer, err error) {
|
result []resmap.Transformer, err error) {
|
||||||
|
if len(kt.kustomization.Replacements) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
var c struct {
|
var c struct {
|
||||||
Replacements []types.ReplacementField
|
Replacements []types.ReplacementField
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,15 +9,15 @@ import (
|
|||||||
|
|
||||||
// multiTransformer contains a list of transformers.
|
// multiTransformer contains a list of transformers.
|
||||||
type multiTransformer struct {
|
type multiTransformer struct {
|
||||||
transformers []resmap.Transformer
|
transformers []*resmap.TransformerWithProperties
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ resmap.Transformer = &multiTransformer{}
|
var _ resmap.Transformer = &multiTransformer{}
|
||||||
|
|
||||||
// newMultiTransformer constructs a multiTransformer.
|
// newMultiTransformer constructs a multiTransformer.
|
||||||
func newMultiTransformer(t []resmap.Transformer) resmap.Transformer {
|
func newMultiTransformer(t []*resmap.TransformerWithProperties) resmap.Transformer {
|
||||||
r := &multiTransformer{
|
r := &multiTransformer{
|
||||||
transformers: make([]resmap.Transformer, len(t)),
|
transformers: make([]*resmap.TransformerWithProperties, len(t)),
|
||||||
}
|
}
|
||||||
copy(r.transformers, t)
|
copy(r.transformers, t)
|
||||||
return r
|
return r
|
||||||
@@ -30,6 +30,11 @@ func (o *multiTransformer) Transform(m resmap.ResMap) error {
|
|||||||
if err := t.Transform(m); err != nil {
|
if err := t.Transform(m); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if t.Origin != nil {
|
||||||
|
if err := m.AddTransformerAnnotation(t.Origin); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
m.DropEmpties()
|
m.DropEmpties()
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const (
|
|||||||
|
|
||||||
// for keeping track of origin and transformer data
|
// for keeping track of origin and transformer data
|
||||||
OriginAnnotationKey = "config.kubernetes.io/origin"
|
OriginAnnotationKey = "config.kubernetes.io/origin"
|
||||||
TransformerAnnotationKey = "config.kubernetes.io/transformations"
|
TransformerAnnotationKey = "alpha.config.kubernetes.io/transformations"
|
||||||
|
|
||||||
Enabled = "enabled"
|
Enabled = "enabled"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ type: Opaque
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
annotations: {}
|
|
||||||
labels:
|
labels:
|
||||||
app: test-minecraft
|
app: test-minecraft
|
||||||
chart: minecraft-3.1.3
|
chart: minecraft-3.1.3
|
||||||
|
|||||||
@@ -112,5 +112,11 @@ func (b *Kustomizer) Run(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
m.RemoveBuildAnnotations()
|
m.RemoveBuildAnnotations()
|
||||||
|
if !utils.StringSliceContains(kt.Kustomization().BuildMetadata, types.OriginAnnotations) {
|
||||||
|
m.RemoveOriginAnnotations()
|
||||||
|
}
|
||||||
|
if !utils.StringSliceContains(kt.Kustomization().BuildMetadata, types.TransformerAnnotations) {
|
||||||
|
m.RemoveTransformerAnnotations()
|
||||||
|
}
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1004,3 +1004,142 @@ metadata:
|
|||||||
name: bob-79t79mt227
|
name: bob-79t79mt227
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAnnoOriginGeneratorInTransformersField(t *testing.T) {
|
||||||
|
fSys := filesys.MakeFsOnDisk()
|
||||||
|
|
||||||
|
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||||
|
o := th.MakeOptionsPluginsEnabled()
|
||||||
|
o.PluginConfig.FnpLoadingOptions.EnableExec = true
|
||||||
|
|
||||||
|
tmpDir, err := filesys.NewTmpConfirmedDir()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
th.WriteK(tmpDir.String(), `
|
||||||
|
transformers:
|
||||||
|
- gener.yaml
|
||||||
|
buildMetadata: [originAnnotations]
|
||||||
|
`)
|
||||||
|
|
||||||
|
th.WriteF(filepath.Join(tmpDir.String(), "generateDeployment.sh"), generateDeploymentDotSh)
|
||||||
|
|
||||||
|
assert.NoError(t, os.Chmod(filepath.Join(tmpDir.String(), "generateDeployment.sh"), 0777))
|
||||||
|
th.WriteF(filepath.Join(tmpDir.String(), "gener.yaml"), `
|
||||||
|
kind: executable
|
||||||
|
metadata:
|
||||||
|
name: demo
|
||||||
|
annotations:
|
||||||
|
config.kubernetes.io/function: |
|
||||||
|
exec:
|
||||||
|
path: ./generateDeployment.sh
|
||||||
|
spec:
|
||||||
|
`)
|
||||||
|
|
||||||
|
m := th.Run(tmpDir.String(), o)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
yml, err := m.AsYaml()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, `apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
config.kubernetes.io/origin: |
|
||||||
|
configuredIn: gener.yaml
|
||||||
|
configuredBy:
|
||||||
|
kind: executable
|
||||||
|
name: demo
|
||||||
|
tshirt-size: small
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
name: nginx
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: nginx
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: nginx
|
||||||
|
name: nginx
|
||||||
|
`, string(yml))
|
||||||
|
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnoOriginGeneratorInTransformersFieldWithOverlay(t *testing.T) {
|
||||||
|
fSys := filesys.MakeFsOnDisk()
|
||||||
|
|
||||||
|
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||||
|
o := th.MakeOptionsPluginsEnabled()
|
||||||
|
o.PluginConfig.FnpLoadingOptions.EnableExec = true
|
||||||
|
|
||||||
|
tmpDir, err := filesys.NewTmpConfirmedDir()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
base := filepath.Join(tmpDir.String(), "base")
|
||||||
|
prod := filepath.Join(tmpDir.String(), "prod")
|
||||||
|
assert.NoError(t, fSys.Mkdir(base))
|
||||||
|
assert.NoError(t, fSys.Mkdir(prod))
|
||||||
|
|
||||||
|
th.WriteK(base, `
|
||||||
|
transformers:
|
||||||
|
- gener.yaml
|
||||||
|
`)
|
||||||
|
|
||||||
|
th.WriteF(filepath.Join(base, "generateDeployment.sh"), generateDeploymentDotSh)
|
||||||
|
|
||||||
|
assert.NoError(t, os.Chmod(filepath.Join(base, "generateDeployment.sh"), 0777))
|
||||||
|
th.WriteF(filepath.Join(base, "gener.yaml"), `
|
||||||
|
kind: executable
|
||||||
|
metadata:
|
||||||
|
name: demo
|
||||||
|
annotations:
|
||||||
|
config.kubernetes.io/function: |
|
||||||
|
exec:
|
||||||
|
path: ./generateDeployment.sh
|
||||||
|
spec:
|
||||||
|
`)
|
||||||
|
th.WriteK(prod, `
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
nameSuffix: -foo
|
||||||
|
buildMetadata: [originAnnotations, transformerAnnotations]
|
||||||
|
`)
|
||||||
|
|
||||||
|
m := th.Run(prod, o)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
yml, err := m.AsYaml()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, `apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: SuffixTransformer
|
||||||
|
config.kubernetes.io/origin: |
|
||||||
|
configuredIn: ../base/gener.yaml
|
||||||
|
configuredBy:
|
||||||
|
kind: executable
|
||||||
|
name: demo
|
||||||
|
tshirt-size: small
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
name: nginx-foo
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: nginx
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: nginx
|
||||||
|
name: nginx
|
||||||
|
`, string(yml))
|
||||||
|
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||||
|
}
|
||||||
|
|||||||
495
api/krusty/transformerannotation_test.go
Normal file
495
api/krusty/transformerannotation_test.go
Normal file
@@ -0,0 +1,495 @@
|
|||||||
|
// Copyright 2019 The Kubernetes Authors.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
package krusty_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"sigs.k8s.io/kustomize/api/internal/utils"
|
||||||
|
"sigs.k8s.io/kustomize/api/krusty"
|
||||||
|
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||||
|
"sigs.k8s.io/kustomize/kyaml/filesys"
|
||||||
|
)
|
||||||
|
|
||||||
|
const generateDeploymentWithOriginDotSh = `#!/bin/sh
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: nginx
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
annotations:
|
||||||
|
tshirt-size: small # this injects the resource reservations
|
||||||
|
config.kubernetes.io/origin: |
|
||||||
|
path: somefile.yaml
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: nginx
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: nginx
|
||||||
|
image: nginx
|
||||||
|
EOF
|
||||||
|
`
|
||||||
|
|
||||||
|
func TestAnnoTransformerBuiltinLocal(t *testing.T) {
|
||||||
|
th := kusttest_test.MakeHarness(t)
|
||||||
|
th.WriteF("service.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: myService
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 7002
|
||||||
|
`)
|
||||||
|
th.WriteK(".", `
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- service.yaml
|
||||||
|
buildMetadata: [transformerAnnotations]
|
||||||
|
namePrefix: foo-
|
||||||
|
`)
|
||||||
|
options := th.MakeDefaultOptions()
|
||||||
|
m := th.Run(".", options)
|
||||||
|
th.AssertActualEqualsExpected(m, `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
name: foo-myService
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 7002
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnoOriginAndTransformerBuiltinLocal(t *testing.T) {
|
||||||
|
th := kusttest_test.MakeHarness(t)
|
||||||
|
th.WriteF("service.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: myService
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 7002
|
||||||
|
`)
|
||||||
|
th.WriteK(".", `
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- service.yaml
|
||||||
|
buildMetadata: [originAnnotations, transformerAnnotations]
|
||||||
|
namePrefix: foo-
|
||||||
|
`)
|
||||||
|
options := th.MakeDefaultOptions()
|
||||||
|
m := th.Run(".", options)
|
||||||
|
th.AssertActualEqualsExpected(m, `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
config.kubernetes.io/origin: |
|
||||||
|
path: service.yaml
|
||||||
|
name: foo-myService
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 7002
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnoTransformerLocalFilesWithOverlay(t *testing.T) {
|
||||||
|
th := kusttest_test.MakeHarness(t)
|
||||||
|
th.WriteK("base", `
|
||||||
|
namePrefix: b-
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- role.yaml
|
||||||
|
- service.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
`)
|
||||||
|
th.WriteF("base/service.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: myService
|
||||||
|
`)
|
||||||
|
th.WriteF("base/namespace.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: myNs
|
||||||
|
`)
|
||||||
|
th.WriteF("base/role.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: myRole
|
||||||
|
`)
|
||||||
|
th.WriteF("base/deployment.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: myDep
|
||||||
|
`)
|
||||||
|
th.WriteK("prod", `
|
||||||
|
namePrefix: p-
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
- service.yaml
|
||||||
|
- namespace.yaml
|
||||||
|
buildMetadata: [transformerAnnotations]
|
||||||
|
`)
|
||||||
|
th.WriteF("prod/service.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: myService2
|
||||||
|
`)
|
||||||
|
th.WriteF("prod/namespace.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: myNs2
|
||||||
|
`)
|
||||||
|
m := th.Run("prod", th.MakeDefaultOptions())
|
||||||
|
th.AssertActualEqualsExpected(m, `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: ../base/kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
name: myNs
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: ../base/kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
name: p-b-myRole
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: ../base/kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
name: p-b-myService
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: ../base/kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
name: p-b-myDep
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
name: p-myService2
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
name: myNs2
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnoOriginRemoteBuiltinTransformer(t *testing.T) {
|
||||||
|
fSys := filesys.MakeFsOnDisk()
|
||||||
|
b := krusty.MakeKustomizer(krusty.MakeDefaultOptions())
|
||||||
|
tmpDir, err := filesys.NewTmpConfirmedDir()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "kustomization.yaml"), []byte(`
|
||||||
|
resources:
|
||||||
|
- github.com/kubernetes-sigs/kustomize/examples/multibases/production/?ref=v1.0.6
|
||||||
|
buildMetadata: [transformerAnnotations]
|
||||||
|
`)))
|
||||||
|
m, err := b.Run(
|
||||||
|
fSys,
|
||||||
|
tmpDir.String())
|
||||||
|
if utils.IsErrTimeout(err) {
|
||||||
|
// Don't fail on timeouts.
|
||||||
|
t.SkipNow()
|
||||||
|
}
|
||||||
|
if !assert.NoError(t, err) {
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
yml, err := m.AsYaml()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, `apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- repo: https://github.com/kubernetes-sigs/kustomize
|
||||||
|
ref: v1.0.6
|
||||||
|
configuredIn: examples/multibases/production/kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: PrefixTransformer
|
||||||
|
labels:
|
||||||
|
app: myapp
|
||||||
|
name: prod-myapp-pod
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: nginx:1.7.9
|
||||||
|
name: nginx
|
||||||
|
`, string(yml))
|
||||||
|
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnoTransformerBuiltinInline(t *testing.T) {
|
||||||
|
th := kusttest_test.MakeEnhancedHarness(t)
|
||||||
|
defer th.Reset()
|
||||||
|
|
||||||
|
th.WriteF("resource.yaml", `
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: whatever
|
||||||
|
data: {}
|
||||||
|
`)
|
||||||
|
th.WriteK(".", `
|
||||||
|
resources:
|
||||||
|
- resource.yaml
|
||||||
|
transformers:
|
||||||
|
- |-
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: NamespaceTransformer
|
||||||
|
metadata:
|
||||||
|
name: not-important-to-example
|
||||||
|
namespace: test
|
||||||
|
fieldSpecs:
|
||||||
|
- path: metadata/namespace
|
||||||
|
create: true
|
||||||
|
buildMetadata: [transformerAnnotations]
|
||||||
|
`)
|
||||||
|
|
||||||
|
expected := `
|
||||||
|
apiVersion: apps/v1
|
||||||
|
data: {}
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: NamespaceTransformer
|
||||||
|
name: not-important-to-example
|
||||||
|
namespace: test
|
||||||
|
name: whatever
|
||||||
|
namespace: test
|
||||||
|
`
|
||||||
|
m := th.Run(".", th.MakeDefaultOptions())
|
||||||
|
th.AssertActualEqualsExpected(m, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnoOriginCustomInlineTransformer(t *testing.T) {
|
||||||
|
fSys := filesys.MakeFsOnDisk()
|
||||||
|
|
||||||
|
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||||
|
o := th.MakeOptionsPluginsEnabled()
|
||||||
|
o.PluginConfig.FnpLoadingOptions.EnableExec = true
|
||||||
|
|
||||||
|
tmpDir, err := filesys.NewTmpConfirmedDir()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
th.WriteK(tmpDir.String(), `
|
||||||
|
transformers:
|
||||||
|
- |-
|
||||||
|
kind: executable
|
||||||
|
metadata:
|
||||||
|
name: demo
|
||||||
|
annotations:
|
||||||
|
config.kubernetes.io/function: |
|
||||||
|
exec:
|
||||||
|
path: ./generateDeployment.sh
|
||||||
|
spec:
|
||||||
|
buildMetadata: [transformerAnnotations]
|
||||||
|
`)
|
||||||
|
|
||||||
|
// generateDeploymentWithOriginDotSh creates a resource that already has an origin annotation,
|
||||||
|
// which will cause kustomize to record the plugin origin data as a transformation
|
||||||
|
th.WriteF(filepath.Join(tmpDir.String(), "generateDeployment.sh"), generateDeploymentWithOriginDotSh)
|
||||||
|
|
||||||
|
assert.NoError(t, os.Chmod(filepath.Join(tmpDir.String(), "generateDeployment.sh"), 0777))
|
||||||
|
th.WriteF(filepath.Join(tmpDir.String(), "gener.yaml"), `
|
||||||
|
kind: executable
|
||||||
|
metadata:
|
||||||
|
name: demo
|
||||||
|
annotations:
|
||||||
|
config.kubernetes.io/function: |
|
||||||
|
exec:
|
||||||
|
path: ./generateDeployment.sh
|
||||||
|
spec:
|
||||||
|
`)
|
||||||
|
|
||||||
|
m := th.Run(tmpDir.String(), o)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
yml, err := m.AsYaml()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, `apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: kustomization.yaml
|
||||||
|
configuredBy:
|
||||||
|
kind: executable
|
||||||
|
name: demo
|
||||||
|
tshirt-size: small
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
name: nginx
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: nginx
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: nginx
|
||||||
|
name: nginx
|
||||||
|
`, string(yml))
|
||||||
|
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnoOriginCustomExecTransformerWithOverlay(t *testing.T) {
|
||||||
|
fSys := filesys.MakeFsOnDisk()
|
||||||
|
|
||||||
|
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||||
|
o := th.MakeOptionsPluginsEnabled()
|
||||||
|
o.PluginConfig.FnpLoadingOptions.EnableExec = true
|
||||||
|
|
||||||
|
tmpDir, err := filesys.NewTmpConfirmedDir()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
base := filepath.Join(tmpDir.String(), "base")
|
||||||
|
prod := filepath.Join(tmpDir.String(), "prod")
|
||||||
|
assert.NoError(t, fSys.Mkdir(base))
|
||||||
|
assert.NoError(t, fSys.Mkdir(prod))
|
||||||
|
th.WriteK(base, `
|
||||||
|
transformers:
|
||||||
|
- gener.yaml
|
||||||
|
`)
|
||||||
|
th.WriteK(prod, `
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
buildMetadata: [transformerAnnotations]
|
||||||
|
`)
|
||||||
|
th.WriteF(filepath.Join(base, "gener.yaml"), `
|
||||||
|
kind: executable
|
||||||
|
metadata:
|
||||||
|
name: demo
|
||||||
|
annotations:
|
||||||
|
config.kubernetes.io/function: |
|
||||||
|
exec:
|
||||||
|
path: ./generateDeployment.sh
|
||||||
|
spec:
|
||||||
|
`)
|
||||||
|
// generateDeploymentWithOriginDotSh creates a resource that already has an origin annotation,
|
||||||
|
// which will cause kustomize to record the plugin origin data as a transformation
|
||||||
|
th.WriteF(filepath.Join(base, "generateDeployment.sh"), generateDeploymentWithOriginDotSh)
|
||||||
|
assert.NoError(t, os.Chmod(filepath.Join(base, "generateDeployment.sh"), 0777))
|
||||||
|
|
||||||
|
m := th.Run(prod, o)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
yml, err := m.AsYaml()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, `apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
alpha.config.kubernetes.io/transformations: |
|
||||||
|
- configuredIn: ../base/gener.yaml
|
||||||
|
configuredBy:
|
||||||
|
kind: executable
|
||||||
|
name: demo
|
||||||
|
tshirt-size: small
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
name: nginx
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: nginx
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: nginx
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: nginx
|
||||||
|
name: nginx
|
||||||
|
`, string(yml))
|
||||||
|
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||||
|
}
|
||||||
@@ -1506,7 +1506,7 @@ kind: Deployment
|
|||||||
metadata:
|
metadata:
|
||||||
name: clown
|
name: clown
|
||||||
annotations:
|
annotations:
|
||||||
config.kubernetes.io/transformations: |
|
alpha.config.kubernetes.io/transformations: |
|
||||||
- repo: github.com/myrepo
|
- repo: github.com/myrepo
|
||||||
ref: master
|
ref: master
|
||||||
configuredIn: config.yaml
|
configuredIn: config.yaml
|
||||||
@@ -1524,7 +1524,7 @@ kind: Deployment
|
|||||||
metadata:
|
metadata:
|
||||||
name: clown
|
name: clown
|
||||||
annotations:
|
annotations:
|
||||||
config.kubernetes.io/transformations: |
|
alpha.config.kubernetes.io/transformations: |
|
||||||
- repo: github.com/myrepo
|
- repo: github.com/myrepo
|
||||||
ref: master
|
ref: master
|
||||||
configuredIn: config.yaml
|
configuredIn: config.yaml
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ const (
|
|||||||
MetadataNamespacePath = "metadata/namespace"
|
MetadataNamespacePath = "metadata/namespace"
|
||||||
|
|
||||||
OriginAnnotations = "originAnnotations"
|
OriginAnnotations = "originAnnotations"
|
||||||
|
TransformerAnnotations = "transformerAnnotations"
|
||||||
ManagedByLabelOption = "managedByLabel"
|
ManagedByLabelOption = "managedByLabel"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user