v1beta1

package
v0.44.0 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2024 License: Apache-2.0 Imports: 13 Imported by: 7

Documentation

Overview

Package v1beta1 contains API Schema definitions for the config v1beta1 API group +kubebuilder:object:generate=true +groupName=config.projectsveltos.io

Index

Constants

View Source
const (
	// ClusterProfileFinalizer allows ClusterProfileReconciler to clean up resources associated with
	// ClusterProfile before removing it from the apiserver.
	ClusterProfileFinalizer = "clusterprofilefinalizer.projectsveltos.io"

	ClusterProfileKind = "ClusterProfile"
)
View Source
const (
	// ClusterSummaryFinalizer allows ClusterSummaryReconciler to clean up resources associated with
	// ClusterSummary before removing it from the apiserver.
	ClusterSummaryFinalizer = "clustersummaryfinalizer.projectsveltos.io"

	ClusterSummaryKind = "ClusterSummary"
)
View Source
const (
	// FeatureResources is the identifier for generic Resources feature
	FeatureResources = FeatureID("Resources")

	// FeatureHelm is the identifier for Helm feature
	FeatureHelm = FeatureID("Helm")

	// FeatureKustomize is the identifier for Kustomize feature
	FeatureKustomize = FeatureID("Kustomize")
)
View Source
const (
	// FeatureStatusProvisioning indicates that feature is being
	// provisioned in the workload cluster
	FeatureStatusProvisioning = FeatureStatus("Provisioning")

	// FeatureStatusProvisioned indicates that feature has being
	// provisioned in the workload cluster
	FeatureStatusProvisioned = FeatureStatus("Provisioned")

	// FeatureStatusFailed indicates that configuring the feature
	// in the workload cluster failed
	FeatureStatusFailed = FeatureStatus("Failed")

	// FeatureStatusFailedNonRetriable indicates that configuring the feature
	// in the workload cluster failed with a non retriable error
	FeatureStatusFailedNonRetriable = FeatureStatus("FailedNonRetriable")

	// FeatureStatusRemoving indicates that feature is being
	// removed
	FeatureStatusRemoving = FeatureStatus("Removing")

	// FeatureStatusRemoved indicates that feature is removed
	FeatureStatusRemoved = FeatureStatus("Removed")
)
View Source
const (
	// HelChartStatusManaging indicates helm chart is successfully being managed
	HelmChartStatusManaging = HelmChartStatus("Managing")

	// HelChartStatusConflict indicates there is a conflict with another
	// ClusterSummary to manage the helm chart
	HelmChartStatusConflict = HelmChartStatus("Conflict")
)
View Source
const (
	// ProfileFinalizer allows ProfileReconciler to clean up resources associated with
	// Profile before removing it from the apiserver.
	ProfileFinalizer = "profilefinalizer.projectsveltos.io"

	ProfileKind = "Profile"
)
View Source
const (
	// ClusterNameLabel is the label set on:
	// - ClusterSummary instances created by a ClusterProfile instance for a given cluster;
	// - ClusterConfiguration instances created by a ClusterProfile instance for a given cluster;
	// - ClusterReport instances created by a ClusterProfile instance for a given cluster;
	ClusterNameLabel = "projectsveltos.io/cluster-name"

	// ClusterTypeLabel is the label set on:
	// - ClusterSummary instances created by a ClusterProfile instance for a given cluster;
	// - ClusterConfiguration instances created by a ClusterProfile instance for a given cluster;
	// - ClusterReport instances created by a ClusterProfile instance for a given cluster;
	ClusterTypeLabel = "projectsveltos.io/cluster-type"
)
View Source
const (
	// SyncModeOneTime indicates feature sync should happen only once
	SyncModeOneTime = SyncMode("OneTime")

	// SyncModeContinuous indicates feature sync should continuously happen
	SyncModeContinuous = SyncMode("Continuous")

	// SyncModeContinuousWithDriftDetection indicates feature sync should continuously happen
	// if configuration drift is detected in the managed cluster, it will be overrid
	SyncModeContinuousWithDriftDetection = SyncMode("ContinuousWithDriftDetection")

	// SyncModeDryRun indicates feature sync should continuously happen
	// no feature will be updated in the CAPI Cluster though.
	SyncModeDryRun = SyncMode("DryRun")
)
View Source
const (
	// DeploymentTypeLocal indicates resource deployment need to
	// be in the management cluster
	DeploymentTypeLocal = DeploymentType("Local")

	// DeploymentTypeRemote indicates resource deployment need to
	// be in the managed cluster
	DeploymentTypeRemote = DeploymentType("Remote")
)
View Source
const (
	// HelmChartActionInstall will cause Helm chart to be installed
	HelmChartActionInstall = HelmChartAction("Install")

	// HelmChartActionUninstall will cause Helm chart to be removed
	HelmChartActionUninstall = HelmChartAction("Uninstall")
)
View Source
const (
	ClusterConfigurationKind = "ClusterConfiguration"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "config.projectsveltos.io", Version: "v1beta1"}

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

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

func GetClusterConfigurationSectionIndex

func GetClusterConfigurationSectionIndex(clusterConfiguration *ClusterConfiguration,
	profileKind, profileName string) (int, error)

GetClusterConfigurationSectionIndex returns Status.ClusterProfileResources index for given ClusterProfile. If not found, returns an error

func GetProfileOwnerAndTier

func GetProfileOwnerAndTier(ctx context.Context, c client.Client, clusterSummary *ClusterSummary,
) (client.Object, int32, error)

GetProfileOwnerAndTier returns the (Cluster)Profile owning this clusterSummary and its tier. Returns nil if (Cluster)Profile does not exist anymore.

func GetProfileOwnerReference

func GetProfileOwnerReference(clusterSummary *ClusterSummary) (*metav1.OwnerReference, error)

GetProfileOwnerReference returns the ClusterProfile/Profile owning a given ClusterSummary

Types

type Chart

type Chart struct {
	// RepoURL URL of the repo containing the helm chart deployed
	// in the Cluster.
	// +kubebuilder:validation:MinLength=1
	RepoURL string `json:"repoURL"`

	// ReleaseName name of the release deployed in the Cluster.
	// +kubebuilder:validation:MinLength=1
	ReleaseName string `json:"releaseName"`

	// Namespace where chart is deployed in the Cluster.
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// ChartVersion is the version of the helm chart deployed in the Cluster.
	ChartVersion string `json:"chartVersion"`

	// AppVersion is the version of the app deployed in the Cluster.
	// +optional
	AppVersion string `json:"appVersion,omitempty"`

	// The URL to an icon file.
	Icon string `json:"icon,omitempty"`

	// LastAppliedTime identifies when this resource was last applied to the cluster.
	LastAppliedTime *metav1.Time `json:"lastAppliedTime"`
}

func (*Chart) DeepCopy

func (in *Chart) DeepCopy() *Chart

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

func (*Chart) DeepCopyInto

func (in *Chart) DeepCopyInto(out *Chart)

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

type ClusterConfiguration

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

	Status ClusterConfigurationStatus `json:"status,omitempty"`
}

ClusterConfiguration is the Schema for the clusterconfigurations API

