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

  1. Ensure manifest generation is enabled (quarkus.kubernetes.generate-manifest defaults to true; do not set false when deploying)
  2. Run the full build (mvn clean package -Dquarkus.kubernetes.deploy=true) so generation and deploy happen in the same run
  3. 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

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


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/c02b13543f7aa840. Report an issue: GitHub.