From b314ca185f0a3f710bb1dde2492a94fb94078158 Mon Sep 17 00:00:00 2001 From: Alexey Odinokov Date: Thu, 17 Sep 2020 03:41:36 +0000 Subject: [PATCH 1/2] Added list of env variables for fn-plugins KRM-functions should be able get env variables. Reflecting in `build` cmd args added in [1] for `fn run` cmd. [1] https://github.com/kubernetes-sigs/kustomize/pull/2988/ --- api/internal/plugins/fnplugin/fnplugin.go | 1 + api/types/pluginrestrictions.go | 2 ++ kustomize/internal/commands/build/build.go | 3 +++ 3 files changed, 6 insertions(+) diff --git a/api/internal/plugins/fnplugin/fnplugin.go b/api/internal/plugins/fnplugin/fnplugin.go index 3d0ad10dd3..51d5e9a202 100644 --- a/api/internal/plugins/fnplugin/fnplugin.go +++ b/api/internal/plugins/fnplugin/fnplugin.go @@ -78,6 +78,7 @@ func NewFnPlugin(o *types.FnPluginLoadingOptions) *FnPlugin { EnableStarlark: o.EnableStar, EnableExec: o.EnableExec, StorageMounts: toStorageMounts(o.Mounts), + Env: o.Env, }, } } diff --git a/api/types/pluginrestrictions.go b/api/types/pluginrestrictions.go index f5588baa47..6dae63a97a 100644 --- a/api/types/pluginrestrictions.go +++ b/api/types/pluginrestrictions.go @@ -53,4 +53,6 @@ type FnPluginLoadingOptions struct { NetworkName string // list of mounts Mounts []string + // list of env variables to pass to fn + Env []string } diff --git a/kustomize/internal/commands/build/build.go b/kustomize/internal/commands/build/build.go index 55da661cbd..88c189230c 100644 --- a/kustomize/internal/commands/build/build.go +++ b/kustomize/internal/commands/build/build.go @@ -90,6 +90,9 @@ func NewCmdBuild(out io.Writer) *cobra.Command { cmd.Flags().StringArrayVar( &o.fnOptions.Mounts, "mount", []string{}, "a list of storage options read from the filesystem") + cmd.Flags().StringArrayVarP( + &o.fnOptions.Env, "env", "e", []string{}, + "a list of environment variables to be used by functions") addFlagLoadRestrictor(cmd.Flags()) addFlagEnablePlugins(cmd.Flags()) From 64cbfbe56d8f63c0f209925181306f7f1b0bacde Mon Sep 17 00:00:00 2001 From: Alexey Odinokov Date: Mon, 21 Sep 2020 06:14:09 +0000 Subject: [PATCH 2/2] added test for env vars --- api/krusty/fnplugin_test.go | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/api/krusty/fnplugin_test.go b/api/krusty/fnplugin_test.go index 5a20816221..b45316a231 100644 --- a/api/krusty/fnplugin_test.go +++ b/api/krusty/fnplugin_test.go @@ -464,3 +464,50 @@ metadata: name: another-namespace `) } + +func TestFnContainerEnvVars(t *testing.T) { + skipIfNoDocker(t) + + th := kusttest_test.MakeEnhancedHarness(t) + defer th.Reset() + + th.WriteK("/app", ` +generators: +- gener.yaml +`) + + // TODO: cheange image to gcr.io/kpt-functions/templater:stable + // when https://github.com/GoogleContainerTools/kpt-functions-catalog/pull/103 + // is merged + th.WriteF("/app/gener.yaml", ` +apiVersion: v1 +kind: ConfigMap +metadata: + name: demo + annotations: + config.kubernetes.io/function: | + container: + image: quay.io/aodinokov/kpt-templater:0.0.1 + envs: + - TESTTEMPLATE=value +data: + template: | + apiVersion: v1 + kind: ConfigMap + metadata: + name: env + data: + value: '{{ env "TESTTEMPLATE" }}' +`) + m := th.Run("/app", th.MakeOptionsPluginsEnabled()) + th.AssertActualEqualsExpected(m, ` +apiVersion: v1 +data: + value: value +kind: ConfigMap +metadata: + annotations: + config.kubernetes.io/path: configmap_env.yaml + name: env +`) +}