func (*ClusterConfiguration) DeepCopy

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

func (*ClusterConfiguration) DeepCopyInto

func (in *ClusterConfiguration) DeepCopyInto(out *ClusterConfiguration)

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

func (*ClusterConfiguration) DeepCopyObject

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

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

type ClusterConfigurationList

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

ClusterConfigurationList contains a list of ClusterConfiguration

func (*ClusterConfigurationList) DeepCopy

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

func (*ClusterConfigurationList) DeepCopyInto

func (in *ClusterConfigurationList) DeepCopyInto(out *ClusterConfigurationList)

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

func (*ClusterConfigurationList) DeepCopyObject

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

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

type ClusterConfigurationStatus

type ClusterConfigurationStatus struct {
	// ClusterProfileResources is the list of resources currently deployed in a Cluster due
	// to ClusterProfiles
	// +optional
	ClusterProfileResources []ClusterProfileResource `json:"clusterProfileResources,omitempty"`

	// ProfileResources is the list of resources currently deployed in a Cluster due
	// to Profiles
	// +optional
	ProfileResources []ProfileResource `json:"profileResources,omitempty"`
}

ClusterConfigurationStatus defines the observed state of ClusterConfiguration

func (*ClusterConfigurationStatus) DeepCopy

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

func (*ClusterConfigurationStatus) DeepCopyInto

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

type ClusterProfile

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

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

ClusterProfile is the Schema for the clusterprofiles API

func (*ClusterProfile) DeepCopy

func (in *ClusterProfile) DeepCopy() *ClusterProfile

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

func (*ClusterProfile) DeepCopyInto

func (in *ClusterProfile) DeepCopyInto(out *ClusterProfile)

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

func (*ClusterProfile) DeepCopyObject

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

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

func (*ClusterProfile) Hub

func (*ClusterProfile) Hub()

Hub marks this type as a conversion hub.

type ClusterProfileList

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

ClusterProfileList contains a list of ClusterProfile

func (*ClusterProfileList) DeepCopy

func (in *ClusterProfileList) DeepCopy() *ClusterProfileList

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

func (*ClusterProfileList) DeepCopyInto

func (in *ClusterProfileList) DeepCopyInto(out *ClusterProfileList)

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

func (*ClusterProfileList) DeepCopyObject

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

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

type ClusterProfileResource

type ClusterProfileResource struct {
	// ProfileName is the name of the ClusterProfile matching the Cluster.
	ClusterProfileName string `json:"clusterProfileName"`

	// Features contains the list of policies deployed in the Cluster because
	// of a given feature
	// +optional
	Features []Feature `json:"Features,omitempty"`
}

ClusterProfileResource keeps info on all of the resources deployed in this Cluster due to a given ClusterProfile

func (*ClusterProfileResource) DeepCopy

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

func (*ClusterProfileResource) DeepCopyInto

func (in *ClusterProfileResource) DeepCopyInto(out *ClusterProfileResource)

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

type ClusterReport

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

	Spec   ClusterReportSpec   `json:"spec,omitempty"`
	Status ClusterReportStatus `json:"status,omitempty"`
}

ClusterReport is the Schema for the clusterreports API

func (*ClusterReport) DeepCopy

func (in *ClusterReport) DeepCopy() *ClusterReport

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

func (*ClusterReport) DeepCopyInto

func (in *ClusterReport) DeepCopyInto(out *ClusterReport)

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

func (*ClusterReport) DeepCopyObject

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

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

type ClusterReportList

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

ClusterReportList contains a list of ClusterReport

func (*ClusterReportList) DeepCopy

func (in *ClusterReportList) DeepCopy() *ClusterReportList

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

func (*ClusterReportList) DeepCopyInto

func (in *ClusterReportList) DeepCopyInto(out *ClusterReportList)

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

func (*ClusterReportList) DeepCopyObject

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

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

type ClusterReportSpec

type ClusterReportSpec struct {
	// ClusterNamespace is the namespace of the CAPI Cluster this
	// ClusterReport is for.
	ClusterNamespace string `json:"clusterNamespace"`

	// ClusterName is the name of the CAPI Cluster this ClusterReport
	// is for.
	ClusterName string `json:"clusterName"`
}

ClusterReportSpec defines the desired state of ClusterReport

func (*ClusterReportSpec) DeepCopy

func (in *ClusterReportSpec) DeepCopy() *ClusterReportSpec

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

func (*ClusterReportSpec) DeepCopyInto

func (in *ClusterReportSpec) DeepCopyInto(out *ClusterReportSpec)

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

type ClusterReportStatus

type ClusterReportStatus struct {
	// ReleaseReports contains report on helm releases
	// +optional
	ReleaseReports []ReleaseReport `json:"releaseReports,omitempty"`

	// ResourceReports contains report on Kubernetes resources
	// deployed because of PolicyRefs
	// +optional
	ResourceReports []ResourceReport `json:"resourceReports,omitempty"`

	// KustomizeResourceReports contains report on Kubernetes resources
	// deployed because of KustomizationRefs
	// +optional
	KustomizeResourceReports []ResourceReport `json:"kustomizeResourceReports,omitempty"`
}

ClusterReportStatus defines the observed state of ClusterReport

func (*ClusterReportStatus) DeepCopy

func (in *ClusterReportStatus) DeepCopy() *ClusterReportStatus

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

func (*ClusterReportStatus) DeepCopyInto

func (in *ClusterReportStatus) DeepCopyInto(out *ClusterReportStatus)

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

type ClusterSummary

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

	Spec   ClusterSummarySpec   `json:"spec,omitempty"`
	Status ClusterSummaryStatus `json:"status,omitempty"`
}

ClusterSummary is the Schema for the clustersummaries API

func GetClusterSummary

func GetClusterSummary(ctx context.Context, c client.Client, namespace, name string,
) (*ClusterSummary, error)

func (*ClusterSummary) DeepCopy

func (in *ClusterSummary) DeepCopy() *ClusterSummary

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

func (*ClusterSummary) DeepCopyInto

func (in *ClusterSummary) DeepCopyInto(out *ClusterSummary)

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

func (*ClusterSummary) DeepCopyObject

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

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

func (*ClusterSummary) Hub

func (*ClusterSummary) Hub()

Hub marks this type as a conversion hub.

type ClusterSummaryList

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

ClusterSummaryList contains a list of ClusterSummary

func (*ClusterSummaryList) DeepCopy

func (in *ClusterSummaryList) DeepCopy() *ClusterSummaryList

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

func (*ClusterSummaryList) DeepCopyInto

func (in *ClusterSummaryList) DeepCopyInto(out *ClusterSummaryList)

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

func (*ClusterSummaryList) DeepCopyObject

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

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

type ClusterSummarySpec

type ClusterSummarySpec struct {
	// ClusterNamespace is the namespace of the workload Cluster this
	// ClusterSummary is for.
	ClusterNamespace string `json:"clusterNamespace"`

	// ClusterName is the name of the workload Cluster this ClusterSummary is for.
	ClusterName string `json:"clusterName"`

	// ClusterType is the type of Cluster
	ClusterType libsveltosv1beta1.ClusterType `json:"clusterType"`

	// ClusterProfileSpec represent the configuration that will be applied to
	// the workload cluster.
	ClusterProfileSpec Spec `json:"clusterProfileSpec,omitempty"`
}

