v1

package
v0.55.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 13, 2026 License: AGPL-3.0 Imports: 14 Imported by: 3

Documentation

Overview

Package v1 contains API Schema definitions for the fluxcd v1 API group +kubebuilder:object:generate=true +groupName=fluxcd.controlplane.io

Index

Constants

View Source
const (
	// AgentCatalogKind is the kind of the Agent Catalog API.
	AgentCatalogKind = "Catalog"

	// AgentCatalogVerifyProviderCosign is the cosign verification provider.
	AgentCatalogVerifyProviderCosign = "cosign"
)
View Source
const (
	EnabledValue  = "enabled"
	DisabledValue = "disabled"

	ReconciliationDisabledReason  = "ReconciliationDisabled"
	ReconciliationDisabledMessage = "Reconciliation is disabled"

	HealthCheckExpr = "status.conditions.filter(c, c.type == 'Ready').all(c, c.status == 'True' && c.observedGeneration == metadata.generation)"
)
View Source
const (
	FluxKustomizeGroup    = "kustomize.toolkit.fluxcd.io"
	FluxKustomizationKind = "Kustomization"

	FluxHelmGroup       = "helm.toolkit.fluxcd.io"
	FluxHelmReleaseKind = "HelmRelease"

	FluxSourceGroup          = "source.toolkit.fluxcd.io"
	FluxGitRepositoryKind    = "GitRepository"
	FluxBucketKind           = "Bucket"
	FluxOCIRepositoryKind    = "OCIRepository"
	FluxHelmRepositoryKind   = "HelmRepository"
	FluxHelmChartKind        = "HelmChart"
	FluxExternalArtifactKind = "ExternalArtifact"

	FluxNotificationGroup = "notification.toolkit.fluxcd.io"
	FluxAlertKind         = "Alert"
	FluxAlertProviderKind = "Provider"
	FluxReceiverKind      = "Receiver"

	FluxImageGroup                = "image.toolkit.fluxcd.io"
	FluxImageRepositoryKind       = "ImageRepository"
	FluxImagePolicyKind           = "ImagePolicy"
	FluxImageUpdateAutomationKind = "ImageUpdateAutomation"

	FluxSourceExtensionsGroup = "source.extensions.fluxcd.io"
	FluxArtifactGeneratorKind = "ArtifactGenerator"
)

Flux APIs Kind and Group constants.

View Source
const (
	FluxOperator                  = "flux-operator"
	FluxSourceController          = "source-controller"
	FluxKustomizeController       = "kustomize-controller"
	FluxHelmController            = "helm-controller"
	FluxNotificationController    = "notification-controller"
	FluxImageReflectorController  = "image-reflector-controller"
	FluxImageAutomationController = "image-automation-controller"
	FluxSourceWatcher             = "source-watcher"
)

Flux controller names.

View Source
const (
	DefaultInstanceName = "flux"
	DefaultNamespace    = "flux-system"
	FluxInstanceKind    = "FluxInstance"
	OutdatedReason      = "OutdatedVersion"
)
View Source
const (
	ResourceSetInputProviderKind = "ResourceSetInputProvider"

	InputProviderStatic                   = "Static"
	InputProviderGitHubBranch             = "GitHubBranch"
	InputProviderGitHubTag                = "GitHubTag"
	InputProviderGitHubPullRequest        = "GitHubPullRequest"
	InputProviderGitLabBranch             = "GitLabBranch"
	InputProviderGitLabTag                = "GitLabTag"
	InputProviderGitLabMergeRequest       = "GitLabMergeRequest"
	InputProviderGitLabEnvironment        = "GitLabEnvironment"
	InputProviderAzureDevOpsBranch        = "AzureDevOpsBranch"
	InputProviderAzureDevOpsPullRequest   = "AzureDevOpsPullRequest"
	InputProviderAzureDevOpsTag           = "AzureDevOpsTag"
	InputProviderAWSCodeCommitBranch      = "AWSCodeCommitBranch"
	InputProviderAWSCodeCommitTag         = "AWSCodeCommitTag"
	InputProviderAWSCodeCommitPullRequest = "AWSCodeCommitPullRequest"
	InputProviderGiteaBranch              = "GiteaBranch"
	InputProviderGiteaTag                 = "GiteaTag"
	InputProviderGiteaPullRequest         = "GiteaPullRequest"
	InputProviderOCIArtifactTag           = "OCIArtifactTag"
	InputProviderACRArtifactTag           = "ACRArtifactTag"
	InputProviderECRArtifactTag           = "ECRArtifactTag"
	InputProviderGARArtifactTag           = "GARArtifactTag"
	InputProviderExternalService          = "ExternalService"

	ReasonInvalidDefaultValues  = "InvalidDefaultValues"
	ReasonInvalidExportedInputs = "InvalidExportedInputs"
	ReasonInvalidSpec           = "InvalidSpec"

	DefaultResourceSetInputProviderFilterLimit = 100
)
View Source
const (
	ReasonInvalidSchedule      = "InvalidSchedule"
	ReasonSkippedDueToSchedule = "SkippedDueToSchedule"
)
View Source
const (
	// WebConfigKind is the kind of the Flux Status Page configuration API.
	WebConfigKind = "Config"

	// AuthenticationTypeAnonymous is the name of the Anonymous authentication type.
	AuthenticationTypeAnonymous = "Anonymous"

	// AuthenticationTypeOAuth2 is the name of the OAuth2 authentication type.
	AuthenticationTypeOAuth2 = "OAuth2"

	// OAuth2ProviderOIDC is the name of the OIDC OAuth2 provider.
	OAuth2ProviderOIDC = "OIDC"

	// UserActionReconcile is the reconcile user action for Flux resources.
	UserActionReconcile = "reconcile"

	// UserActionSuspend is the suspend user action for Flux resources.
	UserActionSuspend = "suspend"

	// UserActionResume is the resume user action for Flux resources.
	UserActionResume = "resume"

	// UserActionDownload is the download user action for Flux artifacts.
	UserActionDownload = "download"

	// UserActionRestart is the restart user action for workloads
	// (Deployments, StatefulSets, DaemonSets, CronJobs).
	UserActionRestart = "restart"

	// UserActionDelete is the delete user action for resources
	// managed by Flux.
	UserActionDelete = "delete"

	// UserActionDeletePods is the delete user action for pods of workloads
	// managed by Flux. This constant is not used for RBAC checks, and is
	// only used for sinalizing to the frontend that the user can delete
	// pods of a workload. Should not be added to the userActions map.
	UserActionDeletePods = "deletePods"

	// UserActionViewLogs is the view-logs user action for pods of workloads
	// managed by Flux. Like UserActionDeletePods, this constant is not a
	// custom RBAC verb: it only signals to the frontend that the user is
	// allowed to read pod logs (the native "get" verb on the "pods/log"
	// subresource). It must not be added to the userActions map.
	UserActionViewLogs = "logs"

	// UserActionsAccessImpersonated configures GitOps actions to be performed
	// by impersonating the user's Kubernetes RBAC identity. This is the default
	// and requires the user to hold both the custom per-action verb and the
	// native Kubernetes verbs (e.g. patch) required by the action.
	UserActionsAccessImpersonated = "Impersonated"

	// UserActionsAccessFineGrained configures GitOps actions to be performed
	// using the Flux Operator Web UI's own privileges, requiring the user to
	// hold only the custom per-action verb (e.g. suspend). This enables
	// stricter least-privilege setups.
	UserActionsAccessFineGrained = "FineGrained"
)
View Source
const (
	FluxReportKind = "FluxReport"
)
View Source
const (
	// MaxHistorySize defines the maximum number of snapshots to keep in history.
	MaxHistorySize = 5
)
View Source
const (
	ResourceSetKind = "ResourceSet"
)

Variables

View Source
var (
	Finalizer                        = fmt.Sprintf("%s/finalizer", GroupVersion.Group)
	ReconcileAnnotation              = fmt.Sprintf("%s/reconcile", GroupVersion.Group)
	ReconcileEveryAnnotation         = fmt.Sprintf("%s/reconcileEvery", GroupVersion.Group)
	ReconcileArtifactEveryAnnotation = fmt.Sprintf("%s/reconcileArtifactEvery", GroupVersion.Group)
	ReconcileTimeoutAnnotation       = fmt.Sprintf("%s/reconcileTimeout", GroupVersion.Group)
	PruneAnnotation                  = fmt.Sprintf("%s/prune", GroupVersion.Group)
	ForceAnnotation                  = fmt.Sprintf("%s/force", GroupVersion.Group)
	RecreateOnFailureAnnotation      = fmt.Sprintf("%s/recreateOnFailure", GroupVersion.Group)
	RevisionAnnotation               = fmt.Sprintf("%s/revision", GroupVersion.Group)
	CopyFromAnnotation               = fmt.Sprintf("%s/copyFrom", GroupVersion.Group)
	ConvertKubeConfigFromAnnotation  = fmt.Sprintf("%s/convertKubeConfigFrom", GroupVersion.Group)
	ChecksumFromAnnotation           = fmt.Sprintf("%s/checksumFrom", GroupVersion.Group)
	ChecksumAnnotation               = fmt.Sprintf("%s/checksum", GroupVersion.Group)
	SuspendedByAnnotation            = fmt.Sprintf("%s/suspendedBy", GroupVersion.Group)
	CreatedByAnnotation              = fmt.Sprintf("%s/createdBy", GroupVersion.Group)
)
View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "fluxcd.controlplane.io", Version: "v1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
	SchemeBuilder = &groupVersionBuilder{}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = schemeBuilder.AddToScheme
)
View Source
var (
	GroupOwnerLabelResourceSet     = fmt.Sprintf("resourceset.%s", GroupVersion.Group)
	OwnerLabelResourceSetName      = fmt.Sprintf("%s/name", GroupOwnerLabelResourceSet)
	OwnerLabelResourceSetNamespace = fmt.Sprintf("%s/namespace", GroupOwnerLabelResourceSet)

	InputStrategyFlatten = "Flatten"
	InputStrategyPermute = "Permute"
)
View Source
var (
	// AllAuthenticationTypes lists all possible authentication types.
	AllAuthenticationTypes = []string{
		AuthenticationTypeAnonymous,
		AuthenticationTypeOAuth2,
	}

	// AllUserActionsAccessModes lists all possible user actions access modes.
	AllUserActionsAccessModes = []string{
		UserActionsAccessImpersonated,
		UserActionsAccessFineGrained,
	}
)
View Source
var (
	// AgentGroupVersion is the group and version of the Agent Catalog API.
	AgentGroupVersion = schema.GroupVersion{Group: "agent.fluxcd.controlplane.io", Version: "v1"}
)

ControllerCRDKinds maps each Flux controller to the CRD kinds it manages. The kind names reference existing constants; use FluxGroupFor() to get the API group and FindFluxKindInfo() to get the plural for each kind.

View Source
var FluxKinds = []FluxKindInfo{

	{Name: FluxKustomizationKind, Plural: "kustomizations", ShortName: "ks", Reconcilable: true},
	{Name: FluxHelmReleaseKind, Plural: "helmreleases", ShortName: "hr", Reconcilable: true},

	{Name: FluxGitRepositoryKind, Plural: "gitrepositories", ShortName: "gitrepo", Reconcilable: true},
	{Name: FluxOCIRepositoryKind, Plural: "ocirepositories", ShortName: "ocirepo", Reconcilable: true},
	{Name: FluxBucketKind, Plural: "buckets", ShortName: "bucket", Reconcilable: true},
	{Name: FluxHelmRepositoryKind, Plural: "helmrepositories", ShortName: "helmrepo", Reconcilable: true},
	{Name: FluxHelmChartKind, Plural: "helmcharts", ShortName: "hc", Reconcilable: true},
	{Name: FluxArtifactGeneratorKind, Plural: "artifactgenerators", ShortName: "ag", Reconcilable: true},
	{Name: FluxExternalArtifactKind, Plural: "externalartifacts", ShortName: "ea", Reconcilable: false},

	{Name: FluxAlertKind, Plural: "alerts", ShortName: "alert", Reconcilable: false},
	{Name: FluxAlertProviderKind, Plural: "providers", ShortName: "provider", Reconcilable: false},
	{Name: FluxReceiverKind, Plural: "receivers", ShortName: "receiver", Reconcilable: true},

	{Name: FluxImageRepositoryKind, Plural: "imagerepositories", ShortName: "imgrepo", Reconcilable: true},
	{Name: FluxImagePolicyKind, Plural: "imagepolicies", ShortName: "imgpol", Reconcilable: true},
	{Name: FluxImageUpdateAutomationKind, Plural: "imageupdateautomations", ShortName: "imgauto", Reconcilable: true},
}

