quarkusio/quarkus · error · IllegalArgumentException
'%s' env var can't simultaneously have a '%s' value & take i
Error message
'%s' env var can't simultaneously have a '%s' value & take is value from the '%s' field
What it means
KubernetesEnvBuildItem.create() validates that an env var cannot have both a literal value and take its value from a container field (e.g. metadata.name, spec.nodeName via fieldRef). The generated env entry supports either 'value' or 'valueFrom.fieldRef', not both, so when both value and field are non-null this IllegalArgumentException is thrown.
Source
Thrown at extensions/kubernetes/spi/src/main/java/io/quarkus/kubernetes/spi/KubernetesEnvBuildItem.java:94
public static KubernetesEnvBuildItem createFromResourceKey(String varName, String key, String secret,
String configmap, String target) {
return create(varName, key, secret, configmap, null, target, null);
}
public static KubernetesEnvBuildItem create(String name, String value, String secret, String configmap, String field,
String target, String prefix) throws IllegalArgumentException {
final boolean secretPresent = secret != null;
final boolean configmapPresent = configmap != null;
final boolean valuePresent = value != null;
final boolean fieldPresent = field != null;
if (valuePresent) {
if (secretPresent && configmapPresent) {
throw new IllegalArgumentException(String.format(
"'%s' env var can't simultaneously take its value from '%s' configmap & '%s' secret",
name, configmap, secret));
}
if (fieldPresent) {
throw new IllegalArgumentException(String.format(
"'%s' env var can't simultaneously have a '%s' value & take is value from the '%s' field",
name, value, field));
}
}
if (secretPresent && configmapPresent) {
log.warn(String.format("The '%s' name was used to try to import both from '%s' secret & '%s' configmap. " +
"Only values from '%s' secret will be imported.\nIf you want to import from both, use a " +
"different property name for either.",
name, secret,
configmap,
secret));
}
final EnvType type;
if (secretPresent) {
if (valuePresent) {
type = EnvType.keyFromSecret;
} else {
name = secret;View on GitHub (pinned to e1c734241f)
Solutions
- Remove the literal value and keep only the field reference, or vice versa
- If you need the pod field, set the env var entry with only field=... (no value)
- If you need a literal, drop the field parameter
- Validate your quarkus.kubernetes.env-vars entries to ensure each has exactly one of value or field
Example fix
// before quarkus.kubernetes.env-vars.node.name=metadata.name,field=metadata.name // after quarkus.kubernetes.env-vars.node.name=field=metadata.name
Defensive patterns
Strategy: validation
Validate before calling
if (value != null && field != null) throw new IllegalStateException("Env var '" + name + "' cannot have both literal value and field reference"); Type guard
static boolean hasSingleValueSource(String value, String field) {
return (value == null) != (field == null);
} Try / catch
try { KubernetesEnvBuildItem.create(name, secret, configmap, value, field, explicit); } catch (IllegalArgumentException e) { /* choose value XOR field */ } Prevention
- One of value or field per env var — never both
- When adding field=..., remove the old literal value
- Lint quarkus.kubernetes.env-vars entries for dual keys
When it happens
Trigger: Calling KubernetesEnvBuildItem.create(name, secret, configmap, value, field, ...) with both value and field non-null, e.g. a config that sets both a literal value and a field reference for the same env var.
Common situations: Copy-pasted env var config where a user adds field=metadata.name but forgets to remove the literal value; programmatic build item creation with leftover parameters; template-generated config with both keys populated.
Related errors
- '%s' env var can't simultaneously take its value from '%s' c
- When generating a CronJob resource, you need to specify a sc
- No role has been set in the RoleBinding resource!
- No subjects have been set in the ClusterRoleBinding resource
- Could not find DeploymentResourceKind for
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/dddfd68e17f9dbb1.
Report an issue: GitHub.