ClusterSummarySpec defines the desired state of ClusterSummary

func (*ClusterSummarySpec) DeepCopy

func (in *ClusterSummarySpec) DeepCopy() *ClusterSummarySpec

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

func (*ClusterSummarySpec) DeepCopyInto

func (in *ClusterSummarySpec) DeepCopyInto(out *ClusterSummarySpec)

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

type ClusterSummaryStatus

type ClusterSummaryStatus struct {
	// Dependencies is a summary reporting the status of the dependencies
	// for the associated ClusterProfile
	Dependencies *string `json:"dependencies,omitempty"`

	// FeatureSummaries reports the status of each workload cluster feature
	// directly managed by ClusterProfile.
	// +listType=map
	// +listMapKey=featureID
	// +optional
	FeatureSummaries []FeatureSummary `json:"featureSummaries,omitempty"`

	// DeployedGVKs reports the list of GVKs deployed by ClusterSummary
	// in a managed cluster
	// +listType=map
	// +listMapKey=featureID
	// +optional
	DeployedGVKs []FeatureDeploymentInfo `json:"deployedGVKs,omitempty"`

	// HelmReleaseSummaries reports the status of each helm chart
	// directly managed by ClusterProfile.
	// +listType=atomic
	// +optional
	HelmReleaseSummaries []HelmChartSummary `json:"helmReleaseSummaries,omitempty"`
}

ClusterSummaryStatus defines the observed state of ClusterSummary

func (*ClusterSummaryStatus) DeepCopy

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

func (*ClusterSummaryStatus) DeepCopyInto

func (in *ClusterSummaryStatus) DeepCopyInto(out *ClusterSummaryStatus)

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

type Clusters

type Clusters struct {
	// Hash represents of a unique value for ClusterProfile Spec at
	// a fixed point in time
	// +optional
	Hash []byte `json:"hash,omitempty"`

	// Clusters reference all the clusters currently matching
	// ClusterProfile ClusterSelector and already updated/being updated
	// to ClusterProfile Spec
	Clusters []corev1.ObjectReference `json:"clusters,omitempty"`
}

func (*Clusters) DeepCopy

func (in *Clusters) DeepCopy() *Clusters

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

func (*Clusters) DeepCopyInto

func (in *Clusters) DeepCopyInto(out *Clusters)

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

type DeploymentType

type DeploymentType string

DeploymentType indicates whether resources need to be deployed into the management cluster (local) or the managed cluster (remote) +kubebuilder:validation:Enum:=Local;Remote

type DriftExclusion added in v0.36.0

type DriftExclusion struct {
	// Paths is a slice of JSON6902 paths to exclude from configuration drift evaluation.
	// +required
	Paths []string `json:"paths"`

	// Target points to the resources that the paths refers to.
	// +optional
	Target *libsveltosv1beta1.PatchSelector `json:"target,omitempty"`
}

func (*DriftExclusion) DeepCopy added in v0.36.0

func (in *DriftExclusion) DeepCopy() *DriftExclusion

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

func (*DriftExclusion) DeepCopyInto added in v0.36.0

func (in *DriftExclusion) DeepCopyInto(out *DriftExclusion)

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

type DryRunReconciliationError

type DryRunReconciliationError struct{}

func (*DryRunReconciliationError) DeepCopy

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

func (*DryRunReconciliationError) DeepCopyInto

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

func (*DryRunReconciliationError) Error

func (m *DryRunReconciliationError) Error() string

type Feature

type Feature struct {
	// FeatureID is an indentifier of the feature whose status is reported
	FeatureID FeatureID `json:"featureID"`

	// Resources is a list of resources deployed in the Cluster.
	// +optional
	Resources []Resource `json:"resources,omitempty"`

	// Charts is a list of helm charts deployed in the Cluster.
	// +optional
	Charts []Chart `json:"charts,omitempty"`
}

func (*Feature) DeepCopy

func (in *Feature) DeepCopy() *Feature

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

func (*Feature) DeepCopyInto

func (in *Feature) DeepCopyInto(out *Feature)

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

type FeatureDeploymentInfo

type FeatureDeploymentInfo struct {
	// FeatureID is an indentifier of the feature whose status is reported
	FeatureID FeatureID `json:"featureID"`

	// DeployedGroupVersionKind contains all GroupVersionKinds deployed in either
	// the workload cluster or the management cluster because of this feature.
	// Each element has format kind.version.group
	// +optional
	DeployedGroupVersionKind []string `json:"deployedGroupVersionKind,omitempty"`
}

func (*FeatureDeploymentInfo) DeepCopy

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

func (*FeatureDeploymentInfo) DeepCopyInto

func (in *FeatureDeploymentInfo) DeepCopyInto(out *FeatureDeploymentInfo)

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

type FeatureID

type FeatureID string

+kubebuilder:validation:Enum:=Resources;Helm;Kustomize

type FeatureStatus

type FeatureStatus string

+kubebuilder:validation:Enum:=Provisioning;Provisioned;Failed;FailedNonRetriable;Removing;Removed

type FeatureSummary

type FeatureSummary struct {
	// FeatureID is an indentifier of the feature whose status is reported
	FeatureID FeatureID `json:"featureID"`

	// Hash represents of a unique value for a feature at a fixed point in
	// time
	// +optional
	Hash []byte `json:"hash,omitempty"`

	// Status represents the state of the feature in the workload cluster
	// +optional
	Status FeatureStatus `json:"status,omitempty"`

	// FailureReason indicates the type of error that occurred.
	// +optional
	FailureReason *string `json:"failureReason,omitempty"`

	// FailureMessage provides more information about the error.
	// +optional
	FailureMessage *string `json:"failureMessage,omitempty"`

	// DeployedGroupVersionKind contains all GroupVersionKinds deployed in either
	// the workload cluster or the management cluster because of this feature.
	// Each element has format kind.version.group
	// Deprecated: Replaced by FeatureDeploymentInfo field instead
	// +optional
	DeployedGroupVersionKind []string `json:"deployedGroupVersionKind,omitempty"`

	// LastAppliedTime is the time feature was last reconciled
	// +optional
	LastAppliedTime *metav1.Time `json:"lastAppliedTime,omitempty"`
}

FeatureSummary contains a summary of the state of a workload cluster feature.

func (*FeatureSummary) DeepCopy

func (in *FeatureSummary) DeepCopy() *FeatureSummary

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

func (*FeatureSummary) DeepCopyInto

func (in *FeatureSummary) DeepCopyInto(out *FeatureSummary)

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

type HelmAction

type HelmAction string

HelmAction represents the type of action on a give resource or helm release

const (
	NoHelmAction           HelmAction = "No Action"
	UpdateHelmValuesAction HelmAction = "Update Values"
	InstallHelmAction      HelmAction = "Install"
	UpgradeHelmAction      HelmAction = "Upgrade"
	UninstallHelmAction    HelmAction = "Delete"
	ConflictHelmAction     HelmAction = "Conflict"
)

