Documentation
¶
Overview ¶
Package v1beta1 contains API Schema definitions for the config v1beta1 API group +kubebuilder:object:generate=true +groupName=config.projectsveltos.io
Index ¶
- Constants
- Variables
- func GetClusterConfigurationSectionIndex(clusterConfiguration *ClusterConfiguration, profileKind, profileName string) (int, error)
- func GetProfileOwnerAndTier(ctx context.Context, c client.Client, clusterSummary *ClusterSummary) (client.Object, int32, error)
- func GetProfileOwnerReference(clusterSummary *ClusterSummary) (*metav1.OwnerReference, error)
- func GetProfileRef(clusterSummary *ClusterSummary) (*corev1.ObjectReference, error)
- type Chart
- type ClusterConfiguration
- type ClusterConfigurationList
- type ClusterConfigurationStatus
- type ClusterProfile
- type ClusterProfileList
- type ClusterProfileResource
- type ClusterReport
- type ClusterReportList
- type ClusterReportSpec
- type ClusterReportStatus
- type ClusterSummary
- type ClusterSummaryList
- type ClusterSummarySpec
- type ClusterSummaryStatus
- type Clusters
- type DeploymentType
- type DryRunReconciliationError
- type Feature
- type FeatureSummary
- type HandOverError
- type HelmAction
- type HelmChart
- type HelmChartAction
- type HelmChartStatus
- type HelmChartSummary
- type HelmInstallOptions
- type HelmOptions
- type HelmUninstallOptions
- type HelmUpgradeOptions
- type KustomizationRef
- type NonRetriableError
- type PolicyRef
- type Profile
- type ProfileList
- type ProfileResource
- type RegistryCredentialsConfig
- type ReleaseReport
- type Spec
- type Status
- type StopMatchingBehavior
- type SyncMode
- type TemplateResourceRef
- type ValueFrom
Constants ¶
const ( // ClusterProfileFinalizer allows ClusterProfileReconciler to clean up resources associated with // ClusterProfile before removing it from the apiserver. ClusterProfileFinalizer = "clusterprofilefinalizer.projectsveltos.io" ClusterProfileKind = "ClusterProfile" )
const ( // ClusterSummaryFinalizer allows ClusterSummaryReconciler to clean up resources associated with // ClusterSummary before removing it from the apiserver. ClusterSummaryFinalizer = "clustersummaryfinalizer.projectsveltos.io" ClusterSummaryKind = "ClusterSummary" )
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") )
const ( // ProfileFinalizer allows ProfileReconciler to clean up resources associated with // Profile before removing it from the apiserver. ProfileFinalizer = "profilefinalizer.projectsveltos.io" ProfileKind = "Profile" )
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" )
const ( // SyncModeOneTime indicates feature sync should happen only once SyncModeOneTime = SyncMode("OneTime") // SyncModeContinuous indicates feature sync should continuously happen SyncModeContinuous = SyncMode("Continuous") // SyncModeContinuousWithDriftDetection indicates that feature synchronization // should occur continuously. If configuration drift is detected in the managed // cluster, it will be overridden. SyncModeContinuousWithDriftDetection = SyncMode("ContinuousWithDriftDetection") // SyncModeDryRun indicates feature sync should continuously happen // no feature will be updated in the CAPI Cluster though. SyncModeDryRun = SyncMode("DryRun") )
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") )
const ( // HelmChartActionInstall will cause Helm chart to be installed HelmChartActionInstall = HelmChartAction("Install") // HelmChartActionUninstall will cause Helm chart to be removed HelmChartActionUninstall = HelmChartAction("Uninstall") )
const (
ClusterConfigurationKind = "ClusterConfiguration"
)
Variables ¶
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
func GetProfileRef ¶ added in v1.0.0
func GetProfileRef(clusterSummary *ClusterSummary) (*corev1.ObjectReference, 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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Chart.
func (*Chart) DeepCopyInto ¶
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 ¶
func (in *ClusterConfiguration) DeepCopy() *ClusterConfiguration
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 ¶
func (in *ClusterConfigurationList) DeepCopy() *ClusterConfigurationList
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 ¶
func (in *ClusterConfigurationStatus) DeepCopy() *ClusterConfigurationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterConfigurationStatus.
func (*ClusterConfigurationStatus) DeepCopyInto ¶
func (in *ClusterConfigurationStatus) DeepCopyInto(out *ClusterConfigurationStatus)
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.
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 ¶
func (in *ClusterProfileResource) DeepCopy() *ClusterProfileResource
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"`
// HelmResourceReports contains report on helm resources (when in pull mode, helm template resources are
// deployed directly)
// +optional
HelmResourceReports []libsveltosv1beta1.ResourceReport `json:"helmResourceReports,omitempty"`
// ResourceReports contains report on Kubernetes resources
// deployed because of PolicyRefs
// +optional
ResourceReports []libsveltosv1beta1.ResourceReport `json:"resourceReports,omitempty"`
// KustomizeResourceReports contains report on Kubernetes resources
// deployed because of KustomizationRefs
// +optional
KustomizeResourceReports []libsveltosv1beta1.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 (*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.
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 []libsveltosv1beta1.FeatureDeploymentInfo `json:"deployedGVKs,omitempty"`
// HelmReleaseSummaries reports the status of each helm chart
// directly managed by ClusterProfile.
// +listType=atomic
// +optional
HelmReleaseSummaries []HelmChartSummary `json:"helmReleaseSummaries,omitempty"`
// NextReconcileTime is the earliest time when this resource should be reconciled again.
// Controller skips reconciliation if current time is before this timestamp.
// If not set, reconciliations will happen as usual.
// +optional
NextReconcileTime *metav1.Time `json:"nextReconcileTime,omitempty"`
// FailureMessage reports any error encountered during the reconciliation of the ClusterSummary
// instance itself, *excluding* errors related to the deployment of individual features.
// +optional
FailureMessage *string `json:"failureMessage,omitempty"`
}
ClusterSummaryStatus defines the observed state of ClusterSummary
func (*ClusterSummaryStatus) DeepCopy ¶
func (in *ClusterSummaryStatus) DeepCopy() *ClusterSummaryStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Clusters.
func (*Clusters) DeepCopyInto ¶
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 DryRunReconciliationError ¶
type DryRunReconciliationError struct{}
func (*DryRunReconciliationError) DeepCopy ¶
func (in *DryRunReconciliationError) DeepCopy() *DryRunReconciliationError
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DryRunReconciliationError.
func (*DryRunReconciliationError) DeepCopyInto ¶
func (in *DryRunReconciliationError) DeepCopyInto(out *DryRunReconciliationError)
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 libsveltosv1beta1.FeatureID `json:"featureID"`
// Resources is a list of resources deployed in the Cluster.
// +optional
Resources []libsveltosv1beta1.Resource `json:"resources,omitempty"`
// Charts is a list of helm charts deployed in the Cluster.
// +optional
Charts []Chart `json:"charts,omitempty"`
}
func (*Feature) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Feature.
func (*Feature) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FeatureSummary ¶
type FeatureSummary struct {
// FeatureID is an indentifier of the feature whose status is reported
FeatureID libsveltosv1beta1.FeatureID `json:"featureID"`
// Hash represents of a unique value for a feature at a fixed point in
// time
// +optional
Hash []byte `json:"hash,omitempty"`
// The number of consecutive deployment failures.
// +optional
ConsecutiveFailures uint `json:"consecutiveFailures,omitempty"`
// Status represents the state of the feature in the workload cluster
// +optional
Status libsveltosv1beta1.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 HandOverError ¶ added in v1.0.0
type HandOverError struct {
Message string
}
func (*HandOverError) DeepCopy ¶ added in v1.0.0
func (in *HandOverError) DeepCopy() *HandOverError
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HandOverError.
func (*HandOverError) DeepCopyInto ¶ added in v1.0.0
func (in *HandOverError) DeepCopyInto(out *HandOverError)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*HandOverError) Error ¶ added in v1.0.0
func (r *HandOverError) Error() string
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
// It can point to a traditional HTTP-based repository or an OCI registry.
// Examples:
// - HTTP Repository: https://charts.example.com/stable
// - OCI Registry: oci://registry.example.com/namespace/charts
// - GitHub Pages: https://<username>.github.io/<repository>/
// - Any other valid URL where Helm charts are hosted.
//
// Alternatively, it can be a Flux source reference:
// <flux source kind>://<flux source namespace>/<flux source name>/<path>
//
// Where:
// - <flux source kind> is the type of Flux source (gitrepository, ocirepository, bucket).
// - <flux source namespace> and <flux source name> are the namespace and name of the Flux Source in the management cluster.
// - <path> is the path within the source repository where the Helm charts are located.
//
// For instance:
// gitrepository://flux-system/flux-system/charts/projectsveltos
//
// Assuming there is a Flux GitRepository named 'flux-system' in the 'flux-system' namespace
// syncing 'https://github.com/projectsveltos/helm-charts.git/', and the Helm charts are
// located in the 'charts/projectsveltos' directory of that repository.
// +kubebuilder:validation:MinLength=1
RepositoryURL string `json:"repositoryURL"`
// RepositoryName is the name helm chart repository
// This field is used only when RepositoryURL points to a traditional HTTP or OCI repository.
// It is ignored if RepositoryURL references a Flux Source.
// Must be defined otherwise.
// +optional
RepositoryName string `json:"repositoryName,omitempty"`
// ChartName is the chart name
// This field is used only when RepositoryURL points to a traditional HTTP or OCI repository.
// Must be defined otherwise.
// +optional
ChartName string `json:"chartName,omitempty"`
// ChartVersion is the chart version
// This field is used only when RepositoryURL points to a traditional HTTP or OCI repository.
// It is ignored if RepositoryURL references a Flux Source.
// Must be defined otherwise.
// +optional
ChartVersion string `json:"chartVersion,omitempty"`
// 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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmChart.
func (*HelmChart) DeepCopyInto ¶
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 ¶
func (in *HelmUninstallOptions) DeepCopy() *HelmUninstallOptions
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 can be expressed as a template and instantiate using any cluster field.
Namespace string `json:"namespace"`
// Name of the referenced resource.
// Name can be expressed as a template and instantiate using any cluster field.
// +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"`
// Optional indicates that the referenced resource is not mandatory.
// If set to true and the resource is not found, the error will be ignored,
// and Sveltos will continue processing other ValueFroms.
// +kubebuilder:default:=false
// +optional
Optional bool `json:"optional,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 NonRetriableError ¶ added in v1.0.0
type NonRetriableError struct {
Message string
}
func (*NonRetriableError) DeepCopy ¶ added in v1.0.0
func (in *NonRetriableError) DeepCopy() *NonRetriableError
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NonRetriableError.
func (*NonRetriableError) DeepCopyInto ¶ added in v1.0.0
func (in *NonRetriableError) DeepCopyInto(out *NonRetriableError)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NonRetriableError) Error ¶ added in v1.0.0
func (r *NonRetriableError) Error() string
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.
// Namespace can be expressed as a template and instantiate using any cluster field.
// +optional
Namespace string `json:"namespace,omitempty"`
// Name of the referenced resource.
// Name can be expressed as a template and instantiate using any cluster field.
// +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"`
// Optional indicates that the referenced resource is not mandatory.
// If set to true and the resource is not found, the error will be ignored,
// and Sveltos will continue processing other PolicyRefs.
// +kubebuilder:default:=false
// +optional
Optional bool `json:"optional,omitempty"`
}
func (*PolicyRef) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PolicyRef.
func (*PolicyRef) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Profile.
func (*Profile) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Profile) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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
func (in *RegistryCredentialsConfig) DeepCopy() *RegistryCredentialsConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryCredentialsConfig.
func (*RegistryCredentialsConfig) DeepCopyInto ¶ added in v0.38.2
func (in *RegistryCredentialsConfig) DeepCopyInto(out *RegistryCredentialsConfig)
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 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 mode ensures that the first time a workload cluster matches a ClusterProfile,
// the specified features are deployed. Subsequent changes to the feature configuration are also
// automatically applied to all matching workload clusters.
// _ SyncModeContinuousWithDriftDetection operates similarly to Continuous mode, but also monitors
// matching managed clusters for configuration drift. If drift is detected, a reconciliation is
// triggered to ensure the managed cluster's configuration aligns with the ClusterProfile.
// - 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"`
// By default (when ContinueOnError is unset or set to false), Sveltos stops deployment after
// encountering the first error.
// If set to true, Sveltos will attempt to deploy remaining resources in the ClusterProfile even
// if errors are detected for previous resources.
// +kubebuilder:default:=false
// +optional
ContinueOnError bool `json:"continueOnError,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)
// +listType=atomic
// +optional
PolicyRefs []PolicyRef `json:"policyRefs,omitempty"`
// Helm charts is a list of helm charts that need to be deployed
// +listType=atomic
// +optional
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.
// +listType=atomic
// +optional
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
// +listType=atomic
// +optional
ValidateHealths []libsveltosv1beta1.ValidateHealth `json:"validateHealths,omitempty"`
// Define additional Kustomize inline Patches applied for all resources on this profile
// Within the Patch Spec you can use templating
// +listType=atomic
// +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.
// +listType=atomic
// +optional
DriftExclusions []libsveltosv1beta1.DriftExclusion `json:"driftExclusions,omitempty"`
// The maximum number of consecutive deployment failures that Sveltos will permit.
// After this many consecutive failures, the deployment will be considered failed, and Sveltos will stop retrying.
// This setting applies only to feature deployments, not resource removal.
// This field is optional. If not set, Sveltos default behavior is to keep retrying.
// +optional
MaxConsecutiveFailures *uint `json:"maxConsecutiveFailures,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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Spec.
func (*Spec) DeepCopyInto ¶
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"`
// DependenciesHash is a hash representing the set of clusters where this ClusterProfile
// must be deployed, based on the combined configuration of its dependencies.
DependenciesHash []byte `json:"dependenciesHash,omitempty"`
}
Status defines the observed state of ClusterProfile/Profile
func (*Status) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Status.
func (*Status) DeepCopyInto ¶
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 any cluster field.
Resource corev1.ObjectReference `json:"resource"`
// Identifier is how the resource will be referred to in the
// template
Identifier string `json:"identifier"`
// Optional indicates that the referenced resource is not mandatory.
// If set to true and the resource is not found, the error will be ignored,
// and Sveltos will continue processing other TemplateResourceRefs.
// +kubebuilder:default:=false
// +optional
Optional bool `json:"optional,omitempty"`
}
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 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.
// Namespace can be expressed as a template and instantiate using any cluster field.
// +optional
Namespace string `json:"namespace,omitempty"`
// Name of the referenced resource.
// Name can be expressed as a template and instantiate using any cluster field.
// +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"`
// Optional indicates that the referenced resource is not mandatory.
// If set to true and the resource is not found, the error will be ignored,
// and Sveltos will continue processing other ValueFroms.
// +kubebuilder:default:=false
// +optional
Optional bool `json:"optional,omitempty"`
}
func (*ValueFrom) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValueFrom.
func (*ValueFrom) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.