FluxKinds is a list of all supported Flux kinds and their properties.

View Source
var FluxOperatorKinds = []FluxKindInfo{

	{Name: FluxInstanceKind, Plural: "fluxinstances", ShortName: "instance", Reconcilable: true},
	{Name: FluxReportKind, Plural: "fluxreports", ShortName: "report", Reconcilable: true},

	{Name: ResourceSetKind, Plural: "resourcesets", ShortName: "rset", Reconcilable: true},
	{Name: ResourceSetInputProviderKind, Plural: "resourcesetinputproviders", ShortName: "rsip", Reconcilable: true},
}

FluxOperatorKinds is a list of all supported Flux Operator kinds and their properties.

View Source
var (
	// WebConfigGroupVersion is group and version of the Flux Status Page configuration API.
	WebConfigGroupVersion = schema.GroupVersion{Group: "web.fluxcd.controlplane.io", Version: "v1"}
)

Functions

func AllUserActions added in v0.41.0

func AllUserActions() []string

AllUserActions returns all supported user action verbs, sorted, derived from the userActions source of truth.

func FluxGroupFor added in v0.25.0

func FluxGroupFor(kind string) (*schema.GroupKind, error)

FluxGroupFor returns the GroupKind for the given kind.

func IsFluxAPI added in v0.25.0

func IsFluxAPI(apiVersion string) bool

IsFluxAPI checks if the given API version or API group is part of the Flux API group.

func IsUserAction added in v0.51.0

func IsUserAction(verb string) bool

IsUserAction reports whether the given verb is a supported user action.

func RepositoryID added in v0.44.0

func RepositoryID(repo string) string

RepositoryID returns the Adler-32 checksum of a repository URL as a hex string.

Types

type AgentCatalog added in v0.44.0

type AgentCatalog struct {
	metav1.TypeMeta `json:",inline"`

	// Spec holds the catalog configuration.
	// +required
	Spec AgentCatalogSpec `json:"spec"`

	// Status holds the catalog status.
	// +optional
	Status AgentCatalogStatus `json:"status,omitempty"`
}

AgentCatalog is the Agent skills catalog.

func (*AgentCatalog) DeepCopy added in v0.44.0

func (in *AgentCatalog) DeepCopy() *AgentCatalog

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentCatalog.

func (*AgentCatalog) DeepCopyInto added in v0.44.0

func (in *AgentCatalog) DeepCopyInto(out *AgentCatalog)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentCatalogInventoryEntry added in v0.44.0

type AgentCatalogInventoryEntry struct {
	// ID is the Adler-32 checksum of the source repository URL.
	// +required
	ID string `json:"id"`

	// URL is the OCI artifact URL including tag.
	// +required
	URL string `json:"url"`

	// Digest is the OCI artifact digest.
	// +required
	Digest string `json:"digest"`

	// LastUpdateAt is the timestamp of the last update.
	// +required
	LastUpdateAt string `json:"lastUpdateAt"`

	// Annotations holds the OCI artifact manifest annotations.
	// +optional
	Annotations map[string]string `json:"annotations,omitempty"`

	// Skills is the list of skills provided by this source.
	// +optional
	Skills []AgentCatalogSkill `json:"skills,omitempty"`
}

AgentCatalogInventoryEntry holds the status of an installed skill source.

func (*AgentCatalogInventoryEntry) DeepCopy added in v0.44.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentCatalogInventoryEntry.

func (*AgentCatalogInventoryEntry) DeepCopyInto added in v0.44.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentCatalogInventoryEntry) SkillNames added in v0.44.0

func (e *AgentCatalogInventoryEntry) SkillNames() []string

SkillNames returns a slice of skill names from the inventory entry.

type AgentCatalogSkill added in v0.44.0

type AgentCatalogSkill struct {
	// Name is the skill name.
	// +required
	Name string `json:"name"`

	// Checksum is the directory hash of the installed skill contents.
	// +required
	Checksum string `json:"checksum"`
}

AgentCatalogSkill holds the metadata of an installed skill.

func (*AgentCatalogSkill) DeepCopy added in v0.44.0

func (in *AgentCatalogSkill) DeepCopy() *AgentCatalogSkill

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentCatalogSkill.

func (*AgentCatalogSkill) DeepCopyInto added in v0.44.0

func (in *AgentCatalogSkill) DeepCopyInto(out *AgentCatalogSkill)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentCatalogSource added in v0.44.0

type AgentCatalogSource struct {
	// Repository is the OCI repository URL.
	// +required
	Repository string `json:"repository"`

	// Tag is the OCI artifact tag.
	// +required
	Tag string `json:"tag"`

	// Verify holds the signature verification configuration.
	// +optional
	Verify *AgentCatalogVerify `json:"verify,omitempty"`

	// TargetAgents is the list of agent IDs for which skill symlinks are managed.
	// +optional
	TargetAgents []string `json:"targetAgents,omitempty"`

	// TargetSkills is the list of skill names to install from this source.
	// When empty, all skills from the artifact are installed.
	// +optional
	TargetSkills []string `json:"targetSkills,omitempty"`
}

AgentCatalogSource holds the configuration for an OCI skills source.

func (*AgentCatalogSource) DeepCopy added in v0.44.0

func (in *AgentCatalogSource) DeepCopy() *AgentCatalogSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentCatalogSource.

func (*AgentCatalogSource) DeepCopyInto added in v0.44.0