Define the HelmAction constants.

type HelmChart

type HelmChart struct {
	// RepositoryURL is the URL helm chart repository
	// +kubebuilder:validation:MinLength=1
	RepositoryURL string `json:"repositoryURL"`

	// RepositoryName is the name helm chart repository
	// +kubebuilder:validation:MinLength=1
	RepositoryName string `json:"repositoryName"`

	// ChartName is the chart name
	// +kubebuilder:validation:MinLength=1
	ChartName string `json:"chartName"`

	// ChartVersion is the chart version
	// +kubebuilder:validation:MinLength=1
	ChartVersion string `json:"chartVersion"`

	// ReleaseName is the chart release
	// +kubebuilder:validation:MinLength=1
	ReleaseName string `json:"releaseName"`

	// ReleaseNamespace is the namespace release will be installed
	// +kubebuilder:validation:MinLength=1
	ReleaseNamespace string `json:"releaseNamespace"`

	// Values field allows to define configuration for the Helm release.
	// These values can be static or leverage Go templates for dynamic customization.
	// When expressed as templates, the values are filled in using information from
	// resources within the management cluster before deployment (Cluster and TemplateResourceRefs)
	// +optional
	Values string `json:"values,omitempty"`

	// ValuesFrom can reference ConfigMap/Secret instances. Within the ConfigMap or Secret data,
	// it is possible to store configuration for the Helm release.
	// These values can be static or leverage Go templates for dynamic customization.
	// When expressed as templates, the values are filled in using information from
	// resources within the management cluster before deployment (Cluster and TemplateResourceRefs)
	// +optional
	ValuesFrom []ValueFrom `json:"valuesFrom,omitempty"`

	// HelmChartAction is the action that will be taken on the helm chart
	// +kubebuilder:default:=Install
	// +optional
	HelmChartAction HelmChartAction `json:"helmChartAction,omitempty"`

	// Options allows to set flags which are used during installation.
	// +optional
	Options *HelmOptions `json:"options,omitempty"`

	// RegistryCredentialsConfig is an optional configuration for credentials,
	// including information to connect to private registries.
	// +optional
	RegistryCredentialsConfig *RegistryCredentialsConfig `json:"registryCredentialsConfig,omitempty"`
}

func (*HelmChart) DeepCopy

func (in *HelmChart) DeepCopy() *HelmChart

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

func (*HelmChart) DeepCopyInto

func (in *HelmChart) DeepCopyInto(out *HelmChart)

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

type HelmChartAction

type HelmChartAction string

HelmChartAction specifies action on an helm chart +kubebuilder:validation:Enum:=Install;Uninstall

type HelmChartStatus

type HelmChartStatus string

HelChartStatus specifies whether ClusterSummary is successfully managing an helm chart or not +kubebuilder:validation:Enum:=Managing;Conflict

type HelmChartSummary

type HelmChartSummary struct {
	// ReleaseName is the chart release
	// +kubebuilder:validation:MinLength=1
	ReleaseName string `json:"releaseName"`

	// ReleaseNamespace is the namespace release will be installed
	// +kubebuilder:validation:MinLength=1
	ReleaseNamespace string `json:"releaseNamespace"`

	// Status indicates whether ClusterSummary can manage the helm
	// chart or there is a conflict
	Status HelmChartStatus `json:"status"`

	// ValuesHash represents of a unique value for the values section
	// +optional
	ValuesHash []byte `json:"valuesHash,omitempty"`

	// Status indicates whether ClusterSummary can manage the helm
	// chart or there is a conflict
	// +optional
	ConflictMessage string `json:"conflictMessage,omitempty"`
}

func (*HelmChartSummary) DeepCopy

func (in *HelmChartSummary) DeepCopy() *HelmChartSummary

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

func (*HelmChartSummary) DeepCopyInto

func (in *HelmChartSummary) DeepCopyInto(out *HelmChartSummary)

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

type HelmInstallOptions

type HelmInstallOptions struct {
	// Create the release namespace if not present. Defaults to true
	// +kubebuilder:default:=true
	// +optional
	CreateNamespace bool `json:"createNamespace,omitempty"`

	// Replaces if set indicates to replace an older release with this one
	// +kubebuilder:default:=true
	// +optional
	Replace bool `json:"replace,omitempty"`

	// prevent hooks from running during install. If set to true, overrides
	// DisableHooks in HelmOptions. Use this one when you want to selective
	// disable hooks on install
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	DisableHooks bool `json:"disableHooks,omitempty"`
}

func (*HelmInstallOptions) DeepCopy

func (in *HelmInstallOptions) DeepCopy() *HelmInstallOptions

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

func (*HelmInstallOptions) DeepCopyInto

func (in *HelmInstallOptions) DeepCopyInto(out *HelmInstallOptions)

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

type HelmOptions

type HelmOptions struct {
	// SkipCRDs controls whether CRDs should be installed during install/upgrade operation.
	// By default, CRDs are installed if not already present.
	// +kubebuilder:default:=false
	// +optional
	SkipCRDs bool `json:"skipCRDs,omitempty"`

	// SkipSchemaValidation determines if JSON schema validation is disabled.
	// +kubebuilder:default:=false
	// +optional
	SkipSchemaValidation bool `json:"skipSchemaValidation,omitempty"`

	// if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment, StatefulSet, or ReplicaSet
	// are in a ready state before marking the release as successful. It will wait for as long as --timeout
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	Wait bool `json:"wait,omitempty"`

	// if set and --wait enabled, will wait until all Jobs have been completed before marking the release as successful.
	// It will wait for as long as --timeout
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	WaitForJobs bool `json:"waitForJobs,omitempty"`

	// time to wait for any individual Kubernetes operation (like Jobs for hooks) (default 5m0s)
	// +optional
	Timeout *metav1.Duration `json:"timeout,omitempty"`

	// prevent hooks from running during install/upgrade/uninstall
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	DisableHooks bool `json:"disableHooks,omitempty"`

	// if set, the installation process will not validate rendered templates against the Kubernetes OpenAPI Schema
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	DisableOpenAPIValidation bool `json:"disableOpenAPIValidation,omitempty"`

	// if set, the installation process deletes the installation/upgrades on failure.
	// The --wait flag will be set automatically if --atomic is used
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	Atomic bool `json:"atomic,omitempty"`

	// update dependencies if they are missing before installing the chart
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	DependencyUpdate bool `json:"dependencyUpdate,omitempty"`

	// Labels that would be added to release metadata.
	// +optional
	Labels map[string]string `json:"labels,omitempty"`

	// EnableClientCache is a flag to enable Helm client cache. If it is not specified, it will be set to false.
	// +kubebuilder:default=false
	// +optional
	EnableClientCache bool `json:"enableClientCache,omitempty"`

	// Description is the description of an helm operation
	// +optional
	Description string `json:"description,omitempty"`

	// HelmInstallOptions are options specific to helm install
	// +optional
	InstallOptions HelmInstallOptions `json:"installOptions,omitempty"`

	// HelmUpgradeOptions are options specific to helm upgrade
	// +optional
	UpgradeOptions HelmUpgradeOptions `json:"upgradeOptions,omitempty"`

	// HelmUninstallOptions are options specific to helm uninstall
	// +optional
	UninstallOptions HelmUninstallOptions `json:"uninstallOptions,omitempty"`
}

