quarkusio/quarkus · error · IllegalStateException
Can't find generated kubernetes manifest:
Error message
Can't find generated kubernetes manifest:
What it means
After generating manifests, KubernetesDeployer.deploy reads the generated YAML and locates the resource matching the deployment target's DeploymentResourceKind. If the manifest file itself cannot be opened (FileNotFoundException), it throws IllegalStateException 'Can't find generated kubernetes manifest: <path>'.
Source
Thrown at extensions/kubernetes/vanilla/deployment/src/main/java/io/quarkus/kubernetes/deployment/KubernetesDeployer.java:231
Optional<HasMetadata> existing = Optional.ofNullable(client.resource(i).get());
checkLabelSelectorVersions(deploymentTarget, i, existing);
});
list.getItems().stream().filter(distinctByResourceKey()).forEach(i -> {
deployResource(deploymentTarget, client, i, optionalResourceDefinitions);
log.info("Applied: " + i.getKind() + " " + i.getMetadata().getName() + ".");
});
printExposeInformation(client, list, openshiftConfig, applicationInfo);
HasMetadata m = list.getItems().stream()
.filter(r -> deploymentTarget.getDeploymentResourceKind().matches(r))
.findFirst().orElseThrow(() -> new IllegalStateException(
"No " + deploymentTarget.getDeploymentResourceKind() + " found under: "
+ manifest.getAbsolutePath()));
return new DeploymentResultBuildItem(m.getMetadata().getName(), m.getMetadata().getLabels());
} catch (FileNotFoundException e) {
throw new IllegalStateException("Can't find generated kubernetes manifest: " + manifest.getAbsolutePath());
} catch (KubernetesClientException e) {
KubernetesClientErrorHandler.handle(e);
throw e;
} catch (IOException e) {
throw new RuntimeException("Error closing file: " + manifest.getAbsolutePath());
}
}
private void deployResource(DeploymentTargetEntry deploymentTarget, KubernetesClient client, HasMetadata metadata,
List<KubernetesOptionalResourceDefinitionBuildItem> optionalResourceDefinitions) {
var r = findResource(client, metadata);
Optional<HasMetadata> existing = Optional.ofNullable(client.resource(metadata).get());
if (shouldDeleteExisting(deploymentTarget, metadata)) {
deleteResource(metadata, r);
}
try {View on GitHub (pinned to e1c734241f)
Solutions
- Ensure manifest generation is enabled (quarkus.kubernetes.generate-manifest defaults to true; do not set false when deploying)
- Run the full build (mvn clean package -Dquarkus.kubernetes.deploy=true) so generation and deploy happen in the same run
- Check quarkus.kubernetes.output-directory points to the folder containing the generated manifest (default target/kubernetes)
Example fix
// before quarkus.kubernetes.generate-manifest=false quarkus.kubernetes.deploy=true // after quarkus.kubernetes.generate-manifest=true quarkus.kubernetes.deploy=true
Defensive patterns
Strategy: validation
Validate before calling
java.nio.file.Path manifest = Path.of("target/kubernetes/kubernetes.yml");
if (!java.nio.file.Files.exists(manifest)) throw new IllegalStateException("Manifest not generated; run full build with quarkus.kubernetes.deploy=true"); Try / catch
try { deploy(manifestFile); } catch (IllegalStateException e) {
if (e.getMessage().startsWith("Can't find generated kubernetes manifest")) {
LOG.error("Rebuild: manifest generation must run in the same build as deploy");
}
throw e;
} Prevention
- Run generation and deploy in the same mvn command
- Leave quarkus.kubernetes.generate-manifest at its default (true) when deploying
- Verify quarkus.kubernetes.output-directory matches where the manifest lands
When it happens
Trigger: deploy() attempts to open the kubernetes.yml/openshift.yml under target/kubernetes (or the configured output directory) but the file does not exist at deploy time.
Common situations: Running -Dquarkus.kubernetes.deploy=true on a build where manifest generation was skipped (quarkus.kubernetes.generate-manifest=false); deploying from a different working directory; stale target directory cleaned between generation and deploy; wrong quarkus.kubernetes.output-directory.
Related errors
- Error closing file:
- Resource not found: " + manifestPath
- Manifest entry name ${key} is invalid. " characters are not
- Manifest section name + section + is invalid. " characters a
- Manifest entry name + key + is invalid. " characters are not
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/c02b13543f7aa840.
Report an issue: GitHub.