mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-30 09:51:23 +00:00
Localize configMapGenerator, secretGenerator fields (#4894)
* Localize configMapGenerator, secretGenerator fields * Improve readability * Expose kv parseFileSource * Add localizeGenerator to Localizer * Improve and test ParseFileSource error messages
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"path/filepath"
|
||||
|
||||
"sigs.k8s.io/kustomize/api/ifc"
|
||||
"sigs.k8s.io/kustomize/api/internal/generators"
|
||||
pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader"
|
||||
"sigs.k8s.io/kustomize/api/internal/target"
|
||||
"sigs.k8s.io/kustomize/api/konfig"
|
||||
@@ -128,8 +129,50 @@ func (lc *localizer) localizeNativeFields(kust *types.Kustomization) error {
|
||||
kust.Patches[i].Path = newPath
|
||||
}
|
||||
}
|
||||
|
||||
for i := range kust.ConfigMapGenerator {
|
||||
if err := lc.localizeGenerator(&kust.ConfigMapGenerator[i].GeneratorArgs); err != nil {
|
||||
return errors.WrapPrefixf(err, "unable to localize configMapGenerator")
|
||||
}
|
||||
}
|
||||
for i := range kust.SecretGenerator {
|
||||
if err := lc.localizeGenerator(&kust.SecretGenerator[i].GeneratorArgs); err != nil {
|
||||
return errors.WrapPrefixf(err, "unable to localize secretGenerator")
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(annasong): localize all other kustomization fields: resources, bases, crds, configurations,
|
||||
// openapi, patchesJson6902, patchesStrategicMerge, replacements, configMapGenerators, secretGenerators
|
||||
// openapi, patchesJson6902, patchesStrategicMerge, replacements
|
||||
return nil
|
||||
}
|
||||
|
||||
// localizeGenerator localizes the file paths on generator.
|
||||
func (lc *localizer) localizeGenerator(generator *types.GeneratorArgs) error {
|
||||
locEnvs := make([]string, len(generator.EnvSources))
|
||||
for i, env := range generator.EnvSources {
|
||||
newPath, err := lc.localizeFile(env)
|
||||
if err != nil {
|
||||
return errors.WrapPrefixf(err, "unable to localize generator envs file")
|
||||
}
|
||||
locEnvs[i] = newPath
|
||||
}
|
||||
locFiles := make([]string, len(generator.FileSources))
|
||||
for i, file := range generator.FileSources {
|
||||
k, f, err := generators.ParseFileSource(file)
|
||||
if err != nil {
|
||||
return errors.WrapPrefixf(err, "unable to parse generator files entry %q", file)
|
||||
}
|
||||
newFile, err := lc.localizeFile(f)
|
||||
if err != nil {
|
||||
return errors.WrapPrefixf(err, "unable to localize generator files path in entry %q", file)
|
||||
}
|
||||
if f != file {
|
||||
newFile = k + "=" + newFile
|
||||
}
|
||||
locFiles[i] = newFile
|
||||
}
|
||||
generator.EnvSources = locEnvs
|
||||
generator.FileSources = locFiles
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -220,6 +220,34 @@ patches:
|
||||
checkFSys(t, fSysExpected, fSys)
|
||||
}
|
||||
|
||||
func TestLocalizeUnreferencedIgnored(t *testing.T) {
|
||||
fSys := makeMemoryFs(t)
|
||||
targetAndUnreferenced := map[string]string{
|
||||
"kustomization.yaml": `apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
configMapGenerator:
|
||||
- envs:
|
||||
- env
|
||||
name: referenced-file
|
||||
kind: Kustomization
|
||||
`,
|
||||
"env": "APPLE=orange",
|
||||
"env.properties": "USERNAME=password",
|
||||
"resource.yaml": podConfiguration,
|
||||
}
|
||||
addFiles(t, fSys, "/alpha/beta", targetAndUnreferenced)
|
||||
|
||||
err := Run("/alpha/beta", "/alpha", "/beta", fSys)
|
||||
require.NoError(t, err)
|
||||
|
||||
fSysExpected := makeMemoryFs(t)
|
||||
addFiles(t, fSysExpected, "/alpha/beta", targetAndUnreferenced)
|
||||
addFiles(t, fSysExpected, "/beta/beta", map[string]string{
|
||||
"kustomization.yaml": targetAndUnreferenced["kustomization.yaml"],
|
||||
"env": targetAndUnreferenced["env"],
|
||||
})
|
||||
checkFSys(t, fSysExpected, fSys)
|
||||
}
|
||||
|
||||
func TestLocalizePatches(t *testing.T) {
|
||||
fSys := makeMemoryFs(t)
|
||||
kustAndPatch := map[string]string{
|
||||
@@ -262,6 +290,76 @@ spec:
|
||||
checkFSys(t, fSysExpected, fSys)
|
||||
}
|
||||
|
||||
func TestLocalizeConfigMapGenerator(t *testing.T) {
|
||||
fSys := makeMemoryFs(t)
|
||||
kustAndData := map[string]string{
|
||||
"kustomization.yaml": `apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
configMapGenerator:
|
||||
- envs:
|
||||
- standard.env
|
||||
namespace: my
|
||||
options:
|
||||
immutable: true
|
||||
- behavior: merge
|
||||
files:
|
||||
- key.properties
|
||||
literals:
|
||||
- PEAR=pineapple
|
||||
kind: Kustomization
|
||||
metadata:
|
||||
name: test
|
||||
`,
|
||||
"standard.env": `SIZE=0.1
|
||||
IS_GLOBAL=true`,
|
||||
"key.properties": "value",
|
||||
}
|
||||
addFiles(t, fSys, "/a/b", kustAndData)
|
||||
|
||||
err := Run("/a/b", "", "", fSys)
|
||||
require.NoError(t, err)
|
||||
|
||||
fSysExpected := makeMemoryFs(t)
|
||||
addFiles(t, fSysExpected, "/a/b", kustAndData)
|
||||
addFiles(t, fSysExpected, "/localized-b", kustAndData)
|
||||
checkFSys(t, fSysExpected, fSys)
|
||||
}
|
||||
|
||||
func TestLocalizeSecretGenerator(t *testing.T) {
|
||||
fSys := makeMemoryFs(t)
|
||||
kustAndData := map[string]string{
|
||||
"kustomization.yaml": `apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
secretGenerator:
|
||||
- behavior: create
|
||||
files:
|
||||
- key=b/value.properties
|
||||
- b/value
|
||||
name: secret
|
||||
- envs:
|
||||
- crt
|
||||
- key
|
||||
type: kubernetes.io/tls
|
||||
- literals:
|
||||
- APPLE=b3Jhbmdl
|
||||
- PLUM=cGx1b3Q=
|
||||
name: no-files
|
||||
`,
|
||||
"crt": "tls.crt=LS0tLS1CRUd...0tLQo=",
|
||||
"key": "tls.key=LS0tLS1CRUd...0tLQo=",
|
||||
"b/value.properties": "dmFsdWU=",
|
||||
"b/value": "dmFsdWU=",
|
||||
}
|
||||
addFiles(t, fSys, "/a", kustAndData)
|
||||
|
||||
err := Run("/a", "/", "/localized-a", fSys)
|
||||
require.NoError(t, err)
|
||||
|
||||
fSysExpected := makeMemoryFs(t)
|
||||
addFiles(t, fSysExpected, "/a", kustAndData)
|
||||
addFiles(t, fSysExpected, "/localized-a/a", kustAndData)
|
||||
checkFSys(t, fSysExpected, fSys)
|
||||
}
|
||||
|
||||
func TestLocalizeFileNoFile(t *testing.T) {
|
||||
fSys := makeMemoryFs(t)
|
||||
kustAndPatch := map[string]string{
|
||||
|
||||
Reference in New Issue
Block a user