Env vars given with --env/--env-value-from/--env-file are silently dropped when they can't be matched in the command line

Abierto Apto para principiantes
#2,277 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@NopeCharon ya está trabajando en esto.

Desde el 28/10/2026.

  • #2279 de @NopeCharon — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
go
Área
cli

Línea de trabajo

Empieza leyendo UpdateEnvVars en pkg/flags/podspec_helper.go y sigue cómo se recopilan y ordenan las entradas --env, --env-value-from y --env-file a partir de los argumentos de la línea de comandos. Asegúrate de que la coincidencia solo afecte al orden, para que las entradas sin coincidencia también se apliquen. El trabajo estará terminado cuando los casos reportados de opciones abreviadas, nombres repetidos y plugins conserven todas las variables solicitadas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Bug report

kn service create / kn service update silently drop some of the environment variables given with --env, --env-value-from or --env-file. The command succeeds, but the variables are missing from the created revision.

UpdateEnvVars in pkg/flags/podspec_helper.go determines the order of the env vars by walking os.Args and matching every argument against the next expected NAME=value entry of each flag. Any entry that can't be matched this way is never added to the container. This happens for example when:

  • the short flag is used without a separator, e.g. -eFOO=bar (only -e FOO=bar, -e=FOO=bar and --env=FOO=bar are recognized),
  • a name is given more than once, e.g. -e A=1 -e B=2 -e A=3: the matching gets stuck on A=3 while B=2 passes by, so B is lost,
  • the pkg library is used from another binary (e.g. a plugin) whose os.Args don't contain the kn flags at all: then no env var is set.
Expected behavior

All requested environment variables are set. Matching against the arguments should only influence the order, never whether a variable is applied.

Steps to reproduce the problem
kn service create foo --image gcr.io/knative-samples/helloworld-go -eFOO=bar --no-wait
kn service describe foo -o yaml | grep -A3 env   # FOO is missing

kn service create bar --image gcr.io/knative-samples/helloworld-go -e A=1 -e B=2 -e A=3 --no-wait
kn service describe bar -o yaml | grep -A5 env   # only A=3, B is missing
kn version
main (f2bfc7f3)
Knative (serving/eventing) version

Nightly

Lenguaje dominante
Go
Estrellas
387
Forks
279
Merge medio
2 d 10 h
PR fusionados (30 d)
8

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de knative/client

Todos los issues de knative/client

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.