Skip to content

Render the Kustomization implied by FluxInstance.spec.sync #853

Description

@kurayama

What problem are you trying to solve?

FluxInstance.spec.sync implicitly declares a Flux Kustomization. flux-operator
materializes it as the root KS in the cluster.

flate anchors discovery on Kustomization objects it finds in the tree. The implicit root
isn't one of them, so nothing owns the sync path and that whole layer is never loaded. flate
renders what the committed Kustomizations apply, but never what the root applies.

That layer is where the Kustomization manifests themselves live, plus whatever else is
committed alongside them. So a straight comparison at the sync path:

$ kustomize build <syncPath>        # the root layer's objects
$ flate build all --path <syncPath> # none of them

Practical effect is flate diff stays silent on edits to the Kustomization manifests
themselves.

Proposed solution

Basically I'd like flate to render the implicit Kustomization directly, rather than having to wrap the sync path in a second, committed Kustomization just so flate can see it.

No strong opinion on how. The FluxInstance manifest already has everything needed:

kind: FluxInstance
spec:
  sync:
    kind: GitRepository
    path: <syncPath>

so if flate has that object in hand it could treat spec.sync.path as another render root, same as a KS spec.path.

Alternatives considered

Wrapping the sync path in a committed Kustomization, e.g. point spec.sync at a small dir
holding a KS whose path is the real tree. That does work and flate walks everything from
there. But it's a layer of indirection that exists purely to satisfy the tooling, and moving
the sync root on a running cluster isn't a no-op, the root's inventory collapses to a single
entry and prune will chase everything that dropped out.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions