Skip to main content

FLUX_KUSTOMIZATION_API_VERSION

Constant FLUX_KUSTOMIZATION_API_VERSION 

Source
pub const FLUX_KUSTOMIZATION_API_VERSION: &str = "kustomize.toolkit.fluxcd.io/v1";
Expand description

Canonical FluxCD Kustomization CRD apiVersion every caixa-flux kustomization.yaml document emits. The Flux v2 kustomize-controller watches resources at this exact group/version (kustomize.toolkit.fluxcd.io/v1); drift to a stale v1beta1 / v1beta2 (the pre-GA Flux v2 kustomize-controller betas every upstream Flux GA-migration doc names) silently routes the rendered Kustomization outside the controller’s Watches and breaks at apply time with a non-self-locating “no kind ‘Kustomization’ is registered for version ‘kustomize.toolkit.fluxcd.io/v1beta2’” error far from the source caixa.lisp / the renderer’s format-string template.

The single source of truth the kustomization.yaml apiVersion axis reaches for (caixa-flux/src/lib.rs:531 — the kustomization format-string template). Completes the Flux v2 controller triplet (source-controller + helm-controller + kustomize-controller) lift alongside the sibling FLUX_GITREPOSITORY_API_VERSION (8a6c8a3) and FLUX_HELMRELEASE_API_VERSION (55f0fd9) — every per- controller CRD-group/version is now a typed substrate-side &'static str consumed through one pub use caixa_core::FLUX_* re-export at the renderer site. The three controllers share the canonical .toolkit.fluxcd.io root (asserted by [tests::flux_controller_triplet_api_versions_share_toolkit_fluxcd_io_root]), so a future Flux v3 promotion that forks any controller out of the toolkit group surfaces here as a coordinated cross-axis edit-point across all three constants.

The rendered Kustomization’s metadata.namespace (the Flux installation namespace, DEFAULT_FLUX_SYSTEM_NAMESPACE — 7197d38) and spec.sourceRef.kind: GitRepository (referenced through FLUX_GITREPOSITORY_API_VERSION) and spec.healthChecks[].apiVersion (the rendered HelmRelease’s CRD-group/version, FLUX_HELMRELEASE_API_VERSION) all share the cluster-side contract with the upstream Flux v2 controller triplet: a coordinated edit on any one of these four constants must move alongside the sibling axes, and the lift makes that movement a typed substrate-side edit-point rather than a distributed-across-format-string-template-literals refactor.

Until this lift landed the axis carried an inline kustomize.toolkit.fluxcd.io/v1 literal inside [cluster_bundle]’s kustomization.yaml format-string template — one occurrence today, promoted to a typed substrate-side &'static str on the same trajectory the FLUX_GITREPOSITORY_API_VERSION (8a6c8a3) / FLUX_HELMRELEASE_API_VERSION (55f0fd9) / DEFAULT_FLUX_SYSTEM_NAMESPACE (7197d38) lifts established on the sibling Flux-v2-load-bearing-string surface. The render-side consumer now threads the same &'static str through its format-string template so a future Flux v3 promotion lands in one place; every future renderer that reaches for the canonical Flux v2 Kustomization apiVersion (the future M4 mesh.pleme.io/v1alpha1/Aplicacao CR materializer’s per-Aplicacao Kustomization, a future per-edge Kustomization the operator emits for the CiliumClusterwideEnvoyConfig pipeline, a future caixa-otel collector-pipeline Kustomization) inherits the same value by construction with no opportunity for per-renderer drift.

Same “the typed constant lives in one place” discipline the DEFAULT_NAMESPACE (a085b26) / DEFAULT_LIBRARY_NAME (41438dc) / crate::DEFAULT_SERVICO_PORT (1e22add) / crate::DEFAULT_PUBLISH_TAG_PREFIX (0a6a602) / DEFAULT_FLUX_SYSTEM_NAMESPACE (7197d38) / FLUX_HELMRELEASE_API_VERSION (55f0fd9) / FLUX_GITREPOSITORY_API_VERSION (8a6c8a3) lifts apply on the peer canonical-load-bearing-string surface.