func (in *AgentCatalogSource) DeepCopyInto(out *AgentCatalogSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentCatalogSpec added in v0.44.0

type AgentCatalogSpec struct {
	// Sources is the list of OCI repositories providing skills.
	// +optional
	Sources []AgentCatalogSource `json:"sources,omitempty"`
}

AgentCatalogSpec holds the catalog configuration.

func (*AgentCatalogSpec) DeepCopy added in v0.44.0

func (in *AgentCatalogSpec) DeepCopy() *AgentCatalogSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentCatalogSpec.

func (*AgentCatalogSpec) DeepCopyInto added in v0.44.0

func (in *AgentCatalogSpec) DeepCopyInto(out *AgentCatalogSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentCatalogSpec) FindSource added in v0.44.0

func (s *AgentCatalogSpec) FindSource(repo string) (*AgentCatalogSource, int)

FindSource returns the source matching the given repository and its index, or nil and -1 if not found.

type AgentCatalogStatus added in v0.44.0

type AgentCatalogStatus struct {
	// Inventory is the list of installed skill sources.
	// +optional
	Inventory []AgentCatalogInventoryEntry `json:"inventory,omitempty"`
}

AgentCatalogStatus holds the catalog status.

func (*AgentCatalogStatus) DeepCopy added in v0.44.0

func (in *AgentCatalogStatus) DeepCopy() *AgentCatalogStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentCatalogStatus.

func (*AgentCatalogStatus) DeepCopyInto added in v0.44.0

func (in *AgentCatalogStatus) DeepCopyInto(out *AgentCatalogStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentCatalogStatus) FindInventoryEntry added in v0.44.0

func (s *AgentCatalogStatus) FindInventoryEntry(repo string) (*AgentCatalogInventoryEntry, int)

FindInventoryEntry returns the inventory entry matching the given repository and its index, or -1 if not found.

type AgentCatalogVerify added in v0.44.0

type AgentCatalogVerify struct {
	// Provider is the verification provider (e.g. "cosign").
	// +required
	Provider string `json:"provider"`

	// MatchOIDCIdentity is the list of OIDC identity matchers.
	// +optional
	MatchOIDCIdentity []OIDCIdentity `json:"matchOIDCIdentity,omitempty"`
}

AgentCatalogVerify holds the signature verification configuration.

func (*AgentCatalogVerify) DeepCopy added in v0.44.0

func (in *AgentCatalogVerify) DeepCopy() *AgentCatalogVerify

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentCatalogVerify.

func (*AgentCatalogVerify) DeepCopyInto added in v0.44.0

func (in *AgentCatalogVerify) DeepCopyInto(out *AgentCatalogVerify)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AnonymousAuthenticationSpec added in v0.41.0

type AnonymousAuthenticationSpec struct {
	// Username is used for Kubernetes User RBAC impersonation.
	// +optional
	Username string `json:"username"`

	// Groups is used for Kubernetes Group RBAC impersonation.
	// +optional
	Groups []string `json:"groups"`
}

AnonymousAuthenticationSpec holds the Anonymous authentication configuration. At least one of the fields must be set.

func (*AnonymousAuthenticationSpec) Configured added in v0.41.0

func (a *AnonymousAuthenticationSpec) Configured() bool

Configured checks if the AnonymousAuthenticationSpec is configured.

func (*AnonymousAuthenticationSpec) DeepCopy added in v0.41.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AnonymousAuthenticationSpec.

func (*AnonymousAuthenticationSpec) DeepCopyInto added in v0.41.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AuthenticationSpec added in v0.41.0

type AuthenticationSpec struct {
	// Type is the authentication type.
	// +kubebuilder:validation:Enum=Anonymous;OAuth2
	// +required
	Type string `json:"type"`

	// Anonymous holds the Anonymous authentication configuration.
	// +optional
	Anonymous *AnonymousAuthenticationSpec `json:"anonymous"`

	// OAuth2 holds the OAuth2 authentication configuration.
	// +optional
	OAuth2 *OAuth2AuthenticationSpec `json:"oauth2"`

	// SessionDuration is the duration of the user session.
	// Defaults to one week.
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$"
	// +optional
	SessionDuration *metav1.Duration `json:"sessionDuration"`

	// UserCacheSize is the size of the user cache in number of users.
	// Defaults to 100.
	// +optional
	UserCacheSize int `json:"userCacheSize"`
}

AuthenticationSpec holds the Flux Status Page authentication configuration.

func (*AuthenticationSpec) DeepCopy added in v0.41.0

func (in *AuthenticationSpec) DeepCopy() *AuthenticationSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthenticationSpec.

func (*AuthenticationSpec) DeepCopyInto added in v0.41.0

func (in *AuthenticationSpec) DeepCopyInto(out *AuthenticationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClaimsProcessorSpec added in v0.41.0

type ClaimsProcessorSpec struct {
	// Variables is a list of CEL expressions to extract information from the ID token claims
	// into named variables that can be reused in other expressions, e.g. "variables.username".
	// +optional
	Variables []VariableSpec `json:"variables"`

	// Validations is a list of CEL expressions that validate the ID token claims and extracted
	// variables. Each expression must return the type bool. If the expression evaluates to false,
	// the message is returned as an error.
	// +optional
	Validations []ValidationSpec `json:"validations"`

	// Profile contains CEL expressions to extract user profile information from the ID token
	// claims and extracted variables for populating the user profile.
	// Defaults to ProfileSpec{
	//   Name:  "has(claims.name) ? claims.name : (has(claims.email) ? claims.email : ”)",
	// }
	// +optional
	Profile *ProfileSpec `json:"profile"`

	// Impersonation is a pair of CEL expressions that extract the username and groups
	// from the ID token claims and extracted variables for Kubernetes RBAC impersonation.
	// The username expression must return the type string, while the groups expression
	// must return the type []string.
	// Defaults to ImpersonationSpec{
	//   Username: "has(claims.email) ? claims.email : ”",
	//   Groups:   "has(claims.groups) ? claims.groups : []",
	// }
	// +optional
	Impersonation *ImpersonationSpec `json:"impersonation"`
}

ClaimsProcessorSpec holds the configuration for processing claims with CEL expressions.

func (*ClaimsProcessorSpec) DeepCopy added in v0.41.0

func (in *ClaimsProcessorSpec) DeepCopy() *ClaimsProcessorSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClaimsProcessorSpec.

func (*ClaimsProcessorSpec) DeepCopyInto added in v0.41.0

func (in *ClaimsProcessorSpec) DeepCopyInto(out *ClaimsProcessorSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Cluster

type Cluster struct {
	// Domain is the cluster domain used for generating the FQDN of services.
	// Defaults to 'cluster.local'.
	// +kubebuilder:default:=cluster.local
	// +optional
	Domain string `json:"domain,omitempty"`

	// Multitenant enables the multitenancy lockdown. Defaults to false.
	// +kubebuilder:default:=false
	// +optional
	Multitenant bool `json:"multitenant,omitempty"`

	// MultitenantWorkloadIdentity enables the multitenancy lockdown for
	// workload identity. Defaults to false.
	// +kubebuilder:default:=false
	// +optional
	MultitenantWorkloadIdentity bool `json:"multitenantWorkloadIdentity,omitempty"`

	// TenantDefaultServiceAccount is the name of the service account
	// to use as default when the multitenant lockdown is enabled, for
	// kustomize-controller and helm-controller.
	// This field will also be used for multitenant workload identity
	// lockdown for source-controller, notification-controller,
	// image-reflector-controller and image-automation-controller.
	// Defaults to the 'default' service account from the tenant namespace.
	// +optional
	TenantDefaultServiceAccount string `json:"tenantDefaultServiceAccount,omitempty"`

	// TenantDefaultDecryptionServiceAccount is the name of the service account
	// to use as default for kustomize-controller SOPS decryption when the
	// multitenant lockdown for workload identity is enabled. Defaults to the
	// 'default' service account from the tenant namespace.
	// +optional
	TenantDefaultDecryptionServiceAccount string `json:"tenantDefaultDecryptionServiceAccount,omitempty"`

	// TenantDefaultKubeConfigServiceAccount is the name of the service account
	// to use as default for kustomize-controller and helm-controller remote
	// cluster access via spec.kubeConfig.configMapRef when the multitenant
	// lockdown for workload identity is enabled. Defaults to the 'default'
	// service account from the tenant namespace.
	// +optional
	TenantDefaultKubeConfigServiceAccount string `json:"tenantDefaultKubeConfigServiceAccount,omitempty"`

	// ObjectLevelWorkloadIdentity enables the feature gate
	// required for object-level workload identity.
	// This feature is only available in Flux v2.6.0 and later.
	// +optional
	ObjectLevelWorkloadIdentity bool `json:"objectLevelWorkloadIdentity,omitempty"`

	// NetworkPolicy restricts network access to the current namespace.
	// Defaults to true.
	// +kubebuilder:default:=true
	// +optional
	NetworkPolicy bool `json:"networkPolicy"`

	// Type specifies the distro of the Kubernetes cluster.
	// Defaults to 'kubernetes'.
	// +kubebuilder:validation:Enum:=kubernetes;openshift;aws;azure;gcp
	// +kubebuilder:default:=kubernetes
	// +optional
	Type string `json:"type,omitempty"`

	// Size defines the vertical scaling profile of the Flux controllers.
	// The size is used to determine the concurrency and CPU/Memory limits for the Flux controllers.
	// Accepted values are: 'small', 'medium' and 'large'.
	// +kubebuilder:validation:Enum:=small;medium;large
	// +optional
	Size string `json:"size,omitempty"`
}

Cluster is the specification for the Kubernetes cluster. +kubebuilder:validation:XValidation:rule="(has(self.objectLevelWorkloadIdentity) && self.objectLevelWorkloadIdentity) || !has(self.multitenantWorkloadIdentity) || !self.multitenantWorkloadIdentity", message=".objectLevelWorkloadIdentity must be set to true when .multitenantWorkloadIdentity is set to true"

func (*Cluster) DeepCopy

func (in *Cluster) DeepCopy() *Cluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.

func (*Cluster) DeepCopyInto

func (in *Cluster) DeepCopyInto(out *Cluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterInfo added in v0.21.0

type ClusterInfo struct {
	// ServerVersion is the version of the Kubernetes API server.
	// +required
	ServerVersion string `json:"serverVersion"`

	// Platform is the os/arch of the Kubernetes control plane.
	// +required
	Platform string `json:"platform"`

	// Nodes is the number of nodes in the Kubernetes cluster.
	// +optional
	Nodes int `json:"nodes,omitempty"`
}

ClusterInfo defines the version information of the Kubernetes cluster.

func (*ClusterInfo) DeepCopy added in v0.21.0

func (in *ClusterInfo) DeepCopy() *ClusterInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInfo.

func (*ClusterInfo) DeepCopyInto added in v0.21.0

func (in *ClusterInfo) DeepCopyInto(out *ClusterInfo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CommonMetadata added in v0.11.0

type CommonMetadata struct {
	// Annotations to be added to the object's metadata.
	// +optional
	Annotations map[string]string `json:"annotations,omitempty"`

	// Labels to be added to the object's metadata.
	// +optional
	Labels map[string]string `json:"labels,omitempty"`
}

CommonMetadata defines the common labels and annotations.

func (*CommonMetadata) DeepCopy added in v0.11.0

func (in *CommonMetadata) DeepCopy() *CommonMetadata

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonMetadata.

func (*CommonMetadata) DeepCopyInto added in v0.11.0

func (in *CommonMetadata) DeepCopyInto(out *CommonMetadata)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Component

type Component string

Component is the name of a controller to install. +kubebuilder:validation:Enum:=source-controller;kustomize-controller;helm-controller;notification-controller;image-reflector-controller;image-automation-controller;source-watcher

type ComponentImage added in v0.1.0

type ComponentImage struct {
	// Name of the component.
	// +required
	Name string `json:"name"`

	// Repository address of the container image.
	// +required
	Repository string `json:"repository"`

	// Tag of the container image.
	// +required
	Tag string `json:"tag"`

	// Digest of the container image.
	// +optional
	Digest string `json:"digest,omitempty"`
}

ComponentImage represents a container image used by a component.

func (*ComponentImage) DeepCopy added in v0.1.0

func (in *ComponentImage) DeepCopy() *ComponentImage

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentImage.

func (*ComponentImage) DeepCopyInto added in v0.1.0

func (in *ComponentImage) DeepCopyInto(out *ComponentImage)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Dependency added in v0.14.0

type Dependency struct {
	// APIVersion of the resource to depend on.
	// +required
	APIVersion string `json:"apiVersion"`

	// Kind of the resource to depend on.
	// +required
	Kind string `json:"kind"`

	// Name of the resource to depend on.
	// +required
	Name string `json:"name"`

	// Namespace of the resource to depend on.
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// Ready checks if the resource Ready status condition is true.
	// +optional
	Ready bool `json:"ready,omitempty"`

	// ReadyExpr checks if the resource satisfies the given CEL expression.
	// The expression replaces the default readiness check and
	// is only evaluated if Ready is set to 'true'.
	// +optional
	ReadyExpr string `json:"readyExpr,omitempty"`
}

Dependency defines a ResourceSet dependency on a Kubernetes resource.

func (*Dependency) DeepCopy added in v0.14.0

func (in *Dependency) DeepCopy() *Dependency

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Dependency.

func (*Dependency) DeepCopyInto added in v0.14.0

func (in *Dependency) DeepCopyInto(out *Dependency)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Distribution

type Distribution struct {
	// Version semver expression e.g. '2.x', '2.3.x'.
	// +required
	Version string `json:"version"`

	// Registry address to pull the distribution images from
	// e.g. 'ghcr.io/fluxcd'.
	// +required
	Registry string `json:"registry"`

	// Variant specifies the Flux distribution flavor stored
	// in the registry.
	// +kubebuilder:validation:Enum=upstream-alpine;enterprise-alpine;enterprise-distroless;enterprise-distroless-fips
	// +optional
	Variant string `json:"variant,omitempty"`

	// ImagePullSecret is the name of the Kubernetes secret
	// to use for pulling images.
	// +optional
	ImagePullSecret string `json:"imagePullSecret,omitempty"`

	// Artifact is the URL to the OCI artifact containing
	// the latest Kubernetes manifests for the distribution,
	// e.g. 'oci://ghcr.io/controlplaneio-fluxcd/flux-operator-manifests:latest'.
	// +kubebuilder:validation:Pattern="^oci://.*$"
	// +optional
	Artifact string `json:"artifact,omitempty"`

	// ArtifactPullSecret is the name of the Kubernetes secret
	// to use for pulling the Kubernetes manifests for the distribution specified in the Artifact field.
	// +optional
	ArtifactPullSecret string `json:"artifactPullSecret,omitempty"`
}

Distribution specifies the version and container registry to pull images from.

func (*Distribution) DeepCopy

func (in *Distribution) DeepCopy() *Distribution

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Distribution.

func (*Distribution) DeepCopyInto

func (in *Distribution) DeepCopyInto(out *Distribution)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxComponentStatus added in v0.6.0

type FluxComponentStatus struct {
	// Name is the name of the Flux component.
	// +required
	Name string `json:"name"`

	// Ready is the readiness status of the Flux component.
	// +required
	Ready bool `json:"ready"`

	// Status is a human-readable message indicating details
	// about the Flux component observed state.
	// +required
	Status string `json:"status"`

	// Image is the container image of the Flux component.
	// +required
	Image string `json:"image"`
}

FluxComponentStatus defines the observed state of a Flux component.

func (*FluxComponentStatus) DeepCopy added in v0.6.0

func (in *FluxComponentStatus) DeepCopy() *FluxComponentStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxComponentStatus.

func (*FluxComponentStatus) DeepCopyInto added in v0.6.0

func (in *FluxComponentStatus) DeepCopyInto(out *FluxComponentStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxDistributionStatus added in v0.6.0

type FluxDistributionStatus struct {
	// Entitlement is the entitlement verification status.
	// +required
	Entitlement string `json:"entitlement"`

	// Status is a human-readable message indicating details
	// about the distribution observed state.
	// +required
	Status string `json:"status"`

	// Version is the version of the Flux instance.
	// +optional
	Version string `json:"version,omitempty"`

	// ManagedBy is the name of the operator managing the Flux instance.
	// +optional
	ManagedBy string `json:"managedBy,omitempty"`
}

FluxDistributionStatus defines the version information of the Flux instance.

func (*FluxDistributionStatus) DeepCopy added in v0.6.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxDistributionStatus.

func (*FluxDistributionStatus) DeepCopyInto added in v0.6.0

func (in *FluxDistributionStatus) DeepCopyInto(out *FluxDistributionStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxInstance

type FluxInstance struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   FluxInstanceSpec   `json:"spec,omitempty"`
	Status FluxInstanceStatus `json:"status,omitempty"`
}

FluxInstance is the Schema for the fluxinstances API +kubebuilder:validation:XValidation:rule="self.metadata.name == 'flux'", message="the only accepted name for a FluxInstance is 'flux'"

func (*FluxInstance) DeepCopy

func (in *FluxInstance) DeepCopy() *FluxInstance

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxInstance.

func (*FluxInstance) DeepCopyInto

func (in *FluxInstance) DeepCopyInto(out *FluxInstance)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FluxInstance) DeepCopyObject

func (in *FluxInstance) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*FluxInstance) GetArtifactInterval added in v0.12.0

func (in *FluxInstance) GetArtifactInterval() time.Duration

GetArtifactInterval returns the interval at which the distribution artifact should be reconciled. If no interval is set, the default is 10 minutes.

func (*FluxInstance) GetCluster

func (in *FluxInstance) GetCluster() Cluster

GetCluster returns the cluster specification with defaults.

func (*FluxInstance) GetComponents

func (in *FluxInstance) GetComponents() []string

GetComponents returns the components to install with defaults.

func (*FluxInstance) GetConditions

func (in *FluxInstance) GetConditions() []metav1.Condition

GetConditions returns the status conditions of the object.

func (*FluxInstance) GetDistribution

func (in *FluxInstance) GetDistribution() Distribution

GetDistribution returns the distribution specification with defaults.

func (*FluxInstance) GetInterval

func (in *FluxInstance) GetInterval() time.Duration

GetInterval returns the interval at which the object should be reconciled. If no interval is set, the default is 60 minutes.

func (*FluxInstance) GetLastHandledForceRequestStatus added in v0.31.0

func (in *FluxInstance) GetLastHandledForceRequestStatus() *string

GetLastHandledForceRequestStatus returns the last handled force request status.

func (*FluxInstance) GetLastHandledReconcileRequest added in v0.31.0

func (in *FluxInstance) GetLastHandledReconcileRequest() string

GetLastHandledReconcileRequest returns the last handled reconcile request.

func (*FluxInstance) GetMigrateResources added in v0.10.0

func (in *FluxInstance) GetMigrateResources() bool

GetMigrateResources returns the migration configuration with defaults.

func (*FluxInstance) GetTimeout

func (in *FluxInstance) GetTimeout() time.Duration

GetTimeout returns the timeout for the reconciliation process. If no timeout is set, the default is 5 minutes.

func (*FluxInstance) GetWait added in v0.10.0

func (in *FluxInstance) GetWait() bool

GetWait returns the wait configuration with defaults.

func (*FluxInstance) IsDisabled added in v0.3.0

func (in *FluxInstance) IsDisabled() bool

IsDisabled returns true if the object has the reconcile annotation set to 'disabled'.

func (*FluxInstance) IsShardingStorageEnabled added in v0.23.0

func (in *FluxInstance) IsShardingStorageEnabled() bool

IsShardingStorageEnabled returns true if 'spec.sharding.storage' is set to 'persistent'.

func (*FluxInstance) SetConditions

func (in *FluxInstance) SetConditions(conditions []metav1.Condition)

SetConditions sets the status conditions on the object.

func (*FluxInstance) SetLastHandledReconcileAt added in v0.23.0

func (in *FluxInstance) SetLastHandledReconcileAt(value string)

SetLastHandledReconcileAt sets the last handled reconcile time in the status.

type FluxInstanceList

type FluxInstanceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []FluxInstance `json:"items"`
}

FluxInstanceList contains a list of FluxInstance

func (*FluxInstanceList) DeepCopy

func (in *FluxInstanceList) DeepCopy() *FluxInstanceList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxInstanceList.

func (*FluxInstanceList) DeepCopyInto

func (in *FluxInstanceList) DeepCopyInto(out *FluxInstanceList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FluxInstanceList) DeepCopyObject

func (in *FluxInstanceList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type FluxInstanceSpec

type FluxInstanceSpec struct {
	// Distribution specifies the version and container registry to pull images from.
	// +required
	Distribution Distribution `json:"distribution"`

	// Components is the list of controllers to install.
	// Defaults to the core Flux controllers:
	//   - source-controller
	//   - kustomize-controller
	//   - helm-controller
	//   - notification-controller
	// +optional
	Components []Component `json:"components,omitempty"`

	// CommonMetadata specifies the common labels and annotations that are
	// applied to all resources. Any existing label or annotation will be
	// overridden if its key matches a common one.
	// +optional
	CommonMetadata *CommonMetadata `json:"commonMetadata,omitempty"`

	// Cluster holds the specification of the Kubernetes cluster.
	// +optional
	Cluster *Cluster `json:"cluster,omitempty"`

	// Sharding holds the specification of the sharding configuration.
	// +optional
	Sharding *Sharding `json:"sharding,omitempty"`

	// Storage holds the specification of the source-controller
	// persistent volume claim.
	// +optional
	Storage *Storage `json:"storage,omitempty"`

	// Kustomize holds a set of patches that can be applied to the
	// Flux installation, to customize the way Flux operates.
	// +optional
	Kustomize *Kustomize `json:"kustomize,omitempty"`

	// Wait instructs the controller to check the health of all the reconciled
	// resources. Defaults to true.
	// +kubebuilder:default:=true
	// +optional
	Wait *bool `json:"wait,omitempty"`

	// MigrateResources instructs the controller to migrate the Flux custom resources
	// from the previous version to the latest API version specified in the CRD.
	// Defaults to true.
	// +kubebuilder:default:=true
	// +optional
	MigrateResources *bool `json:"migrateResources,omitempty"`

	// Sync specifies the source for the cluster sync operation.
	// When set, a Flux source (GitRepository, OCIRepository or Bucket)
	// and Flux Kustomization are created to sync the cluster state
	// with the source repository.
	// +optional
	Sync *Sync `json:"sync,omitempty"`
}

FluxInstanceSpec defines the desired state of FluxInstance +kubebuilder:validation:XValidation:rule="!has(self.sharding) || !has(self.sharding.storage) || self.sharding.storage != 'persistent' || has(self.storage)",message=".spec.storage must be set when .spec.sharding.storage is 'persistent'"

func (*FluxInstanceSpec) DeepCopy

func (in *FluxInstanceSpec) DeepCopy() *FluxInstanceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxInstanceSpec.

func (*FluxInstanceSpec) DeepCopyInto

func (in *FluxInstanceSpec) DeepCopyInto(out *FluxInstanceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxInstanceStatus

type FluxInstanceStatus struct {
	meta.ReconcileRequestStatus `json:",inline"`
	meta.ForceRequestStatus     `json:",inline"`

	// Conditions contains the readiness conditions of the object.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// LastAttemptedRevision is the version and digest of the
	// distribution config that was last attempted to reconcile.
	// +optional
	LastAttemptedRevision string `json:"lastAttemptedRevision,omitempty"`

	// LastAppliedRevision is the version and digest of the
	// distribution config that was last reconcile.
	// +optional
	LastAppliedRevision string `json:"lastAppliedRevision,omitempty"`

	// LastArtifactRevision is the digest of the last pulled
	// distribution artifact.
	// +optional
	LastArtifactRevision string `json:"lastArtifactRevision,omitempty"`

	// Components contains the container images used by the components.
	// +optional
	Components []ComponentImage `json:"components,omitempty"`

	// Inventory contains a list of Kubernetes resource object references
	// last applied on the cluster.
	// +optional
	Inventory *ResourceInventory `json:"inventory,omitempty"`

	// History contains the reconciliation history of the FluxInstance
	// as a list of snapshots ordered by the last reconciled time.
	History History `json:"history,omitempty"`
}

FluxInstanceStatus defines the observed state of FluxInstance

func (*FluxInstanceStatus) DeepCopy

func (in *FluxInstanceStatus) DeepCopy() *FluxInstanceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxInstanceStatus.

func (*FluxInstanceStatus) DeepCopyInto

func (in *FluxInstanceStatus) DeepCopyInto(out *FluxInstanceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxKindInfo added in v0.30.0

type FluxKindInfo struct {
	// Name is the singular name of the resource kind.
	Name string

	// Plural is the plural name of the resource kind used for RBAC.
	Plural string

	// ShortName is a short alias for the resource kind.
	ShortName string

	// Reconcilable indicates if the resource kind supports reconciliation operations.
	Reconcilable bool
}

FluxKindInfo holds information about a Flux resource kind.

func FindFluxKindInfo added in v0.39.0

func FindFluxKindInfo(kind string) (*FluxKindInfo, error)

FindFluxKindInfo searches for a FluxKindInfo in a case-insensitive way. It matches both Name and ShortName and returns the corresponding FluxKindInfo. Returns an error if the kind is not found in the fluxKinds list.

func (*FluxKindInfo) DeepCopy added in v0.30.0

func (in *FluxKindInfo) DeepCopy() *FluxKindInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxKindInfo.

func (*FluxKindInfo) DeepCopyInto added in v0.30.0

func (in *FluxKindInfo) DeepCopyInto(out *FluxKindInfo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxObject added in v0.23.0

type FluxObject interface {
	client.Object

	// GetConditions returns a slice of metav1.Condition.
	GetConditions() []metav1.Condition

	// SetConditions sets the status conditions on the object.
	SetConditions([]metav1.Condition)

	// SetLastHandledReconcileAt sets the last handled reconcile time in the status.
	SetLastHandledReconcileAt(value string)

	// IsDisabled returns true if the object has the reconcile annotation set to 'disabled'.
	IsDisabled() bool

	// GetInterval returns the interval at which the object should be reconciled.
	GetInterval() time.Duration
}

FluxObject is the interface that all Flux objects must implement.

+k8s:deepcopy-gen=false

type FluxReconcilerStats added in v0.6.0

type FluxReconcilerStats struct {
	// Running is the number of reconciled
	// resources in the Running state.
	// +required
	Running int `json:"running"`

	// Failing is the number of reconciled
	// resources in the Failing state and not Suspended.
	// +required
	Failing int `json:"failing"`

	// Suspended is the number of reconciled
	// resources in the Suspended state.
	// +required
	Suspended int `json:"suspended"`

	// TotalSize is the total size of the artifacts in storage.
	// +optional
	TotalSize string `json:"totalSize,omitempty"`
}

FluxReconcilerStats defines the reconcile statistics.

func (*FluxReconcilerStats) DeepCopy added in v0.6.0

func (in *FluxReconcilerStats) DeepCopy() *FluxReconcilerStats

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxReconcilerStats.

func (*FluxReconcilerStats) DeepCopyInto added in v0.6.0

func (in *FluxReconcilerStats) DeepCopyInto(out *FluxReconcilerStats)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxReconcilerStatus added in v0.6.0

type FluxReconcilerStatus struct {
	// APIVersion is the API version of the Flux resource.
	// +required
	APIVersion string `json:"apiVersion"`

	// Kind is the kind of the Flux resource.
	// +required
	Kind string `json:"kind"`

	// Stats is the reconcile statics of the Flux resource kind.
	// +optional
	Stats FluxReconcilerStats `json:"stats,omitempty"`
}

FluxReconcilerStatus defines the observed state of a Flux reconciler.

func (*FluxReconcilerStatus) DeepCopy added in v0.6.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxReconcilerStatus.

func (*FluxReconcilerStatus) DeepCopyInto added in v0.6.0

func (in *FluxReconcilerStatus) DeepCopyInto(out *FluxReconcilerStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxReport added in v0.6.0

type FluxReport struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   FluxReportSpec   `json:"spec,omitempty"`
	Status FluxReportStatus `json:"status,omitempty"`
}

FluxReport is the Schema for the fluxreports API. +kubebuilder:validation:XValidation:rule="self.metadata.name == 'flux'", message="the only accepted name for a FluxReport is 'flux'"

func (*FluxReport) DeepCopy added in v0.6.0

func (in *FluxReport) DeepCopy() *FluxReport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxReport.

func (*FluxReport) DeepCopyInto added in v0.6.0

func (in *FluxReport) DeepCopyInto(out *FluxReport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FluxReport) DeepCopyObject added in v0.6.0

func (in *FluxReport) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*FluxReport) GetConditions added in v0.6.0

func (in *FluxReport) GetConditions() []metav1.Condition

GetConditions returns the status conditions of the object.

func (*FluxReport) GetInterval added in v0.6.0

func (in *FluxReport) GetInterval() time.Duration

GetInterval returns the interval at which the object should be reconciled. If the annotation is not set, it returns 0.

func (*FluxReport) IsDisabled added in v0.6.0

func (in *FluxReport) IsDisabled() bool

IsDisabled returns true if the object has the reconcile annotation set to 'disabled'.

func (*FluxReport) SetConditions added in v0.6.0

func (in *FluxReport) SetConditions(conditions []metav1.Condition)

SetConditions sets the status conditions on the object.

func (*FluxReport) SetLastHandledReconcileAt added in v0.23.0

func (in *FluxReport) SetLastHandledReconcileAt(value string)

SetLastHandledReconcileAt sets the last handled reconcile time in the status.

type FluxReportList added in v0.6.0

type FluxReportList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []FluxReport `json:"items"`
}

FluxReportList contains a list of FluxReport.

func (*FluxReportList) DeepCopy added in v0.6.0

func (in *FluxReportList) DeepCopy() *FluxReportList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxReportList.

func (*FluxReportList) DeepCopyInto added in v0.6.0

func (in *FluxReportList) DeepCopyInto(out *FluxReportList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FluxReportList) DeepCopyObject added in v0.6.0

func (in *FluxReportList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type FluxReportSpec added in v0.6.0

type FluxReportSpec struct {
	// Distribution is the version information of the Flux installation.
	// +required
	Distribution FluxDistributionStatus `json:"distribution"`

	// Cluster is the version information of the Kubernetes cluster.
	// +optional
	Cluster *ClusterInfo `json:"cluster,omitempty"`

	// Operator is the version information of the Flux Operator.
	// +optional
	Operator *OperatorInfo `json:"operator,omitempty"`

	// ComponentsStatus is the status of the Flux controller deployments.
	// +optional
	ComponentsStatus []FluxComponentStatus `json:"components,omitempty"`

	// ReconcilersStatus is the list of Flux reconcilers and
	// their statistics grouped by API kind.
	// +optional
	ReconcilersStatus []FluxReconcilerStatus `json:"reconcilers,omitempty"`

	// SyncStatus is the status of the cluster sync
	// Source and Kustomization resources.
	// +optional
	SyncStatus *FluxSyncStatus `json:"sync,omitempty"`
}

FluxReportSpec defines the observed state of a Flux installation.

func (*FluxReportSpec) DeepCopy added in v0.6.0

func (in *FluxReportSpec) DeepCopy() *FluxReportSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxReportSpec.

func (*FluxReportSpec) DeepCopyInto added in v0.6.0

func (in *FluxReportSpec) DeepCopyInto(out *FluxReportSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxReportStatus added in v0.6.0

type FluxReportStatus struct {
	meta.ReconcileRequestStatus `json:",inline"`

	// Conditions contains the readiness conditions of the object.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

FluxReportStatus defines the readiness of a FluxReport.

func (*FluxReportStatus) DeepCopy added in v0.6.0

func (in *FluxReportStatus) DeepCopy() *FluxReportStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxReportStatus.

func (*FluxReportStatus) DeepCopyInto added in v0.6.0

func (in *FluxReportStatus) DeepCopyInto(out *FluxReportStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FluxSyncStatus added in v0.6.0

type FluxSyncStatus struct {
	// ID is the identifier of the sync.
	// +required
	ID string `json:"id"`

	// Path is the kustomize path of the sync.
	// +optional
	Path string `json:"path,omitempty"`

	// Ready is the readiness status of the sync.
	// +required
	Ready bool `json:"ready"`

	// Status is a human-readable message indicating details
	// about the sync observed state.
	// +required
	Status string `json:"status"`

	// Source is the URL of the source repository.
	// +optional
	Source string `json:"source,omitempty"`
}

FluxSyncStatus defines the observed state of the cluster sync.

func (*FluxSyncStatus) DeepCopy added in v0.6.0

func (in *FluxSyncStatus) DeepCopy() *FluxSyncStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluxSyncStatus.

func (*FluxSyncStatus) DeepCopyInto added in v0.6.0

func (in *FluxSyncStatus) DeepCopyInto(out *FluxSyncStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type History added in v0.28.0

type History []Snapshot

History represents a collection of snapshots that tracks the reconciliation history of a group of resources, automatically sorted by last reconciled timestamp.

func (History) DeepCopy added in v0.28.0

func (in History) DeepCopy() History

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new History.

func (History) DeepCopyInto added in v0.28.0

func (in History) DeepCopyInto(out *History)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (History) Latest added in v0.28.0

func (h History) Latest() *Snapshot

Latest returns the most recent snapshot from the history. Returns nil if the history is empty.

func (History) Len added in v0.28.0

func (h History) Len() int

Len returns the length of the history slice.

func (History) Less added in v0.28.0

func (h History) Less(i, j int) bool

Less reports whether the element with index i should sort before the element with index j. Sorts by LastReconciled in descending order (most recent first).

func (History) Swap added in v0.28.0

func (h History) Swap(i, j int)

Swap swaps the elements with indexes i and j.

func (*History) Upsert added in v0.28.0

func (h *History) Upsert(digest string, timestamp time.Time, duration time.Duration, status string, metadata map[string]string)

Upsert adds a new snapshot to the history or updates an existing one with the same digest and status. The most recent snapshot is moved to the front of the array. When adding new snapshots, the history is automatically truncated to MaxHistorySize.

type ImpersonationSpec added in v0.41.0

type ImpersonationSpec struct {
	// Username is a CEL expression that extracts the username from the ID token claims
	// and extracted variables. This expression must return the type string.
	// Defaults to "has(claims.email) ? claims.email : ”".
	// +optional
	Username string `json:"username"`

	// Groups is a CEL expression that extracts the groups from the ID token claims
	// and extracted variables. This expression must return the type []string.
	// Defaults to "has(claims.groups) ? claims.groups : []".
	// +optional
	Groups string `json:"groups"`
}

ImpersonationSpec holds CEL expressions for extracting Kubernetes RBAC impersonation information. At least one of the fields must be set.

func (*ImpersonationSpec) DeepCopy added in v0.41.0

func (in *ImpersonationSpec) DeepCopy() *ImpersonationSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImpersonationSpec.

func (*ImpersonationSpec) DeepCopyInto added in v0.41.0

func (in *ImpersonationSpec) DeepCopyInto(out *ImpersonationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type InputProvider added in v0.14.0

type InputProvider interface {
	GetInputs() ([]map[string]any, error)
	GetNamespace() string
	GetName() string
	GroupVersionKind() schema.GroupVersionKind
}

InputProvider is the interface that the ResourceSet input providers must implement.

+k8s:deepcopy-gen=false

type InputProviderReference added in v0.14.0

type InputProviderReference struct {
	// APIVersion of the input provider resource.
	// When not set, the APIVersion of the ResourceSet is used.
	// +kubebuilder:validation:Enum=fluxcd.controlplane.io/v1
	// +optional
	APIVersion string `json:"apiVersion,omitempty"`

	// Kind of the input provider resource.
	// +kubebuilder:validation:Enum=ResourceSetInputProvider
	// +optional
	Kind string `json:"kind,omitempty"`

	// Name of the input provider resource. Cannot be set
	// when the Selector field is set.
	// +optional
	Name string `json:"name,omitempty"`

	// Selector is a label selector to filter the input provider resources
	// as an alternative to the Name field.
	// +optional
	Selector *metav1.LabelSelector `json:"selector,omitempty"`
}

InputProviderReference defines a reference to an input provider resource in the same namespace as the ResourceSet. +kubebuilder:validation:XValidation:rule="has(self.name) || has(self.selector)", message="at least one of name or selector must be set for input provider references" +kubebuilder:validation:XValidation:rule="!has(self.name) || !has(self.selector)", message="cannot set both name and selector for input provider references"

func (*InputProviderReference) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InputProviderReference.

func (*InputProviderReference) DeepCopyInto added in v0.14.0

func (in *InputProviderReference) DeepCopyInto(out *InputProviderReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type InputStrategySpec added in v0.29.0

type InputStrategySpec struct {
	// Name defines how the inputs are combined when multiple
	// input provider objects are used. Supported values are:
	// - Flatten: all inputs sets from all input provider objects are
	//   flattened into a single list of input sets.
	// - Permute: all inputs sets from all input provider objects are
	//   combined using a Cartesian product, resulting in a list of input sets
	//   that contains every possible combination of input values.
	//   For example, if provider A has inputs [{x: 1}, {x: 2}] and provider B has
	//   inputs [{y: "a"}, {y: "b"}], the resulting input sets will be:
	//   [{x: 1, y: "a"}, {x: 1, y: "b"}, {x: 2, y: "a"}, {x: 2, y: "b"}].
	//   This strategy can lead to a large number of input sets and should be
	//   used with caution. Users should use filtering features from
	//   ResourceSetInputProvider to limit the amount of exported inputs.
	// +kubebuilder:validation:Enum=Flatten;Permute
	// +required
	Name string `json:"name,omitempty"`

	// IncludeEmptyProviders controls how input providers that export no
	// inputs are treated. Only applies when Name is Permute. When true, if
	// any provider has zero inputs the resulting permutation set is empty
	// (mathematically correct Cartesian product behavior). When false or
	// unset (default), providers with zero inputs are silently skipped and
	// the remaining providers still permute among themselves.
	// +optional
	IncludeEmptyProviders bool `json:"includeEmptyProviders,omitempty"`
}

InputStrategySpec defines how the inputs are combined when multiple input provider objects are used. Defaults to flattening all inputs from all providers into a single list of input sets. +kubebuilder:validation:XValidation:rule="!has(self.includeEmptyProviders) || self.name == 'Permute'",message="includeEmptyProviders only applies when name is Permute"

func (*InputStrategySpec) DeepCopy added in v0.29.0

func (in *InputStrategySpec) DeepCopy() *InputStrategySpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InputStrategySpec.

func (*InputStrategySpec) DeepCopyInto added in v0.29.0

func (in *InputStrategySpec) DeepCopyInto(out *InputStrategySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Kustomize

type Kustomize struct {
	// Strategic merge and JSON patches, defined as inline YAML objects,
	// capable of targeting objects based on kind, label and annotation selectors.
	// +optional
	Patches []kustomize.Patch `json:"patches,omitempty"`
}

Kustomize holds a set of patches that can be applied to the Flux installation, to customize the way Flux operates.

func (*Kustomize) DeepCopy

func (in *Kustomize) DeepCopy() *Kustomize

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Kustomize.

func (*Kustomize) DeepCopyInto

func (in *Kustomize) DeepCopyInto(out *Kustomize)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NextSchedule added in v0.23.0

type NextSchedule struct {
	// Schedule has the configuration of the next schedule.
	Schedule `json:",inline"`

	// When is the next time the schedule will run.
	// +required
	When metav1.Time `json:"when"`
}

NextSchedule defines the next time a schedule will run.

func (*NextSchedule) DeepCopy added in v0.23.0

func (in *NextSchedule) DeepCopy() *NextSchedule

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NextSchedule.

func (*NextSchedule) DeepCopyInto added in v0.23.0

func (in *NextSchedule) DeepCopyInto(out *NextSchedule)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OAuth2AuthenticationSpec added in v0.41.0

type OAuth2AuthenticationSpec struct {
	// Provider is the OAuth2 provider name.
	// +kubebuilder:validation:Enum=OIDC
	// +required
	Provider string `json:"provider"`

	// ClientID is the OAuth2 client identifier.
	// +required
	ClientID string `json:"clientID"`

	// ClientSecret is the OAuth2 client secret.
	// +required
	ClientSecret string `json:"clientSecret"`

	// Scopes is the list of OAuth2 scopes to request.
	// Each provider may have different default scopes.
	// +optional
	Scopes []string `json:"scopes"`

	// AuthURLParams is a map of additional query parameters
	// to include in the authorization URL when redirecting
	// the user to the OAuth2 provider for authentication.
	// This can be used to set provider-specific parameters,
	// such as "access_type=offline" and "prompt=consent".
	// +optional
	AuthURLParams map[string]string `json:"authURLParams"`

	// AutoLogin redirects unauthenticated users straight to the OAuth2
	// provider instead of showing the login page. Default: false.
	// +optional
	AutoLogin bool `json:"autoLogin,omitempty"`

	// IssuerURL is used for OIDC provider discovery.
	// Required for the OIDC provider.
	// Used only by the OIDC provider.
	// +optional
	IssuerURL string `json:"issuerURL"`

	// ClaimsProcessorSpec holds the configuration for processing claims with CEL expressions.
	// Used only by the OIDC provider.
	// +optional
	ClaimsProcessorSpec `json:",inline"`
}

OAuth2AuthenticationSpec holds the OAuth2 authentication configuration.

func (*OAuth2AuthenticationSpec) Configured added in v0.41.0

func (o *OAuth2AuthenticationSpec) Configured() bool

Configured checks if the OAuth2AuthenticationSpec is configured.

func (*OAuth2AuthenticationSpec) DeepCopy added in v0.41.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OAuth2AuthenticationSpec.

func (*OAuth2AuthenticationSpec) DeepCopyInto added in v0.41.0

func (in *OAuth2AuthenticationSpec) DeepCopyInto(out *OAuth2AuthenticationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OIDCIdentity added in v0.44.0

type OIDCIdentity struct {
	// Issuer is the OIDC issuer URL.
	// +required
	Issuer string `json:"issuer"`

	// Subject is the OIDC subject regexp.
	// +required
	Subject string `json:"subject"`
}

OIDCIdentity holds the OIDC issuer and subject for verification.

func (*OIDCIdentity) DeepCopy added in v0.44.0

func (in *OIDCIdentity) DeepCopy() *OIDCIdentity

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OIDCIdentity.

func (*OIDCIdentity) DeepCopyInto added in v0.44.0

func (in *OIDCIdentity) DeepCopyInto(out *OIDCIdentity)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OperatorInfo added in v0.24.0

type OperatorInfo struct {
	// APIVersion is the API version of the Flux Operator.
	// +required
	APIVersion string `json:"apiVersion"`

	// Version is the version number of Flux Operator.
	// +required
	Version string `json:"version"`

	// Platform is the os/arch of Flux Operator.
	// +required
	Platform string `json:"platform"`
}

OperatorInfo defines the version information of the Flux Operator.

func (*OperatorInfo) DeepCopy added in v0.24.0

func (in *OperatorInfo) DeepCopy() *OperatorInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperatorInfo.

func (*OperatorInfo) DeepCopyInto added in v0.24.0

func (in *OperatorInfo) DeepCopyInto(out *OperatorInfo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProfileSpec added in v0.41.0

type ProfileSpec struct {
	// Name is a CEL expression that extracts the user's full name from the ID token claims
	// and extracted variables. This expression must return the type string.
	// Defaults to "has(claims.name) ? claims.name : (has(claims.email) ? claims.email : ”)".
	// +optional
	Name string `json:"name"`
}

ProfileSpec holds CEL expressions for extracting user profile information.

func (*ProfileSpec) DeepCopy added in v0.41.0

func (in *ProfileSpec) DeepCopy() *ProfileSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileSpec.

func (*ProfileSpec) DeepCopyInto added in v0.41.0

func (in *ProfileSpec) DeepCopyInto(out *ProfileSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceInventory

type ResourceInventory struct {
	// Entries of Kubernetes resource object references.
	Entries []ResourceRef `json:"entries"`
}

ResourceInventory contains a list of Kubernetes resource object references that have been applied.

func (*ResourceInventory) DeepCopy

func (in *ResourceInventory) DeepCopy() *ResourceInventory

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceInventory.

func (*ResourceInventory) DeepCopyInto

func (in *ResourceInventory) DeepCopyInto(out *ResourceInventory)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceRef

type ResourceRef struct {
	// ID is the string representation of the Kubernetes resource object's metadata,
	// in the format '<namespace>_<name>_<group>_<kind>'.
	ID string `json:"id"`

	// Version is the API version of the Kubernetes resource object's kind.
	Version string `json:"v"`
}

ResourceRef contains the information necessary to locate a resource within a cluster.

func (*ResourceRef) DeepCopy

func (in *ResourceRef) DeepCopy() *ResourceRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRef.

func (*ResourceRef) DeepCopyInto

func (in *ResourceRef) DeepCopyInto(out *ResourceRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSet added in v0.14.0

type ResourceSet struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ResourceSetSpec   `json:"spec,omitempty"`
	Status ResourceSetStatus `json:"status,omitempty"`
}

ResourceSet is the Schema for the ResourceSets API.

func (*ResourceSet) DeepCopy added in v0.14.0

func (in *ResourceSet) DeepCopy() *ResourceSet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSet.

func (*ResourceSet) DeepCopyInto added in v0.14.0

func (in *ResourceSet) DeepCopyInto(out *ResourceSet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ResourceSet) DeepCopyObject added in v0.14.0

func (in *ResourceSet) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ResourceSet) GetConditions added in v0.14.0

func (in *ResourceSet) GetConditions() []metav1.Condition

GetConditions returns the status conditions of the object.

func (*ResourceSet) GetIncludeEmptyProviders added in v0.48.0

func (in *ResourceSet) GetIncludeEmptyProviders() bool

GetIncludeEmptyProviders returns whether providers with zero exported inputs should be kept when combining inputs. Defaults to false.

func (*ResourceSet) GetInputStrategy added in v0.29.0

func (in *ResourceSet) GetInputStrategy() string

GetInputStrategy returns the input strategy name.

func (*ResourceSet) GetInputs added in v0.14.0

func (in *ResourceSet) GetInputs() ([]map[string]any, error)

GetInputs returns the ResourceSet in-line inputs as a list of maps.

func (*ResourceSet) GetInterval added in v0.14.0

func (in *ResourceSet) GetInterval() time.Duration

GetInterval returns the interval at which the object should be reconciled. If no interval is set, the default is 60 minutes.

func (*ResourceSet) GetTimeout added in v0.14.0

func (in *ResourceSet) GetTimeout() time.Duration

GetTimeout returns the timeout for the reconciliation process. If no timeout is set, the default is 5 minutes.

func (*ResourceSet) HasSteps added in v0.53.0

func (in *ResourceSet) HasSteps() bool

HasSteps returns true if the ResourceSet has steps defined in the spec.

func (*ResourceSet) IsDisabled added in v0.14.0

func (in *ResourceSet) IsDisabled() bool

IsDisabled returns true if the object has the reconcile annotation set to 'disabled'.

func (*ResourceSet) IsForceEnabled added in v0.20.0

func (in *ResourceSet) IsForceEnabled() bool

IsForceEnabled returns true if the object has the force annotation set to 'enabled'.

func (*ResourceSet) SetConditions added in v0.14.0

func (in *ResourceSet) SetConditions(conditions []metav1.Condition)

SetConditions sets the status conditions on the object.

func (*ResourceSet) SetLastHandledReconcileAt added in v0.23.0

func (in *ResourceSet) SetLastHandledReconcileAt(value string)

SetLastHandledReconcileAt sets the last handled reconcile time in the status.

type ResourceSetInput added in v0.14.0

type ResourceSetInput map[string]*apiextensionsv1.JSON

ResourceSetInput defines the key-value pairs of the ResourceSet input.

func NewResourceSetInput added in v0.21.0

func NewResourceSetInput(defaults, m map[string]any) (ResourceSetInput, error)

NewResourceSetInput creates a new ResourceSetInput from a map[string]any.

func (ResourceSetInput) DeepCopy added in v0.14.0

func (in ResourceSetInput) DeepCopy() ResourceSetInput

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetInput.

func (ResourceSetInput) DeepCopyInto added in v0.14.0

func (in ResourceSetInput) DeepCopyInto(out *ResourceSetInput)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSetInputFilter added in v0.14.0

type ResourceSetInputFilter struct {
	// IncludeBranch specifies the regular expression to filter the branches
	// that the input provider should include.
	// +optional
	IncludeBranch string `json:"includeBranch,omitempty"`

	// ExcludeBranch specifies the regular expression to filter the branches
	// that the input provider should exclude.
	// +optional
	ExcludeBranch string `json:"excludeBranch,omitempty"`

	// IncludeTag specifies the regular expression to filter the tags
	// that the input provider should include.
	// +optional
	IncludeTag string `json:"includeTag,omitempty"`

	// ExcludeTag specifies the regular expression to filter the tags
	// that the input provider should exclude.
	// +optional
	ExcludeTag string `json:"excludeTag,omitempty"`

	// IncludeEnvironment specifies the regular expression to filter the environments
	// that the input provider should include.
	// +optional
	IncludeEnvironment string `json:"includeEnvironment,omitempty"`

	// ExcludeEnvironment specifies the regular expression to filter the environments
	// that the input provider should exclude.
	// +optional
	ExcludeEnvironment string `json:"excludeEnvironment,omitempty"`

	// Labels specifies the list of labels to filter the input provider response.
	// +optional
	Labels []string `json:"labels,omitempty"`

	// Limit specifies the maximum number of input sets to return.
	// When not set, the default limit is 100.
	// +kubebuilder:default:=100
	// +optional
	Limit int `json:"limit,omitempty"`

	// Semver specifies a semantic version range to filter and sort the tags.
	// If this field is not specified, the tags will be sorted in reverse
	// alphabetical order.
	// Supported only for tags at the moment.
	// +optional
	Semver string `json:"semver,omitempty"`
}

ResourceSetInputFilter defines the filter to apply to the input provider response.

func (*ResourceSetInputFilter) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetInputFilter.

func (*ResourceSetInputFilter) DeepCopyInto added in v0.14.0

func (in *ResourceSetInputFilter) DeepCopyInto(out *ResourceSetInputFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSetInputProvider added in v0.14.0

type ResourceSetInputProvider struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ResourceSetInputProviderSpec   `json:"spec,omitempty"`
	Status ResourceSetInputProviderStatus `json:"status,omitempty"`
}

ResourceSetInputProvider is the Schema for the ResourceSetInputProviders API.

func (*ResourceSetInputProvider) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetInputProvider.

func (*ResourceSetInputProvider) DeepCopyInto added in v0.14.0

func (in *ResourceSetInputProvider) DeepCopyInto(out *ResourceSetInputProvider)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ResourceSetInputProvider) DeepCopyObject added in v0.14.0

func (in *ResourceSetInputProvider) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ResourceSetInputProvider) GetConditions added in v0.14.0

func (in *ResourceSetInputProvider) GetConditions() []metav1.Condition

GetConditions returns the status conditions of the object.

func (*ResourceSetInputProvider) GetDefaultInputs added in v0.14.0

func (in *ResourceSetInputProvider) GetDefaultInputs() (map[string]any, error)

GetDefaultInputs returns the ResourceSetInputProvider default inputs.

func (*ResourceSetInputProvider) GetFilterLimit added in v0.24.0

func (in *ResourceSetInputProvider) GetFilterLimit() int

GetFilterLimit returns the filter limit for the input provider.

func (*ResourceSetInputProvider) GetInputs added in v0.14.0

func (in *ResourceSetInputProvider) GetInputs() ([]map[string]any, error)

GetInputs returns the exported inputs from ResourceSetInputProvider status.

func (*ResourceSetInputProvider) GetInterval added in v0.14.0

func (in *ResourceSetInputProvider) GetInterval() time.Duration

GetInterval returns the interval at which the object should be reconciled. If no interval is set, the default is 10 minutes.

func (*ResourceSetInputProvider) GetLastHandledForceRequestStatus added in v0.23.0

func (in *ResourceSetInputProvider) GetLastHandledForceRequestStatus() *string

GetLastHandledForceRequestStatus returns the last handled force request status.

func (ResourceSetInputProvider) GetLastHandledReconcileRequest added in v0.23.0

func (in ResourceSetInputProvider) GetLastHandledReconcileRequest() string

GetLastHandledReconcileRequest returns the last handled reconcile request.

func (*ResourceSetInputProvider) GetTimeout added in v0.14.0

func (in *ResourceSetInputProvider) GetTimeout() time.Duration

GetTimeout returns the timeout for the reconciliation process. If no timeout is set, the default is 2 minutes.

func (*ResourceSetInputProvider) IsDisabled added in v0.14.0

func (in *ResourceSetInputProvider) IsDisabled() bool

IsDisabled returns true if the object has the reconcile annotation set to 'disabled'.

func (*ResourceSetInputProvider) SetConditions added in v0.14.0

func (in *ResourceSetInputProvider) SetConditions(conditions []metav1.Condition)

SetConditions sets the status conditions on the object.

func (*ResourceSetInputProvider) SetLastHandledReconcileAt added in v0.23.0

func (in *ResourceSetInputProvider) SetLastHandledReconcileAt(value string)

SetLastHandledReconcileAt sets the last handled reconcile time in the status.

type ResourceSetInputProviderList added in v0.14.0

type ResourceSetInputProviderList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ResourceSetInputProvider `json:"items"`
}

ResourceSetInputProviderList contains a list of ResourceSetInputProvider.

func (*ResourceSetInputProviderList) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetInputProviderList.

func (*ResourceSetInputProviderList) DeepCopyInto added in v0.14.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ResourceSetInputProviderList) DeepCopyObject added in v0.14.0

func (in *ResourceSetInputProviderList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ResourceSetInputProviderSpec added in v0.14.0

type ResourceSetInputProviderSpec struct {
	// Type specifies the type of the input provider.
	// +kubebuilder:validation:Enum=Static;GitHubBranch;GitHubTag;GitHubPullRequest;GitLabBranch;GitLabTag;GitLabMergeRequest;GitLabEnvironment;AzureDevOpsBranch;AzureDevOpsTag;AzureDevOpsPullRequest;AWSCodeCommitBranch;AWSCodeCommitTag;AWSCodeCommitPullRequest;GiteaBranch;GiteaTag;GiteaPullRequest;OCIArtifactTag;ACRArtifactTag;ECRArtifactTag;GARArtifactTag;ExternalService
	// +required
	Type string `json:"type"`

	// URL specifies the HTTP/S or OCI address of the input provider API.
	// When connecting to a Git provider, the URL should point to the repository address.
	// When connecting to an OCI provider, the URL should point to the OCI repository address.
	// +kubebuilder:validation:Pattern="^((http|https|oci)://.*){0,1}$"
	// +optional
	URL string `json:"url,omitempty"`

	// ServiceAccountName specifies the name of the Kubernetes ServiceAccount
	// used for authentication with AWS, Azure or GCP services through
	// workload identity federation features. If not specified, the
	// authentication for these cloud providers will use the ServiceAccount
	// of the operator (or any other environment authentication configuration).
	// +optional
	ServiceAccountName string `json:"serviceAccountName,omitempty"`

	// SecretRef specifies the Kubernetes Secret containing the credentials
	// to access the input provider.
	// When connecting to a Git provider, the secret must contain the keys
	// 'username' and 'password', and the password should be a personal access token
	// that grants read-only access to the repository.
	// When connecting to an OCI provider, the secret must contain a Kubernetes
	// Image Pull Secret, as if created by `kubectl create secret docker-registry`.
	// When connecting to an ExternalService provider, the secret must contain either
	// a 'token' key for bearer token authentication, or 'username' and 'password'
	// keys for basic authentication.
	// +optional
	SecretRef *meta.LocalObjectReference `json:"secretRef,omitempty"`

	// CertSecretRef specifies the Kubernetes Secret containing either or both of
	//
	// - a PEM-encoded CA certificate (`ca.crt`)
	// - a PEM-encoded client certificate (`tls.crt`) and private key (`tls.key`)
	//
	// When connecting to a Git, OCI, or ExternalService provider that uses self-signed certificates,
	// the CA certificate must be set in the Secret under the 'ca.crt' key to establish the trust relationship.
	// When connecting to a provider that supports client certificates (mTLS), the client certificate
	// and private key must be set in the Secret under the 'tls.crt' and 'tls.key' keys, respectively.
	// +optional
	CertSecretRef *meta.LocalObjectReference `json:"certSecretRef,omitempty"`

	// Insecure allows connecting to an ExternalService or OCIArtifactTag provider
	// over plain HTTP without TLS. When not set, the URL must use HTTPS.
	// +optional
	Insecure bool `json:"insecure,omitempty"`

	// DefaultValues contains the default values for the inputs.
	// These values are used to populate the inputs when the provider
	// response does not contain them.
	// +optional
	DefaultValues ResourceSetInput `json:"defaultValues,omitempty"`

	// Filter defines the filter to apply to the input provider response.
	// +optional
	Filter *ResourceSetInputFilter `json:"filter,omitempty"`

	// Skip defines whether we need to skip input provider response updates.
	// +optional
	Skip *ResourceSetInputSkip `json:"skip,omitempty"`

	// Schedule defines the schedules for the input provider to run.
	// +optional
	Schedule []Schedule `json:"schedule,omitempty"`
}

ResourceSetInputProviderSpec defines the desired state of ResourceSetInputProvider +kubebuilder:validation:XValidation:rule="self.type != 'Static' || !has(self.url)", message="spec.url must be empty when spec.type is 'Static'" +kubebuilder:validation:XValidation:rule="self.type == 'Static' || has(self.url)", message="spec.url must not be empty when spec.type is not 'Static'" +kubebuilder:validation:XValidation:rule="!self.type.startsWith('Git') || self.url.startsWith('http')", message="spec.url must start with 'http://' or 'https://' when spec.type is a Git provider" +kubebuilder:validation:XValidation:rule="!self.type.startsWith('AzureDevOps') || self.url.startsWith('http://') || self.url.startsWith('https://')", message="spec.url must start with 'http://' or 'https://' when spec.type is an AzureDevOps provider" +kubebuilder:validation:XValidation:rule="!self.type.startsWith('AWSCodeCommit') || self.url.startsWith('https://')", message="spec.url must start with 'https://' when spec.type is a AWSCodeCommit provider" +kubebuilder:validation:XValidation:rule="!self.type.endsWith('ArtifactTag') || self.url.startsWith('oci')", message="spec.url must start with 'oci://' when spec.type is an OCI provider" +kubebuilder:validation:XValidation:rule="self.type != 'ExternalService' || self.url.startsWith('http')", message="spec.url must start with 'http://' or 'https://' when spec.type is 'ExternalService'" +kubebuilder:validation:XValidation:rule="!has(self.insecure) || !self.insecure || self.type == 'ExternalService' || self.type == 'OCIArtifactTag'", message="spec.insecure can only be set when spec.type is 'ExternalService' or 'OCIArtifactTag'" +kubebuilder:validation:XValidation:rule="self.type != 'ExternalService' || !self.url.startsWith('http://') || (has(self.insecure) && self.insecure)", message="spec.url must use 'https://' unless spec.insecure is true" +kubebuilder:validation:XValidation:rule="!has(self.serviceAccountName) || self.type.startsWith('AzureDevOps') || self.type.startsWith('AWSCodeCommit') || self.type.endsWith('ArtifactTag')", message="cannot specify spec.serviceAccountName when spec.type is not one of AzureDevOps*, AWSCodeCommit* or *ArtifactTag" +kubebuilder:validation:XValidation:rule="!has(self.certSecretRef) || !(self.type == 'Static' || self.type.startsWith('AzureDevOps') || self.type.startsWith('AWSCodeCommit') || (self.type.endsWith('ArtifactTag') && self.type != 'OCIArtifactTag'))", message="cannot specify spec.certSecretRef when spec.type is one of Static, AzureDevOps*, AWSCodeCommit*, ACRArtifactTag, ECRArtifactTag or GARArtifactTag" +kubebuilder:validation:XValidation:rule="!has(self.secretRef) || !(self.type == 'Static' || self.type.startsWith('AWSCodeCommit') || (self.type.endsWith('ArtifactTag') && self.type != 'OCIArtifactTag'))", message="cannot specify spec.secretRef when spec.type is one of Static, AWSCodeCommit*, ACRArtifactTag, ECRArtifactTag or GARArtifactTag"

func (*ResourceSetInputProviderSpec) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetInputProviderSpec.

func (*ResourceSetInputProviderSpec) DeepCopyInto added in v0.14.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSetInputProviderStatus added in v0.14.0

type ResourceSetInputProviderStatus struct {
	meta.ReconcileRequestStatus `json:",inline"`
	meta.ForceRequestStatus     `json:",inline"`

	// Conditions contains the readiness conditions of the object.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// ExportedInputs contains the list of inputs exported by the provider.
	// +optional
	ExportedInputs []ResourceSetInput `json:"exportedInputs,omitempty"`

	// LastExportedRevision is the digest of the
	// inputs that were last reconcile.
	// +optional
	LastExportedRevision string `json:"lastExportedRevision,omitempty"`

	// NextSchedule is the next schedule when the input provider will run.
	// +optional
	NextSchedule *NextSchedule `json:"nextSchedule,omitempty"`
}

ResourceSetInputProviderStatus defines the observed state of ResourceSetInputProvider.

func (*ResourceSetInputProviderStatus) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetInputProviderStatus.

func (*ResourceSetInputProviderStatus) DeepCopyInto added in v0.14.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSetInputSkip added in v0.19.0

type ResourceSetInputSkip struct {
	// Labels specifies list of labels to skip input provider response when any of the label conditions matched.
	// When prefixed with !, input provider response will be skipped if it does not have this label.
	// +optional
	Labels []string `json:"labels,omitempty"`
}

ResourceSetInputSkip defines whether we need to skip input updates.

func (*ResourceSetInputSkip) DeepCopy added in v0.19.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetInputSkip.

func (*ResourceSetInputSkip) DeepCopyInto added in v0.19.0

func (in *ResourceSetInputSkip) DeepCopyInto(out *ResourceSetInputSkip)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSetList added in v0.14.0

type ResourceSetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ResourceSet `json:"items"`
}

ResourceSetList contains a list of ResourceSet.

func (*ResourceSetList) DeepCopy added in v0.14.0

func (in *ResourceSetList) DeepCopy() *ResourceSetList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetList.

func (*ResourceSetList) DeepCopyInto added in v0.14.0

func (in *ResourceSetList) DeepCopyInto(out *ResourceSetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ResourceSetList) DeepCopyObject added in v0.14.0

func (in *ResourceSetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ResourceSetSpec added in v0.14.0

type ResourceSetSpec struct {
	// CommonMetadata specifies the common labels and annotations that are
	// applied to all resources. Any existing label or annotation will be
	// overridden if its key matches a common one.
	// +optional
	CommonMetadata *CommonMetadata `json:"commonMetadata,omitempty"`

	// InputStrategy defines how the inputs are combined when multiple
	// input provider objects are used. Defaults to flattening all inputs
	// from all providers into a single list of input sets.
	// +optional
	InputStrategy *InputStrategySpec `json:"inputStrategy,omitempty"`

	// Inputs contains the list of ResourceSet inputs.
	// +optional
	Inputs []ResourceSetInput `json:"inputs,omitempty"`

	// InputsFrom contains the list of references to input providers.
	// When set, the inputs are fetched from the providers and concatenated
	// with the in-line inputs defined in the ResourceSet.
	// +optional
	InputsFrom []InputProviderReference `json:"inputsFrom,omitempty"`

	// Resources contains the list of Kubernetes resources to reconcile.
	// +kubebuilder:validation:items:Type=object
	// +optional
	Resources []*apiextensionsv1.JSON `json:"resources,omitempty"`

	// ResourcesTemplate is a Go template that generates the list of
	// Kubernetes resources to reconcile. The template is rendered
	// as multi-document YAML, the resources should be separated by '---'.
	// When both Resources and ResourcesTemplate are set, the resulting
	// objects are merged and deduplicated, with the ones from Resources taking precedence.
	// +optional
	ResourcesTemplate string `json:"resourcesTemplate,omitempty"`

	// Steps contains an ordered list of named steps to reconcile in sequence.
	// Each step's resources are applied and health-checked before the next
	// step starts. Mutually exclusive with Resources and ResourcesTemplate.
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=20
	// +kubebuilder:validation:XValidation:rule="self.all(s, self.exists_one(t, t.name == s.name))",message="step names must be unique"
	// +optional
	Steps []ResourceSetStep `json:"steps,omitempty"`

	// DependsOn specifies the list of Kubernetes resources that must
	// exist on the cluster before the reconciliation process starts.
	// +optional
	DependsOn []Dependency `json:"dependsOn,omitempty"`

	// The name of the Kubernetes service account to impersonate
	// when reconciling the generated resources.
	// +optional
	ServiceAccountName string `json:"serviceAccountName,omitempty"`

	// Wait instructs the controller to check the health
	// of all the reconciled resources.
	// +optional
	Wait bool `json:"wait,omitempty"`
}

ResourceSetSpec defines the desired state of ResourceSet +kubebuilder:validation:XValidation:rule="!has(self.steps) || (!has(self.resources) && !has(self.resourcesTemplate))",message="steps is mutually exclusive with resources and resourcesTemplate" +kubebuilder:validation:XValidation:rule="has(self.steps) || has(self.resources) || has(self.resourcesTemplate)",message="at least one of steps, resources or resourcesTemplate must be set"

func (*ResourceSetSpec) DeepCopy added in v0.14.0

func (in *ResourceSetSpec) DeepCopy() *ResourceSetSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetSpec.

func (*ResourceSetSpec) DeepCopyInto added in v0.14.0

func (in *ResourceSetSpec) DeepCopyInto(out *ResourceSetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSetStatus added in v0.14.0

type ResourceSetStatus struct {
	meta.ReconcileRequestStatus `json:",inline"`

	// Conditions contains the readiness conditions of the object.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// Inventory contains a list of Kubernetes resource object references
	// last applied on the cluster.
	// +optional
	Inventory *ResourceInventory `json:"inventory,omitempty"`

	// LastAppliedRevision is the digest of the
	// generated resources that were last reconcile.
	// +optional
	LastAppliedRevision string `json:"lastAppliedRevision,omitempty"`

	// ExternalChecksumRefs lists the ConfigMap and Secret references
	// discovered in checksumFrom annotations on the last reconciliation
	// that point to objects not rendered by this ResourceSet. Each entry
	// has the form "Kind/namespace/name". It is used to trigger a
	// reconciliation when one of the referenced objects changes.
	// +optional
	ExternalChecksumRefs []string `json:"externalChecksumRefs,omitempty"`

	// History contains the reconciliation history of the ResourceSet
	// as a list of snapshots ordered by the last reconciled time.
	History History `json:"history,omitempty"`
}

ResourceSetStatus defines the observed state of ResourceSet.

func (*ResourceSetStatus) DeepCopy added in v0.14.0

func (in *ResourceSetStatus) DeepCopy() *ResourceSetStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetStatus.

func (*ResourceSetStatus) DeepCopyInto added in v0.14.0

func (in *ResourceSetStatus) DeepCopyInto(out *ResourceSetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSetStep added in v0.53.0

type ResourceSetStep struct {
	// Name of the step, must be unique within the ResourceSet.
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?$`
	// +kubebuilder:validation:MaxLength=63
	// +required
	Name string `json:"name"`

	// Resources contains the list of Kubernetes resources to reconcile.
	// +kubebuilder:validation:items:Type=object
	// +optional
	Resources []*apiextensionsv1.JSON `json:"resources,omitempty"`

	// ResourcesTemplate is a Go template that generates the list of
	// Kubernetes resources to reconcile. The template is rendered
	// as multi-document YAML, the resources should be separated by '---'.
	// When both Resources and ResourcesTemplate are set, the resulting
	// objects are merged and deduplicated, with the ones from Resources taking precedence.
	// +optional
	ResourcesTemplate string `json:"resourcesTemplate,omitempty"`

	// Timeout is the maximum time to wait for the step's resources to
	// become ready. When not set, the ResourceSet reconciliation
	// timeout is used.
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$"
	// +optional
	Timeout *metav1.Duration `json:"timeout,omitempty"`
}

ResourceSetStep defines a named step in the ResourceSet reconciliation sequence. The step's resources are applied and health-checked before the next step starts. +kubebuilder:validation:XValidation:rule="has(self.resources) || has(self.resourcesTemplate)",message="at least one of resources or resourcesTemplate must be set"

func (*ResourceSetStep) DeepCopy added in v0.53.0

func (in *ResourceSetStep) DeepCopy() *ResourceSetStep

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSetStep.

func (*ResourceSetStep) DeepCopyInto added in v0.53.0

func (in *ResourceSetStep) DeepCopyInto(out *ResourceSetStep)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Schedule added in v0.23.0

type Schedule struct {
	// Cron specifies the cron expression for the schedule.
	// +required
	Cron string `json:"cron"`

	// TimeZone specifies the time zone for the cron schedule. Defaults to UTC.
	// +kubebuilder:default:="UTC"
	// +optional
	TimeZone string `json:"timeZone,omitempty"`

	// Window defines the time window during which the execution is allowed.
	// Defaults to 0s, meaning no window is applied.
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$"
	// +kubebuilder:default:="0s"
	// +optional
	Window metav1.Duration `json:"window"`
}

Schedule defines a schedule for something to run.

func (*Schedule) DeepCopy added in v0.23.0

func (in *Schedule) DeepCopy() *Schedule

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Schedule.

func (*Schedule) DeepCopyInto added in v0.23.0

func (in *Schedule) DeepCopyInto(out *Schedule)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SearchSpec added in v0.42.0

type SearchSpec struct {
	// Cached enables serving resource listings from the cached search index
	// instead of querying the Kubernetes API in realtime. When enabled, the
	// /api/v1/resources endpoint returns data from the periodically refreshed
	// in-memory index, reducing API server load and improving response latency.
	// The cache is updated on the same interval as the report cache.
	// +optional
	Cached bool `json:"cached"`
}

SearchSpec holds the search configuration.

func (*SearchSpec) DeepCopy added in v0.42.0

func (in *SearchSpec) DeepCopy() *SearchSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchSpec.

func (*SearchSpec) DeepCopyInto added in v0.42.0

func (in *SearchSpec) DeepCopyInto(out *SearchSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Sharding added in v0.9.0

type Sharding struct {
	// Key is the label key used to shard the resources.
	// +kubebuilder:default:=sharding.fluxcd.io/key
	// +optional
	Key string `json:"key,omitempty"`

	// Shards is the list of shard names.
	// +kubebuilder:validation:MinItems=1
	// +required
	Shards []string `json:"shards"`

	// Storage defines if the source-controller shards
	// should use an emptyDir or a persistent volume claim for storage.
	// Accepted values are 'ephemeral' or 'persistent', defaults to 'ephemeral'.
	// When set to 'persistent', the '.spec.storage' field must be set.
	// +kubebuilder:validation:Enum:=ephemeral;persistent
	// +optional
	Storage string `json:"storage,omitempty"`
}

func (*Sharding) DeepCopy added in v0.9.0

func (in *Sharding) DeepCopy() *Sharding

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sharding.

func (*Sharding) DeepCopyInto added in v0.9.0

func (in *Sharding) DeepCopyInto(out *Sharding)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Snapshot added in v0.28.0

type Snapshot struct {
	// Digest is the checksum in the format `<algo>:<hex>` of the resources in this snapshot.
	// +required
	Digest string `json:"digest"`

	// FirstReconciled is the time when this revision was first reconciled to the cluster.
	// +required
	FirstReconciled metav1.Time `json:"firstReconciled"`

	// LastReconciled is the time when this revision was last reconciled to the cluster.
	// +required
	LastReconciled metav1.Time `json:"lastReconciled"`

	// LastReconciledDuration is time it took to reconcile the resources in this revision.
	// +kubebuilder:validation:Type=string
	// +required
	LastReconciledDuration metav1.Duration `json:"lastReconciledDuration"`

	// LastReconciledStatus is the status of the last reconciliation.
	// +required
	LastReconciledStatus string `json:"lastReconciledStatus"`

	// TotalReconciliations is the total number of reconciliations that have occurred for this snapshot.
	// + required
	TotalReconciliations int64 `json:"totalReconciliations"`

	// Metadata contains additional information about the snapshot.
	// +optional
	Metadata map[string]string `json:"metadata,omitempty"`
}

Snapshot represents a point-in-time record of a group of resources reconciliation, including timing information, status, and a unique digest identifier.

func (*Snapshot) DeepCopy added in v0.28.0

func (in *Snapshot) DeepCopy() *Snapshot

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Snapshot.

func (*Snapshot) DeepCopyInto added in v0.28.0

func (in *Snapshot) DeepCopyInto(out *Snapshot)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (Snapshot) String added in v0.28.0

func (s Snapshot) String() string

String returns a human-readable representation of the snapshot.

type Storage added in v0.2.0

type Storage struct {
	// Class is the storage class to use for the PVC.
	// +required
	Class string `json:"class"`

	// Size is the size of the PVC.
	// +required
	Size string `json:"size"`
}

Storage is the specification for the persistent volume claim.

func (*Storage) DeepCopy added in v0.2.0

func (in *Storage) DeepCopy() *Storage

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Storage.

func (*Storage) DeepCopyInto added in v0.2.0

func (in *Storage) DeepCopyInto(out *Storage)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Sync added in v0.4.0

type Sync struct {
	// Name is the name of the Flux source and kustomization resources.
	// When not specified, the name is set to the namespace name of the FluxInstance.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Sync name is immutable"
	// +kubebuilder:validation:MaxLength=63
	// +optional
	Name string `json:"name,omitempty"`

	// Interval is the time between syncs.
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$"
	// +kubebuilder:default:="1m"
	// +optional
	Interval *metav1.Duration `json:"interval,omitempty"`

	// Kind is the kind of the source.
	// +kubebuilder:validation:Enum=OCIRepository;GitRepository;Bucket
	// +required
	Kind string `json:"kind"`

	// URL is the source URL, can be a Git repository HTTP/S or SSH address,
	// an OCI repository address or a Bucket endpoint.
	// +required
	URL string `json:"url"`

	// Ref is the source reference, can be a Git ref name e.g. 'refs/heads/main',
	// an OCI tag e.g. 'latest' or a bucket name e.g. 'flux'.
	// +required
	Ref string `json:"ref"`

	// Path is the path to the source directory containing
	// the kustomize overlay or plain Kubernetes manifests.
	// +required
	Path string `json:"path"`

	// PullSecret specifies the Kubernetes Secret containing the
	// authentication credentials for the source.
	// For Git over HTTP/S sources, the secret must contain username and password fields.
	// For Git over SSH sources, the secret must contain known_hosts and identity fields.
	// For OCI sources, the secret must be of type kubernetes.io/dockerconfigjson.
	// For Bucket sources, the secret must contain accesskey and secretkey fields.
	// +optional
	PullSecret string `json:"pullSecret,omitempty"`

	// Provider specifies OIDC provider for source authentication.
	// For OCIRepository and Bucket the provider can be set to 'aws', 'azure' or 'gcp'.
	// For GitRepository the provider can be set to 'aws' (requires Flux 2.9 or later),
	// 'azure' or 'github'.
	// To disable OIDC authentication the provider can be set to 'generic' or left empty.
	// +kubebuilder:validation:Enum=generic;aws;azure;gcp;github
	// +optional
	Provider string `json:"provider,omitempty"`
}

Sync defines the source and path for the Flux instance synchronization. +kubebuilder:validation:XValidation:rule="!has(self.provider) || self.provider != 'gcp' || self.kind == 'OCIRepository' || self.kind == 'Bucket'",message="sync.provider 'gcp' is only supported for OCIRepository and Bucket" +kubebuilder:validation:XValidation:rule="!has(self.provider) || self.provider != 'github' || self.kind == 'GitRepository'",message="sync.provider 'github' is only supported for GitRepository"

func (*Sync) DeepCopy added in v0.4.0

func (in *Sync) DeepCopy() *Sync

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sync.

func (*Sync) DeepCopyInto added in v0.4.0

func (in *Sync) DeepCopyInto(out *Sync)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UserActionsSpec added in v0.41.0

type UserActionsSpec struct {
	// Audit is a list of actions to be audited.
	// If the field is empty or omitted, no actions are audited.
	// The special value ["*"] can be used to audit all actions.
	// +optional
	Audit []string `json:"audit"`

	// Access determines how GitOps actions are authorized and performed.
	//
	// When set to "Impersonated" (the default), an action requires both the
	// custom per-action RBAC verb (e.g. "suspend") and the native Kubernetes
	// verbs (e.g. "patch"), because the action is performed by impersonating
	// the user.
	//
	// When set to "FineGrained", an action requires only the custom per-action
	// RBAC verb. The action itself is performed using the Flux Operator Web UI's
	// own privileges instead of impersonating the user. This enables stricter
	// least-privilege setups where a user can be granted access to a single action
	// (e.g. only "suspend") without also gaining the broader native verbs.
	// +kubebuilder:validation:Enum=Impersonated;FineGrained
	// +optional
	Access string `json:"access"`
}

UserActionsSpec holds the actions configuration.

func (*UserActionsSpec) DeepCopy added in v0.41.0

func (in *UserActionsSpec) DeepCopy() *UserActionsSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserActionsSpec.

func (*UserActionsSpec) DeepCopyInto added in v0.41.0

func (in *UserActionsSpec) DeepCopyInto(out *UserActionsSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ValidationSpec added in v0.41.0

type ValidationSpec struct {
	// Expression is the CEL expression that defines the validation.
	// The expression must return the type bool.
	// +required
	Expression string `json:"expression"`

	// Message is the error message returned if the validation fails.
	// +required
	Message string `json:"message"`
}

ValidationSpec holds the configuration for a validation used in CEL expressions.

func (*ValidationSpec) DeepCopy added in v0.41.0

func (in *ValidationSpec) DeepCopy() *ValidationSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidationSpec.

func (*ValidationSpec) DeepCopyInto added in v0.41.0

func (in *ValidationSpec) DeepCopyInto(out *ValidationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VariableSpec added in v0.41.0

type VariableSpec struct {
	// Name is the name of the variable.
	// +required
	Name string `json:"name"`

	// Expression is the CEL expression that defines the variable.
	// +required
	Expression string `json:"expression"`
}

VariableSpec holds the configuration for extracting a variable with a CEL expression.

func (*VariableSpec) DeepCopy added in v0.41.0

func (in *VariableSpec) DeepCopy() *VariableSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariableSpec.

func (*VariableSpec) DeepCopyInto added in v0.41.0

func (in *VariableSpec) DeepCopyInto(out *VariableSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WebConfig added in v0.41.0

type WebConfig struct {
	metav1.TypeMeta `json:",inline"`

	// Spec holds the Flux Status Page configuration.
	// +required
	Spec WebConfigSpec `json:"spec"`
}

WebConfig is the Flux Status Page configuration.

func (*WebConfig) DeepCopy added in v0.41.0

func (in *WebConfig) DeepCopy() *WebConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebConfig.

func (*WebConfig) DeepCopyInto added in v0.41.0

func (in *WebConfig) DeepCopyInto(out *WebConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WebConfigSpec added in v0.41.0

type WebConfigSpec struct {
	// Version is a unique identifier for the configuration.
	// This field is set internally when the configuration
	// is loaded and is not part of the API.
	// +required
	Version string `json:"-"`

	// BaseURL is the base URL for constructing the Flux Status Page URLs.
	// Some features may require this to be set.
	// +optional
	BaseURL string `json:"baseURL"`

	// Insecure indicates whether to use insecure settings across the web application.
	// +optional
	Insecure bool `json:"insecure"`

	// Search holds the search configuration.
	// +optional
	Search *SearchSpec `json:"search"`

	// UserActions holds the user actions configuration. Defaults to enabling all actions if not set.
	// Note that, by default, actions are only available when authentication is configured with the
	// OAuth2 type.
	// +optional
	UserActions *UserActionsSpec `json:"userActions"`

	// Authentication holds the authentication configuration.
	// If Authentication.Type is set to OAuth2, BaseURL must be set.
	// +optional
	Authentication *AuthenticationSpec `json:"authentication"`
}

WebConfigSpec holds the Flux Status Page configuration.

func (*WebConfigSpec) DeepCopy added in v0.41.0

func (in *WebConfigSpec) DeepCopy() *WebConfigSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebConfigSpec.

func (*WebConfigSpec) DeepCopyInto added in v0.41.0

func (in *WebConfigSpec) DeepCopyInto(out *WebConfigSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*WebConfigSpec) FineGrainedAccessEnabled added in v0.51.0

func (c *WebConfigSpec) FineGrainedAccessEnabled() bool

FineGrainedAccessEnabled checks if GitOps actions should be performed using the Flux Operator Web UI's own privileges (fine-grained access control) instead of impersonating the user. When enabled, an action requires only the custom per-action RBAC verb from the user, and a 403 returned while performing the action originates from the Web UI application's own RBAC.

func (*WebConfigSpec) IsAuthEnabled added in v0.45.0

func (c *WebConfigSpec) IsAuthEnabled() bool

IsAuthEnabled checks if authentication is enabled.

func (*WebConfigSpec) UserActionsEnabled added in v0.41.0

func (c *WebConfigSpec) UserActionsEnabled() bool

UserActionsEnabled checks if user actions are enabled.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL