v1beta1

package
v0.42.0 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

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

Index

Constants

View Source
const (
	// EventTriggerFinalizer allows Reconcilers to clean up resources associated with
	// EventTrigger before removing it from the apiserver.
	EventTriggerFinalizer = "eventtrigger.finalizer.projectsveltos.io"

	EventTriggerKind = "EventTrigger"

	FeatureEventTrigger = "EventTrigger"

	// InstantiateAnnotation is the annotation that must be set on a referenced
	// ConfigMap/Secret when the content is a template and needs variable substitution
	// using event/cluster data
	InstantiateAnnotation = "projectsveltos.io/instantiate"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "lib.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

This section is empty.

Types

type EventTrigger

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

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

EventTrigger is the Schema for the eventtriggers API

func (*EventTrigger) DeepCopy

func (in *EventTrigger) DeepCopy() *EventTrigger

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

func (*EventTrigger) DeepCopyInto

func (in *EventTrigger) DeepCopyInto(out *EventTrigger)

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

func (*EventTrigger) DeepCopyObject

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

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

func (*EventTrigger) Hub

func (*EventTrigger) Hub()

Hub marks this type as a conversion hub.

type EventTriggerList

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

EventTriggerList contains a list of EventTrigger

func (*EventTriggerList) DeepCopy

func (in *EventTriggerList) DeepCopy() *EventTriggerList

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

func (*EventTriggerList) DeepCopyInto

func (in *EventTriggerList) DeepCopyInto(out *EventTriggerList)

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

func (*EventTriggerList) DeepCopyObject

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

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

type EventTriggerSpec

type EventTriggerSpec struct {
	// SourceClusterSelector identifies clusters to associate to.
	// This represents the set of clusters where Sveltos will watch for
	// events defined by referenced EventSource
	SourceClusterSelector libsveltosv1beta1.Selector `json:"sourceClusterSelector"`

	// SetRefs identifies referenced ClusterSets. Name of the referenced ClusterSets.
	// +optional
	ClusterSetRefs []string `json:"clusterSetRefs,omitempty"`

	// Multiple resources in a managed cluster can be a match for referenced
	// EventSource. OneForEvent indicates whether a ClusterProfile for all
	// resource (OneForEvent = false) or one per resource (OneForEvent = true)
	// needs to be creted.
	// +optional
	OneForEvent bool `json:"oneForEvent,omitempty"`

	// EventSourceName is the name of the referenced EventSource.
	// Resources contained in the referenced ConfigMaps/Secrets and HelmCharts
	// will be customized using information from resources matching the EventSource
	// in the managed cluster.
	// 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
	EventSourceName string `json:"eventSourceName"`

	// DestinationClusterSelector identifies the cluster where add-ons will be deployed.
	// By default, this is nil and add-ons will be deployed in the very same cluster the
	// event happened.
	// If DestinationClusterSelector is set though, when an event happens in any of the
	// cluster identified by SourceClusterSelector, add-ons will be deployed in each of
	// the cluster indentified by DestinationClusterSelector.
	// +optional
	DestinationClusterSelector libsveltosv1beta1.Selector `json:"destinationClusterSelector,omitempty"`

	// The ConfigMapGenerator field references ConfigMaps containing templates.
	// These referenced ConfigMaps will be dynamically instantiated in the management cluster
	// based on event data.
	// +optional
	ConfigMapGenerator []GeneratorReference `json:"configMapGenerator,omitempty"`

	// The SecretGenerator field references Secrets containing templates.
	// These referenced Secret will be dynamically instantiated in the management cluster
	// based on event data.
	// +optional
	SecretGenerator []GeneratorReference `json:"secretGenerator,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.
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +kubebuilder:default:=Continuous
	// +optional
	SyncMode configv1beta1.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
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +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.
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +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 pods (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]+)$"
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +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
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +optional
	StopMatchingBehavior configv1beta1.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
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +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 contained in referenced
	// PolicyRefs and Helm charts
	// +patchMergeKey=identifier
	// +patchStrategy=merge,retainKeys
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +optional
	TemplateResourceRefs []configv1beta1.TemplateResourceRef `json:"templateResourceRefs,omitempty"`

	// PolicyRefs references all the ConfigMaps/Secrets containing kubernetes resources
	// that need to be deployed in the matching clusters based on EventSource.
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +optional
	PolicyRefs []configv1beta1.PolicyRef `json:"policyRefs,omitempty"`

	// Helm charts to be deployed in the matching clusters based on EventSource.
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +optional
	HelmCharts []configv1beta1.HelmChart `json:"helmCharts,omitempty"`

	// Kustomization refs
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +optional
	KustomizationRefs []configv1beta1.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
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +optional
	ValidateHealths []configv1beta1.ValidateHealth `json:"validateHealths,omitempty"`

	// Define additional Kustomize inline Patches applied for all resources on this profile
	// Within the Patch Spec you can use templating
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +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.
	// This field will be directly transferred to the ClusterProfile Spec
	// generated in response to events.
	// +optional
	DriftExclusions []configv1beta1.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"`
}

EventTriggerSpec defines the desired state of EventTrigger

func (*EventTriggerSpec) DeepCopy

func (in *EventTriggerSpec) DeepCopy() *EventTriggerSpec

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

func (*EventTriggerSpec) DeepCopyInto

func (in *EventTriggerSpec) DeepCopyInto(out *EventTriggerSpec)

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

type EventTriggerStatus

type EventTriggerStatus struct {
	// MatchingClusterRefs reference all the cluster-api Cluster currently matching
	// ClusterProfile SourceClusterSelector
	// +optional
	MatchingClusterRefs []corev1.ObjectReference `json:"matchingClusters,omitempty"`

	// DestinationMatchingClusterRefs reference all the cluster-api Cluster currently matching
	// ClusterProfile DestinationClusterSelector
	// +optional
	DestinationMatchingClusterRefs []corev1.ObjectReference `json:"destinationMatchingClusterRefs,omitempty"`

	// ClusterInfo represent the deployment status in each managed
	// cluster.
	// +optional
	ClusterInfo []libsveltosv1beta1.ClusterInfo `json:"clusterInfo,omitempty"`
}

EventTriggerStatus defines the observed state of EventTrigger

func (*EventTriggerStatus) DeepCopy

func (in *EventTriggerStatus) DeepCopy() *EventTriggerStatus

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

func (*EventTriggerStatus) DeepCopyInto

func (in *EventTriggerStatus) DeepCopyInto(out *EventTriggerStatus)

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

type GeneratorReference added in v0.37.0

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

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

	// InstantiatedResourceNameFormat defines a template used to generate the name
	// of the resource created in the management cluster. The template can reference:
	// - `.Cluster.metadata.namespace`: namespace of the managed cluster
	// - `.Cluster.metadata.name`: name of the managed cluster
	// - `.Cluster.kind`: kind of the managed cluster object
	// +kubebuilder:validation:MinLength=1
	InstantiatedResourceNameFormat string `json:"nameFormat"`
}

func (*GeneratorReference) DeepCopy added in v0.37.0

func (in *GeneratorReference) DeepCopy() *GeneratorReference

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

func (*GeneratorReference) DeepCopyInto added in v0.37.0

func (in *GeneratorReference) DeepCopyInto(out *GeneratorReference)

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

Jump to

Keyboard shortcuts

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