This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/master by this push: new d179ded Fix #722: filter allowed env variables in Knative d179ded is described below commit d179dedeead6c886edf03dde197260b20baf9660 Author: nferraro <ni.ferr...@gmail.com> AuthorDate: Tue Jun 4 18:14:37 2019 +0200 Fix #722: filter allowed env variables in Knative --- pkg/trait/knative_service.go | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/pkg/trait/knative_service.go b/pkg/trait/knative_service.go index cb04bc6..042470d 100644 --- a/pkg/trait/knative_service.go +++ b/pkg/trait/knative_service.go @@ -207,7 +207,7 @@ func (t *knativeServiceTrait) getServiceFor(e *Environment) *serving.Service { envvar.SetVal(environment, "CAMEL_K_CONF_D", "/etc/camel/conf.d") // add env vars from traits - for _, envVar := range e.EnvVars { + for _, envVar := range t.getAllowedEnvVars(e) { envvar.SetVar(&svc.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.Env, envVar) } @@ -218,3 +218,27 @@ func (t *knativeServiceTrait) getServiceFor(e *Environment) *serving.Service { return &svc } + +func (t *knativeServiceTrait) getAllowedEnvVars(e *Environment) []corev1.EnvVar { + res := make([]corev1.EnvVar, 0, len(e.EnvVars)) + for _, env := range e.EnvVars { + if env.ValueFrom == nil { + // Standard env vars are supported + res = append(res, env) + } else if env.ValueFrom.FieldRef != nil && env.ValueFrom.FieldRef.FieldPath == "metadata.namespace" { + // Namespace is known to the operator + res = append(res, corev1.EnvVar{ + Name: env.Name, + Value: e.Integration.Namespace, + }) + } else if env.ValueFrom.FieldRef != nil { + t.L.Infof("Environment variable %s uses fieldRef and cannot be set on a Knative service", env.Name) + } else if env.ValueFrom.ResourceFieldRef != nil { + t.L.Infof("Environment variable %s uses resourceFieldRef and cannot be set on a Knative service", env.Name) + } else { + // Other downward APIs should be supported + res = append(res, env) + } + } + return res +}