func (*HelmOptions) DeepCopy

func (in *HelmOptions) DeepCopy() *HelmOptions

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

func (*HelmOptions) DeepCopyInto

func (in *HelmOptions) DeepCopyInto(out *HelmOptions)

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

type HelmUninstallOptions

type HelmUninstallOptions struct {
	// When uninstall a chart with this flag, Helm removes the resources associated with the chart,
	// but it keeps the release information. This allows to see details about the uninstalled release
	// using the helm history command.
	// +optional
	KeepHistory bool `json:"keepHistory,omitempty"`

	// DeletionPropagation
	// +kubebuilder:validation:Enum:=orphan;foreground;background
	// +optional
	DeletionPropagation string `json:"deletionPropagation,omitempty"`

	// prevent hooks from running during install. If set to true, overrides
	// DisableHooks in HelmOptions. Use this one when you want to selective
	// disable hooks on uninstall
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	DisableHooks bool `json:"disableHooks,omitempty"`
}

func (*HelmUninstallOptions) DeepCopy

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

func (*HelmUninstallOptions) DeepCopyInto

func (in *HelmUninstallOptions) DeepCopyInto(out *HelmUninstallOptions)

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

type HelmUpgradeOptions

type HelmUpgradeOptions struct {
	// Force will, if set to `true`, ignore certain warnings and perform the upgrade anyway.
	// This should be used with caution.
	// +kubebuilder:default:=false
	// +optional
	Force bool `json:"force,omitempty"`

	// ResetValues will reset the values to the chart's built-ins rather than merging with existing.
	// +kubebuilder:default:=false
	// +optional
	ResetValues bool `json:"resetValues,omitempty"`

	// ReuseValues copies values from the current release to a new release if the
	// new release does not have any values. If the request already has values,
	// or if there are no values in the current release, this does nothing.
	// This is skipped if the ResetValues flag is set, in which case the
	// request values are not altered.
	// +kubebuilder:default:=false
	// +optional
	ReuseValues bool `json:"reuseValues,omitempty"`

	// ResetThenReuseValues will reset the values to the chart's built-ins then merge with user's last supplied values.
	// +kubebuilder:default:=false
	// +optional
	ResetThenReuseValues bool `json:"resetThenReuseValues,omitempty"`

	// Recreate will (if true) recreate pods after a rollback.
	// +kubebuilder:default:=false
	// +optional
	Recreate bool `json:"recreate,omitempty"`

	// MaxHistory limits the maximum number of revisions saved per release
	// Default to 2
	// +kubebuilder:default=2
	// +optional
	MaxHistory int `json:"maxHistory,omitempty"`

	// CleanupOnFail will, if true, cause the upgrade to delete newly-created resources on a failed update.
	// +kubebuilder:default:=false
	// +optional
	CleanupOnFail bool `json:"cleanupOnFail,omitempty"`

	// SubNotes determines whether sub-notes are rendered in the chart.
	// +kubebuilder:default:=false
	// +optional
	SubNotes bool `json:"subNotes,omitempty"`

	// UpgradeCRDs upgrade CRDs from the Helm Chart's crds directory
	// By default, CRDs are not applied during Helm upgrade action by Helm
	// https://helm.sh/docs/chart_best_practices/custom_resource_definitions/
	// +kubebuilder:default:=false
	// +optional
	UpgradeCRDs bool `json:"upgradeCRDs,omitempty"`

	// prevent hooks from running during install. If set to true, overrides
	// DisableHooks in HelmOptions. Use this one when you want to selective
	// disable hooks on upgrade
	// Default to false
	// +kubebuilder:default:=false
	// +optional
	DisableHooks bool `json:"disableHooks,omitempty"`
}

func (*HelmUpgradeOptions) DeepCopy

func (in *HelmUpgradeOptions) DeepCopy() *HelmUpgradeOptions

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

func (*HelmUpgradeOptions) DeepCopyInto

func (in *HelmUpgradeOptions) DeepCopyInto(out *HelmUpgradeOptions)

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

type KustomizationRef

type KustomizationRef struct {
	// Namespace of the referenced resource.
	// For ClusterProfile namespace can be left empty. In such a case, namespace will
	// be implicit set to cluster's namespace.
	// For Profile namespace must be left empty. The Profile namespace will be used.
	Namespace string `json:"namespace"`

	// Name of the referenced resource.
	// Name can be expressed as a template and instantiate using
	// - cluster namespace: .Cluster.metadata.namespace
	// - cluster name: .Cluster.metadata.name
	// - cluster type: .Cluster.kind
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Kind of the resource. Supported kinds are:
	// - flux GitRepository;OCIRepository;Bucket
	// - ConfigMap/Secret
	// +kubebuilder:validation:Enum=GitRepository;OCIRepository;Bucket;ConfigMap;Secret
	Kind string `json:"kind"`

	// Path to the directory containing the kustomization.yaml file, or the
	// set of plain YAMLs a kustomization.yaml should be generated for.
	// Defaults to 'None', which translates to the root path of the SourceRef.
	// These values can be static or leverage Go templates for dynamic customization.
	// When expressed as templates, the values are filled in using information from
	// resources within the management cluster before deployment (Cluster)
	// +optional
	Path string `json:"path,omitempty"`

	// TargetNamespace sets or overrides the namespace in the
	// kustomization.yaml file.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Optional
	// +optional
	TargetNamespace string `json:"targetNamespace,omitempty"`

	// DeploymentType indicates whether resources need to be deployed
	// into the management cluster (local) or the managed cluster (remote)
	// +kubebuilder:default:=Remote
	// +optional
	DeploymentType DeploymentType `json:"deploymentType,omitempty"`

	// Values is a map[string]string type that allows to define a set of key-value pairs.
	// These key-value pairs can optionally leverage Go templates for further processing.
	// With Sveltos, you can define key-value pairs where the values can be Go templates.
	// These templates have access to management cluster information during deployment. This allows
	// to do more than just replace placeholders. Variables can be used to dynamically
	// construct values based on other resources or variables within the Kustomize output.
	// For example, imagine you have a Region key with a template value like:
	// '{{ index .Cluster.metadata.labels "region" }}'.
	// This template retrieves the region label from the cluster instance metadata.
	// Finally, Sveltos uses these processed values to fill placeholders in the Kustomize output.
	// The output itself can also contain templates, like:
	// region: '{{ default "west" .Region }}'.
	// This way, the final output from Kustomize will have the region set dynamically based on
	// the actual region retrieved earlier.
	// +optional
	Values map[string]string `json:"values,omitempty"`

	// ValuesFrom can reference ConfigMap/Secret instances. Within the ConfigMap or Secret data,
	// it is possible to define key-value pairs. These key-value pairs can optionally leverage
	// Go templates for further processing.
	// With Sveltos, you can define key-value pairs where the values can be Go templates.
	// These templates have access to management cluster information during deployment. This allows
	// to do more than just replace placeholders. Variables can be used to dynamically
	// construct values based on other resources or variables within the Kustomize output.
	// For example, imagine you have a Region key with a template value like:
	// '{{ index .Cluster.metadata.labels "region" }}'.
	// This template retrieves the region label from the cluster instance metadata.
	// Finally, Sveltos uses these processed values to fill placeholders in the Kustomize output.
	// The output itself can also contain templates, like:
	// region: '{{ default "west" .Region }}'.
	// This way, the final output from Kustomize will have the region set dynamically based on
	// the actual region retrieved earlier.
	// +optional
	ValuesFrom []ValueFrom `json:"valuesFrom,omitempty"`
}

func (*KustomizationRef) DeepCopy

func (in *KustomizationRef) DeepCopy() *KustomizationRef

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

func (*KustomizationRef) DeepCopyInto

func (in *KustomizationRef) DeepCopyInto(out *KustomizationRef)

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

type PolicyRef

type PolicyRef struct {
	// Namespace of the referenced resource.
	// For ClusterProfile namespace can be left empty. In such a case, namespace will
	// be implicit set to cluster's namespace.
	// For Profile namespace must be left empty. Profile namespace will be used.
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// Name of the referenced resource.
	// Name can be expressed as a template and instantiate using
	// - cluster namespace: .Cluster.metadata.namespace
	// - cluster name: .Cluster.metadata.name
	// - cluster type: .Cluster.kind
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Kind of the resource. Supported kinds are:
	// - ConfigMap/Secret
	// - flux GitRepository;OCIRepository;Bucket
	// +kubebuilder:validation:Enum=GitRepository;OCIRepository;Bucket;ConfigMap;Secret
	Kind string `json:"kind"`

	// Path to the directory containing the YAML files.
	// Defaults to 'None', which translates to the root path of the SourceRef.
	// Used only for GitRepository;OCIRepository;Bucket
	// +optional
	Path string `json:"path,omitempty"`

	// DeploymentType indicates whether resources need to be deployed
	// into the management cluster (local) or the managed cluster (remote)
	// +kubebuilder:default:=Remote
	// +optional
	DeploymentType DeploymentType `json:"deploymentType,omitempty"`
}

func (*PolicyRef) DeepCopy

func (in *PolicyRef) DeepCopy() *PolicyRef

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

func (*PolicyRef) DeepCopyInto

func (in *PolicyRef) DeepCopyInto(out *PolicyRef)

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

type Profile

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

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

Profile is the Schema for the profiles API

func (*Profile) DeepCopy

func (in *Profile) DeepCopy() *Profile

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

func (*Profile) DeepCopyInto

func (in *Profile) DeepCopyInto(out *Profile)

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

func (*Profile) DeepCopyObject

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

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

func (*Profile) Hub

func (*Profile) Hub()

Hub marks this type as a conversion hub.

type ProfileList

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

ProfileList contains a list of Profile

func (*ProfileList) DeepCopy

func (in *ProfileList) DeepCopy() *ProfileList

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

func (*ProfileList) DeepCopyInto

func (in *ProfileList) DeepCopyInto(out *ProfileList)

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

func (*ProfileList) DeepCopyObject

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

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

type ProfileResource

type ProfileResource struct {
	// ProfileName is the name of the Profile matching the Cluster.
	ProfileName string `json:"profileName"`

	// Features contains the list of policies deployed in the Cluster because
	// of a given feature
	// +optional
	Features []Feature `json:"Features,omitempty"`
}

ProfileResource keeps info on all of the resources deployed in this Cluster due to a given Profile

func (*ProfileResource) DeepCopy

func (in *ProfileResource) DeepCopy() *ProfileResource

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

func (*ProfileResource) DeepCopyInto

func (in *ProfileResource) DeepCopyInto(out *ProfileResource)

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

type RegistryCredentialsConfig added in v0.38.2

type RegistryCredentialsConfig struct {
	// CredentialsSecretRef references a secret containing credentials
	// For ClusterProfile namespace can be left empty. In such a case, namespace will
	// be implicit set to cluster's namespace.
	// +optional
	CredentialsSecretRef *corev1.SecretReference `json:"credentials,omitempty"`

	// Key specifies the key within the CredentialsSecretRef containing the data
	// If not specified, it defaults to the only key in the secret if there's just one.
	// +optional
	Key string `json:"key,omitempty"`

	// CASecretRef references a secret containing the TLS CA certificate
	// For ClusterProfile namespace can be left empty. In such a case, namespace will
	// be implicit set to cluster's namespace.
	// key: ca.crt
	// +optional
	CASecretRef *corev1.SecretReference `json:"ca,omitempty"`

	// InsecureSkipTLSVerify controls server certificate verification.
	// +optional
	InsecureSkipTLSVerify bool `json:"insecureSkipTLSVerify,omitempty"`

	// PlainHTTP indicates to use insecure HTTP connections for the chart download
	// +optional
	PlainHTTP bool `json:"plainHTTP,omitempty"`
}

func (*RegistryCredentialsConfig) DeepCopy added in v0.38.2

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

func (*RegistryCredentialsConfig) DeepCopyInto added in v0.38.2

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

type ReleaseReport

type ReleaseReport struct {
	// ReleaseName of the release deployed in the CAPI Cluster.
	// +kubebuilder:validation:MinLength=1
	ReleaseName string `json:"chartName"`

	// Namespace where release is deployed in the CAPI Cluster.
	// +kubebuilder:validation:MinLength=1
	ReleaseNamespace string `json:"releaseNamespace"`

	// ChartVersion is the version of the helm chart deployed
	// in the CAPI Cluster.
	ChartVersion string `json:"chartVersion"`

	// Action represent the type of operation on the Helm Chart
	// +kubebuilder:validation:Enum=No Action;Install;Upgrade;Delete;Conflict;Update Values
	// +optional
	Action string `json:"action,omitempty"`

	// Message is for any message that needs to added to better
	// explain the action.
	// +optional
	Message string `json:"message,omitempty"`
}

func (*ReleaseReport) DeepCopy

func (in *ReleaseReport) DeepCopy() *ReleaseReport

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

func (*ReleaseReport) DeepCopyInto

func (in *ReleaseReport) DeepCopyInto(out *ReleaseReport)

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

type Resource

type Resource struct {
	// Name of the resource deployed in the Cluster.
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Namespace of the resource deployed in the Cluster.
	// Empty for resources scoped at cluster level.
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// Group of the resource deployed in the Cluster.
	Group string `json:"group"`

	// Kind of the resource deployed in the Cluster.
	// +kubebuilder:validation:MinLength=1
	Kind string `json:"kind"`

	// Version of the resource deployed in the Cluster.
	// +kubebuilder:validation:MinLength=1
	Version string `json:"version"`

	// LastAppliedTime identifies when this resource was last applied to the cluster.
	// +optional
	LastAppliedTime *metav1.Time `json:"lastAppliedTime,omitempty"`

	// Owner is the list of ConfigMap/Secret containing this resource.
	Owner corev1.ObjectReference `json:"owner"`

	// IgnoreForConfigurationDrift indicates to not track resource
	// for configuration drift detection.
	// This field has a meaning only when mode is ContinuousWithDriftDetection
	// +kubebuilder:default:=false
	// +optional
	IgnoreForConfigurationDrift bool `json:"ignoreForConfigurationDrift,omitempty"`
}

func (*Resource) DeepCopy

func (in *Resource) DeepCopy() *Resource

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

func (*Resource) DeepCopyInto

func (in *Resource) DeepCopyInto(out *Resource)

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

type ResourceAction

type ResourceAction string
const (
	NoResourceAction       ResourceAction = "No Action"
	CreateResourceAction   ResourceAction = "Create"
	UpdateResourceAction   ResourceAction = "Update"
	DeleteResourceAction   ResourceAction = "Delete"
	ConflictResourceAction ResourceAction = "Conflict"
)

Define the Action constants.

type ResourceReport

type ResourceReport struct {
	// Resource contains information about Kubernetes Resource
	Resource Resource `json:"resource"`

	// Action represent the type of operation on the Kubernetes resource.
	// +kubebuilder:validation:Enum=No Action;Create;Update;Delete;Conflict
	Action string `json:"action,omitempty"`

	// Message is for any message that needs to added to better
	// explain the action.
	// +optional
	Message string `json:"message,omitempty"`
}

func (*ResourceReport) DeepCopy

func (in *ResourceReport) DeepCopy() *ResourceReport

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

func (*ResourceReport) DeepCopyInto

func (in *ResourceReport) DeepCopyInto(out *ResourceReport)

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

type Spec

type Spec struct {
	// ClusterSelector identifies clusters to associate to.
	// +optional
	ClusterSelector libsveltosv1beta1.Selector `json:"clusterSelector,omitempty"`

	// ClusterRefs identifies clusters to associate to.
	// +optional
	ClusterRefs []corev1.ObjectReference `json:"clusterRefs,omitempty"`

	// SetRefs identifies referenced (cluster)Sets.
	// - ClusterProfile can reference ClusterSet;
	// - Profile can reference Set;
	// +optional
	SetRefs []string `json:"setRefs,omitempty"`

	// SyncMode specifies how features are synced in a matching workload cluster.
	// - OneTime means, first time a workload cluster matches the ClusterProfile,
	// features will be deployed in such cluster. Any subsequent feature configuration
	// change won't be applied into the matching workload clusters;
	// - Continuous means first time a workload cluster matches the ClusterProfile,
	// features will be deployed in such a cluster. Any subsequent feature configuration
	// change will be applied into the matching workload clusters.
	// - DryRun means no change will be propagated to any matching cluster. A report
	// instead will be generated summarizing what would happen in any matching cluster
	// because of the changes made to ClusterProfile while in DryRun mode.
	// +kubebuilder:default:=Continuous
	// +optional
	SyncMode SyncMode `json:"syncMode,omitempty"`

	// Tier controls the order of deployment for ClusterProfile or Profile resources targeting
	// the same cluster resources.
	// Imagine two configurations (ClusterProfiles or Profiles) trying to deploy the same resource (a Kubernetes
	// resource or an helm chart). By default, the first one to reach the cluster "wins" and deploys it.
	// Tier allows you to override this. When conflicts arise, the ClusterProfile or Profile with the **lowest**
	// Tier value takes priority and deploys the resource.
	// Higher Tier values represent lower priority. The default Tier value is 100.
	// Using Tiers provides finer control over resource deployment within your cluster, particularly useful
	// when multiple configurations manage the same resources.
	// +kubebuilder:default:=100
	// +kubebuilder:validation:Minimum=1
	// +optional
	Tier int32 `json:"tier,omitempty"`

	// By default (when ContinueOnConflict is unset or set to false), Sveltos stops deployment after
	// encountering the first conflict (e.g., another ClusterProfile already deployed the resource).
	// If set to true, Sveltos will attempt to deploy remaining resources in the ClusterProfile even
	// if conflicts are detected for previous resources.
	// +kubebuilder:default:=false
	// +optional
	ContinueOnConflict bool `json:"continueOnConflict,omitempty"`

	// The maximum number of clusters that can be updated concurrently.
	// Value can be an absolute number (ex: 5) or a percentage of desired cluster (ex: 10%).
	// Defaults to 100%.
	// Example: when this is set to 30%, when list of add-ons/applications in ClusterProfile
	// changes, only 30% of matching clusters will be updated in parallel. Only when updates
	// in those cluster succeed, other matching clusters are updated.
	// +kubebuilder:validation:XIntOrString
	// +kubebuilder:validation:Pattern="^((100|[0-9]{1,2})%|[0-9]+)$"
	// +optional
	MaxUpdate *intstr.IntOrString `json:"maxUpdate,omitempty"`

	// StopMatchingBehavior indicates what behavior should be when a Cluster stop matching
	// the ClusterProfile. By default all deployed Helm charts and Kubernetes resources will
	// be withdrawn from Cluster. Setting StopMatchingBehavior to LeavePolicies will instead
	// leave ClusterProfile deployed policies in the Cluster.
	// +kubebuilder:default:=WithdrawPolicies
	// +optional
	StopMatchingBehavior StopMatchingBehavior `json:"stopMatchingBehavior,omitempty"`

	// Reloader indicates whether Deployment/StatefulSet/DaemonSet instances deployed
	// by Sveltos and part of this ClusterProfile need to be restarted via rolling upgrade
	// when a ConfigMap/Secret instance mounted as volume is modified.
	// When set to true, when any mounted ConfigMap/Secret is modified, Sveltos automatically
	// starts a rolling upgrade for Deployment/StatefulSet/DaemonSet instances mounting it.
	// +kubebuilder:default:=false
	// +optional
	Reloader bool `json:"reloader,omitempty"`

	// TemplateResourceRefs is a list of resource to collect from the management cluster.
	// Those resources' values will be used to instantiate templates
	// +patchMergeKey=identifier
	// +patchStrategy=merge,retainKeys
	// +listType=map
	// +listMapKey=identifier
	// +optional
	TemplateResourceRefs []TemplateResourceRef `json:"templateResourceRefs,omitempty" patchStrategy:"merge" patchMergeKey:"identifier"`

	// DependsOn specifies a list of other ClusterProfiles that this instance depends on.
	// In any managed cluster that matches this ClusterProfile, the add-ons and applications
	// defined in this instance will not be deployed until all add-ons and applications in the
	// ClusterProfiles listed as dependencies are deployed.
	DependsOn []string `json:"dependsOn,omitempty"`

	// PolicyRefs references all the ConfigMaps/Secrets/Flux Sources containing kubernetes resources
	// that need to be deployed in the matching managed clusters.
	// The values contained in those resources can be static or leverage Go templates for dynamic customization.
	// When expressed as templates, the values are filled in using information from
	// resources within the management cluster before deployment (Cluster and TemplateResourceRefs)
	// +optional
	PolicyRefs []PolicyRef `json:"policyRefs,omitempty"`

	// Helm charts is a list of helm charts that need to be deployed
	HelmCharts []HelmChart `json:"helmCharts,omitempty"`

	// Kustomization refs is a list of kustomization paths. Kustomization will
	// be run on those paths and the outcome will be deployed.
	KustomizationRefs []KustomizationRef `json:"kustomizationRefs,omitempty"`

	// ValidateHealths is a slice of Lua functions to run against
	// the managed cluster to validate the state of those add-ons/applications
	// is healthy
	ValidateHealths []ValidateHealth `json:"validateHealths,omitempty"`

	// Define additional Kustomize inline Patches applied for all resources on this profile
	// Within the Patch Spec you can use templating
	// +optional
	Patches []libsveltosv1beta1.Patch `json:"patches,omitempty"`

	// DriftExclusions is a list of configuration drift exclusions to be applied when syncMode is
	// set to ContinuousWithDriftDetection. Each exclusion specifies JSON6902 paths to ignore
	// when evaluating drift, optionally targeting specific resources and features.
	// +optional
	DriftExclusions []DriftExclusion `json:"driftExclusions,omitempty"`

	// ExtraLabels: These labels will be added by Sveltos to all Kubernetes resources deployed in
	// a managed cluster based on this ClusterProfile/Profile instance.
	// **Important:** If a resource deployed by Sveltos already has a label with a key present in
	// `ExtraLabels`, the value from `ExtraLabels` will override the existing value.
	// (Deprecated use Patches instead)
	// +optional
	ExtraLabels map[string]string `json:"extraLabels,omitempty"`

	// ExtraAnnotations: These annotations will be added by Sveltos to all Kubernetes resources
	// deployed in a managed cluster based on this ClusterProfile/Profile instance.
	// **Important:** If a resource deployed by Sveltos already has a annotation with a key present in
	// `ExtraAnnotations`, the value from `ExtraAnnotations` will override the existing value.
	// (Deprecated use Patches instead)
	// +optional
	ExtraAnnotations map[string]string `json:"extraAnnotations,omitempty"`
}

func (*Spec) DeepCopy

func (in *Spec) DeepCopy() *Spec

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

func (*Spec) DeepCopyInto

func (in *Spec) DeepCopyInto(out *Spec)

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

type Status

type Status struct {
	// MatchingClusterRefs reference all the clusters currently matching
	// ClusterProfile ClusterSelector
	// +optional
	MatchingClusterRefs []corev1.ObjectReference `json:"matchingClusters,omitempty"`

	// UpdatingClusters reference all the cluster currently matching
	// ClusterProfile ClusterSelector and being updated
	// +optional
	UpdatingClusters Clusters `json:"updatingClusters,omitempty"`

	// UpdatedClusters contains information all the cluster currently matching
	// ClusterProfile ClusterSelector and already updated to latest ClusterProfile
	// Spec
	// +optional
	UpdatedClusters Clusters `json:"updatedClusters,omitempty"`
}

Status defines the observed state of ClusterProfile/Profile

func (*Status) DeepCopy

func (in *Status) DeepCopy() *Status

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

func (*Status) DeepCopyInto

func (in *Status) DeepCopyInto(out *Status)

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

type StopMatchingBehavior

type StopMatchingBehavior string

StopMatchingBehavior indicates what will happen when Cluster stops matching a ClusterProfile. By default, withdrawpolicies, deployed Helm charts and Kubernetes resources will be removed from Cluster. LeavePolicy instead leaves Helm charts and Kubernetes policies in the Cluster. +kubebuilder:validation:Enum:=WithdrawPolicies;LeavePolicies

const (
	WithdrawPolicies StopMatchingBehavior = "WithdrawPolicies"
	LeavePolicies    StopMatchingBehavior = "LeavePolicies"
)

Define the StopMatchingBehavior constants.

type SyncMode

type SyncMode string

SyncMode specifies how features are synced in a workload cluster. +kubebuilder:validation:Enum:=OneTime;Continuous;ContinuousWithDriftDetection;DryRun

type TemplateResourceRef

type TemplateResourceRef struct {
	// Resource references a Kubernetes instance in the management
	// cluster to fetch and use during template instantiation.
	// For ClusterProfile namespace can be left empty. In such a case, namespace will
	// be implicit set to cluster's namespace.
	// Name and namespace can be expressed as a template and instantiate using
	// - cluster namespace: .Cluster.metadata.namespace
	// - cluster name: .Cluster.metadata.name
	// - cluster type: .Cluster.kind
	Resource corev1.ObjectReference `json:"resource"`

	// Identifier is how the resource will be referred to in the
	// template
	Identifier string `json:"identifier"`
}

func (*TemplateResourceRef) DeepCopy

func (in *TemplateResourceRef) DeepCopy() *TemplateResourceRef

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

func (*TemplateResourceRef) DeepCopyInto

func (in *TemplateResourceRef) DeepCopyInto(out *TemplateResourceRef)

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

type ValidateHealth

type ValidateHealth struct {
	// Name is the name of this check
	Name string `json:"name"`

	// FeatureID is an indentifier of the feature (Helm/Kustomize/Resources)
	// This field indicates when to run this check.
	// For instance:
	// - if set to Helm this check will be run after all helm
	// charts specified in the ClusterProfile are deployed.
	// - if set to Resources this check will be run after the content
	// of all the ConfigMaps/Secrets referenced by ClusterProfile in the
	// PolicyRef sections is deployed
	FeatureID FeatureID `json:"featureID"`

	// Group of the resource to fetch in the managed Cluster.
	Group string `json:"group"`

	// Version of the resource to fetch in the managed Cluster.
	Version string `json:"version"`

	// Kind of the resource to fetch in the managed Cluster.
	// +kubebuilder:validation:MinLength=1
	Kind string `json:"kind"`

	// LabelFilters allows to filter resources based on current labels.
	// +optional
	LabelFilters []libsveltosv1beta1.LabelFilter `json:"labelFilters,omitempty"`

	// Namespace of the resource to fetch in the managed Cluster.
	// Empty for resources scoped at cluster level.
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// Script is a text containing a lua script.
	// Must return struct with field "health"
	// representing whether object is a match (true or false)
	// +optional
	Script string `json:"script,omitempty"`
}

func (*ValidateHealth) DeepCopy

func (in *ValidateHealth) DeepCopy() *ValidateHealth

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

func (*ValidateHealth) DeepCopyInto

func (in *ValidateHealth) DeepCopyInto(out *ValidateHealth)

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

type ValueFrom

type ValueFrom struct {
	// Namespace of the referenced resource.
	// For ClusterProfile namespace can be left empty. In such a case, namespace will
	// be implicit set to cluster's namespace.
	// For Profile namespace must be left empty. The Profile namespace will be used.
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// Name of the referenced resource.
	// Name can be expressed as a template and instantiate using
	// - cluster namespace: .Cluster.metadata.namespace
	// - cluster name: .Cluster.metadata.name
	// - cluster type: .Cluster.kind
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Kind of the resource. Supported kinds are:
	// - ConfigMap/Secret
	// +kubebuilder:validation:Enum=ConfigMap;Secret
	Kind string `json:"kind"`
}

func (*ValueFrom) DeepCopy

func (in *ValueFrom) DeepCopy() *ValueFrom

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

func (*ValueFrom) DeepCopyInto

func (in *ValueFrom) DeepCopyInto(out *ValueFrom)

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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