Skip to content

Incomplete Agent Registration Stops BundleDeployment Creation #3830

@manno

Description

@manno

I observed this error when some agents would not start properly. The cluster namespace was set on the Cluster resource, but the namespace did not exist.

The effect is that no bundledeployments will be created for clusters that follow after the incomplete one in the sort order.

To reproduce, create a Cluster resource, set Status.Namespace, but don't create it. Or delete the namespace of an existing cluster.

Workaround: Add a label to affected clusters (or any other change), that will trigger the handler again and create the namespace.

Actual error:

fleet-controller-65878c55bc-4sfvx fleet-controller {
  "level": "error",
  "ts": "2025-06-17T15:10:51Z",
  "logger": "bundle",
  "msg": "Reconcile failed to create or update bundledeployment",
  "controller": "bundle",
  "controllerGroup": "fleet.cattle.io",
  "controllerKind": "Bundle",
  "Bundle": {
    "name": "simple-simple-chart",
    "namespace": "fleet-default"
  },
  "namespace": "fleet-default",
  "name": "simple-simple-chart",
  "reconcileID": "7e3155b2-2dd1-4d68-9517-5c05ad16ffe2",
  "gitrepo": "simple",
  "commit": "990e73f981599dfa5c9a86e0cf0fab5307294f34",
  "manifestID": "s-e4322f59a9c7b048553c01f1bb419415afc9e659d0f8f65ce2c414ba60399",
  "bundledeployment": {
    "metadata": {
      "name": "simple-simple-chart",
      "namespace": "cluster-fleet-default-downstream-1002-ab4388254ea0",
      "creationTimestamp": null,
      "labels": {
        "fleet.cattle.io/bundle-name": "simple-simple-chart",
        "fleet.cattle.io/bundle-namespace": "fleet-default",
        "fleet.cattle.io/cluster": "downstream-1002",
        "fleet.cattle.io/cluster-namespace": "fleet-default",
        "fleet.cattle.io/commit": "990e73f981599dfa5c9a86e0cf0fab5307294f34",
        "fleet.cattle.io/managed": "true",
        "fleet.cattle.io/repo-name": "simple"
      },
      "finalizers": [
        "fleet.cattle.io/bundle-deployment-finalizer"
      ]
    },
    "spec": {
      "stagedOptions": {
        "namespace": "simple",
        "helm": {
          "chart": "config-chart",
          "takeOwnership": true
        },
        "ignore": {}
      },
      "stagedDeploymentID": "s-e4322f59a9c7b048553c01f1bb419415afc9e659d0f8f65ce2c414ba60399:bfd04481357ba785826df113b6dfc57fd1ca056ccb36e683e6507a0261f26d18",
      "options": {
        "namespace": "simple",
        "helm": {
          "chart": "config-chart",
          "takeOwnership": true
        },
        "ignore": {}
      },
      "deploymentID": "s-e4322f59a9c7b048553c01f1bb419415afc9e659d0f8f65ce2c414ba60399:bfd04481357ba785826df113b6dfc57fd1ca056ccb36e683e6507a0261f26d18",
      "valuesHash": "d17af820d450e45949052174f2ec303cfe46875266445fe5815eca79535ba54c"
    },
    "status": {
      "display": {},
      "resourceCounts": {
        "ready": 0,
        "desiredReady": 0,
        "waitApplied": 0,
        "modified": 0,
        "orphaned": 0,
        "missing": 0,
        "unknown": 0,
        "notReady": 0
      }
    }
  },
  "deploymentID": "s-e4322f59a9c7b048553c01f1bb419415afc9e659d0f8f65ce2c414ba60399:bfd04481357ba785826df113b6dfc57fd1ca056ccb36e683e6507a0261f26d18",
  "operation": "unchanged",
  "error": "namespaces \"cluster-fleet-default-downstream-1002-ab4388254ea0\" not found",
  "stacktrace": "github.com/rancher/fleet/internal/cmd/controller/reconciler.(*BundleReconciler).createBundleDeployment\n\t/home/runner/_work/fleet/fleet/internal/cmd/controller/reconciler/bundle_controller.go:515\ngithub.com/rancher/fleet/internal/cmd/controller/reconciler.(*BundleReconciler).Reconcile\n\t/home/runner/_work/fleet/fleet/internal/cmd/controller/reconciler/bundle_controller.go:366\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.21.0/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.21.0/pkg/internal/controller/controller.go:340\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.21.0/pkg/internal/controller/controller.go:300\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.1\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.21.0/pkg/internal/controller/controller.go:202"
}

Maybe the agentmanagement controller (cluster/controller.go -> OnClusterChange) did miss a reconcile? Though, it updated the status but failed to create the namespace.

Metadata

Metadata

Type

No fields configured for Bug.

Projects

Status

✅ Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions