From afdc58cd4883d69363caef89dfffb107f95af6e9 Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Thu, 4 Sep 2025 20:07:05 +0300 Subject: [PATCH] Add `.spec.ignoreMissingComponents` field to Kustomization API Signed-off-by: Stefan Prodan --- api/v1/kustomization_types.go | 8 ++++- ...mize.toolkit.fluxcd.io_kustomizations.yaml | 9 ++++-- docs/api/v1/kustomize.md | 32 +++++++++++++++++-- docs/spec/v1/kustomizations.md | 6 ++++ go.mod | 10 +++--- go.sum | 20 ++++++------ 6 files changed, 65 insertions(+), 20 deletions(-) diff --git a/api/v1/kustomization_types.go b/api/v1/kustomization_types.go index 7d2ec5b..59a86c8 100644 --- a/api/v1/kustomization_types.go +++ b/api/v1/kustomization_types.go @@ -177,10 +177,16 @@ type KustomizationSpec struct { // +optional Wait bool `json:"wait,omitempty"` - // Components specifies relative paths to specifications of other Components. + // Components specifies relative paths to kustomize Components. // +optional Components []string `json:"components,omitempty"` + // IgnoreMissingComponents instructs the controller to ignore Components paths + // not found in source by removing them from the generated kustomization.yaml + // before running kustomize build. + // +optional + IgnoreMissingComponents bool `json:"ignoreMissingComponents,omitempty"` + // HealthCheckExprs is a list of healthcheck expressions for evaluating the // health of custom resources using Common Expression Language (CEL). // The expressions are evaluated only when Wait or HealthChecks are specified. diff --git a/config/crd/bases/kustomize.toolkit.fluxcd.io_kustomizations.yaml b/config/crd/bases/kustomize.toolkit.fluxcd.io_kustomizations.yaml index df75e41..24b66c9 100644 --- a/config/crd/bases/kustomize.toolkit.fluxcd.io_kustomizations.yaml +++ b/config/crd/bases/kustomize.toolkit.fluxcd.io_kustomizations.yaml @@ -71,8 +71,7 @@ spec: type: object type: object components: - description: Components specifies relative paths to specifications - of other Components. + description: Components specifies relative paths to kustomize Components. items: type: string type: array @@ -218,6 +217,12 @@ spec: - name type: object type: array + ignoreMissingComponents: + description: |- + IgnoreMissingComponents instructs the controller to ignore Components paths + not found in source by removing them from the generated kustomization.yaml + before running kustomize build. + type: boolean images: description: |- Images is a list of (image name, new name, new tag or digest) diff --git a/docs/api/v1/kustomize.md b/docs/api/v1/kustomize.md index 10fb29a..582dc5f 100644 --- a/docs/api/v1/kustomize.md +++ b/docs/api/v1/kustomize.md @@ -392,7 +392,21 @@ resources. When enabled, the HealthChecks are ignored. Defaults to false.

(Optional) -

Components specifies relative paths to specifications of other Components.

+

Components specifies relative paths to kustomize Components.

+ + + + +ignoreMissingComponents
+ +bool + + + +(Optional) +

IgnoreMissingComponents instructs the controller to ignore Components paths +not found in source by removing them from the generated kustomization.yaml +before running kustomize build.

@@ -1011,7 +1025,21 @@ resources. When enabled, the HealthChecks are ignored. Defaults to false.

(Optional) -

Components specifies relative paths to specifications of other Components.

+

Components specifies relative paths to kustomize Components.

+ + + + +ignoreMissingComponents
+ +bool + + + +(Optional) +

IgnoreMissingComponents instructs the controller to ignore Components paths +not found in source by removing them from the generated kustomization.yaml +before running kustomize build.

diff --git a/docs/spec/v1/kustomizations.md b/docs/spec/v1/kustomizations.md index 330b011..9a51bcc 100644 --- a/docs/spec/v1/kustomizations.md +++ b/docs/spec/v1/kustomizations.md @@ -663,6 +663,7 @@ metadata: namespace: flux-system spec: # ...omitted for brevity + ignoreMissingComponents: false components: - ../ingress - ../tls @@ -670,6 +671,11 @@ spec: **Note:** The components paths must be local and relative to the path specified by `.spec.path`. +With `.spec.ignoreMissingComponents` you can specify whether the controller +should ignore the component paths that are missing from the source. By default, +it is set to `false`, meaning that the controller will fail the reconciliation +if any of the specified paths are missing from the source. + **Warning:** Components are an alpha feature in Kustomize and are therefore considered experimental in Flux. No guarantees are provided as the feature may be modified in backwards incompatible ways or removed without warning. diff --git a/go.mod b/go.mod index 7bb1aaa..3517015 100644 --- a/go.mod +++ b/go.mod @@ -23,12 +23,12 @@ require ( github.com/fluxcd/pkg/apis/acl v0.9.0 github.com/fluxcd/pkg/apis/event v0.19.0 github.com/fluxcd/pkg/apis/kustomize v1.12.0 - github.com/fluxcd/pkg/apis/meta v1.20.0 - github.com/fluxcd/pkg/auth v0.29.0 + github.com/fluxcd/pkg/apis/meta v1.21.0 + github.com/fluxcd/pkg/auth v0.30.0 github.com/fluxcd/pkg/cache v0.11.0 github.com/fluxcd/pkg/http/fetch v0.19.0 - github.com/fluxcd/pkg/kustomize v1.20.0 - github.com/fluxcd/pkg/runtime v0.82.0 + github.com/fluxcd/pkg/kustomize v1.21.0 + github.com/fluxcd/pkg/runtime v0.83.0 github.com/fluxcd/pkg/ssa v0.53.0 github.com/fluxcd/pkg/tar v0.14.0 github.com/fluxcd/pkg/testserver v0.13.0 @@ -119,7 +119,7 @@ require ( github.com/containerd/continuity v0.4.5 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/docker/cli v28.2.2+incompatible // indirect + github.com/docker/cli v28.3.3+incompatible // indirect github.com/docker/docker v28.3.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.9.3 // indirect github.com/docker/go-connections v0.5.0 // indirect diff --git a/go.sum b/go.sum index 28529fa..5b5e5c8 100644 --- a/go.sum +++ b/go.sum @@ -157,8 +157,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/docker/cli v28.2.2+incompatible h1:qzx5BNUDFqlvyq4AHzdNB7gSyVTmU4cgsyN9SdInc1A= -github.com/docker/cli v28.2.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v28.3.3+incompatible h1:fp9ZHAr1WWPGdIWBM1b3zLtgCF+83gRdVMTJsUeiyAo= +github.com/docker/cli v28.3.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8= @@ -195,20 +195,20 @@ github.com/fluxcd/pkg/apis/event v0.19.0 h1:ZJU2voontkzp5rNYA4JMOu40S4tRcrWi4Do5 github.com/fluxcd/pkg/apis/event v0.19.0/go.mod h1:deuIyUb6lh+Z1Ccvwwxhm1wNM3kpSo+vF1IgRnpaZfQ= github.com/fluxcd/pkg/apis/kustomize v1.12.0 h1:KvZN6xwgP/dNSeckL4a/Uv715XqiN1C3xS+jGcPejtE= github.com/fluxcd/pkg/apis/kustomize v1.12.0/go.mod h1:OojLxIdKm1JAAdh3sL4j4F+vfrLKb7kq1vr8bpyEKgg= -github.com/fluxcd/pkg/apis/meta v1.20.0 h1:l9h0kWoDZTcYV0WJkFMgDXq6Q4tSojrJ+bHpFJSsaW0= -github.com/fluxcd/pkg/apis/meta v1.20.0/go.mod h1:XUAEUgT4gkWDAEN79E141tmL+v4SV50tVZ/Ojpc/ueg= -github.com/fluxcd/pkg/auth v0.29.0 h1:lLc63zjodqIqg5ydlU/Kp3Qa+wvh6G2khjop5MHALvk= -github.com/fluxcd/pkg/auth v0.29.0/go.mod h1:bjZ+6RMSGgsQQK+aPfVP8HWuBbb+FLlFxMiqd8ywzik= +github.com/fluxcd/pkg/apis/meta v1.21.0 h1:R+bN02chcs0HUmyVDQhqe/FHmYLjipVDMLnyYfNX850= +github.com/fluxcd/pkg/apis/meta v1.21.0/go.mod h1:XUAEUgT4gkWDAEN79E141tmL+v4SV50tVZ/Ojpc/ueg= +github.com/fluxcd/pkg/auth v0.30.0 h1:7JMnY1ClArvOsadt6hOxceu8Q2hLsYHFMt0DV3BQl4Q= +github.com/fluxcd/pkg/auth v0.30.0/go.mod h1:me38o1nDfSLw6YvnkT9Ce/zqJZICZSA7j5pNMR3JUbc= github.com/fluxcd/pkg/cache v0.11.0 h1:fsE8S+una21fSNw4MDXGUIf0Gf1J+pqa4RbsVKf2aTI= github.com/fluxcd/pkg/cache v0.11.0/go.mod h1:2RTIU6PsJniHmfnllQWFEo7fa5V8KQlnMgn4o0sme40= github.com/fluxcd/pkg/envsubst v1.5.0 h1:S07mo+MkGhptdHA4pRze5HPKlc8tHxKswNdcMZi1WDY= github.com/fluxcd/pkg/envsubst v1.5.0/go.mod h1:c3a8DYI855sZUubHFYQbjfjop6Wu4/zg1cLyf7SnCes= github.com/fluxcd/pkg/http/fetch v0.19.0 h1:dRdErv8X2t/VKnh5kFRZrlqKzbq9Gh0n/z3XArjdLho= github.com/fluxcd/pkg/http/fetch v0.19.0/go.mod h1:z32w8nezoBvQfMogCkhAoqKToOZzPSbIW0PeN2fKXqA= -github.com/fluxcd/pkg/kustomize v1.20.0 h1:NU1p3PxyOz1LAsPWhmmObzP5EA+LTh9DT+6Tu9+LgCw= -github.com/fluxcd/pkg/kustomize v1.20.0/go.mod h1:drVtmqUCJc/0a178vjl67DSePQahOBI+aO4x1kzV13M= -github.com/fluxcd/pkg/runtime v0.82.0 h1:VdPPRJtj8/rcBdqY7GZSffoxe5elFHt+ymwQHNbPOlc= -github.com/fluxcd/pkg/runtime v0.82.0/go.mod h1:rIDynMhU5upbn8ce3bXQhH5L6vtDw5MELycvtJG/+og= +github.com/fluxcd/pkg/kustomize v1.21.0 h1:J+OcRTBWJcOwqhNW2oZyPHN7u54qBpScYLYnqTiM3gE= +github.com/fluxcd/pkg/kustomize v1.21.0/go.mod h1:drVtmqUCJc/0a178vjl67DSePQahOBI+aO4x1kzV13M= +github.com/fluxcd/pkg/runtime v0.83.0 h1:XzpwKzo7GqfBE/BKpxG5B4U7cUnojnB407S9Dpp6oLU= +github.com/fluxcd/pkg/runtime v0.83.0/go.mod h1:r8KLvXRguKtpLAa66fA19rIbwPViXm8az038IUabYvw= github.com/fluxcd/pkg/sourceignore v0.14.0 h1:ZiZzbXtXb/Qp7I7JCStsxOlX8ri8rWwCvmvIrJ0UzQQ= github.com/fluxcd/pkg/sourceignore v0.14.0/go.mod h1:E3zKvyTyB+oQKqm/2I/jS6Rrt3B7fNuig/4bY2vi3bg= github.com/fluxcd/pkg/ssa v0.53.0 h1:EtKFAYWXohIGkzPhIrv8NbV5zYr4iZHY6DaNxMR9+bU=