v1alpha1

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Feb 10, 2022 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the reaper v1alpha1 API group +kubebuilder:object:generate=true +groupName=reaper.k8ssandra.io

Index

Constants

View Source
const (
	ReaperLabel     = "k8ssandra.io/reaper"
	DefaultKeyspace = "reaper_db"
)
View Source
const (
	// ReaperProgressPending is Reaper's status when it's waiting for the datacenter to become ready.
	ReaperProgressPending = ReaperProgress("Pending")
	// ReaperProgressDeploying is Reaper's status when it's waiting for the Reaper instance and its associated service
	// to become ready.
	ReaperProgressDeploying = ReaperProgress("Deploying")
	// ReaperProgressConfiguring is Reaper's status when the Reaper instance is ready for work and is being connected
	// its target datacenter.
	ReaperProgressConfiguring = ReaperProgress("Configuring")
	// ReaperProgressRunning is Reaper's status when Reaper is up and running.
	ReaperProgressRunning = ReaperProgress("Running")
)

Variables

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

	// 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 AutoScheduling

type AutoScheduling struct {

	// +optional
	// +kubebuilder:default=false
	Enabled bool `json:"enabled,omitempty"`

	// RepairType is the type of repair to create:
	// - REGULAR creates a regular repair (non-adaptive and non-incremental);
	// - ADAPTIVE creates an adaptive repair; adaptive repairs are most suited for Cassandra 3.
	// - INCREMENTAL creates an incremental repair; incremental repairs should only be used with Cassandra 4+.
	// - AUTO chooses between ADAPTIVE and INCREMENTAL depending on the Cassandra server version; ADAPTIVE for Cassandra
	// 3 and INCREMENTAL for Cassandra 4+.
	// +optional
	// +kubebuilder:default="AUTO"
	// +kubebuilder:validation:Enum:=REGULAR;ADAPTIVE;INCREMENTAL;AUTO
	RepairType string `json:"repairType,omitempty"`

	// PercentUnrepairedThreshold is the percentage of unrepaired data over which an incremental repair should be
	// started. Only relevant when using repair type INCREMENTAL.
	// +optional
	// +kubebuilder:default=10
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=100
	PercentUnrepairedThreshold int `json:"percentUnrepairedThreshold,omitempty"`

	// InitialDelay is the amount of delay time before the schedule period starts. Must be a valid ISO-8601 duration
	// string. The default is "PT15S" (15 seconds).
	// +optional
	// +kubebuilder:default="PT15S"
	// +kubebuilder:validation:Pattern:="([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?"
	InitialDelay string `json:"initialDelayPeriod,omitempty"`

	// PeriodBetweenPolls is the interval time to wait before checking whether to start a repair task. Must be a valid
	// ISO-8601 duration string. The default is "PT10M" (10 minutes).
	// +optional
	// +kubebuilder:default="PT10M"
	// +kubebuilder:validation:Pattern:="([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?"
	PeriodBetweenPolls string `json:"periodBetweenPolls,omitempty"`

	// TimeBeforeFirstSchedule is the grace period before the first repair in the schedule is started. Must be a valid
	// ISO-8601 duration string. The default is "PT5M" (5 minutes).
	// +optional
	// +kubebuilder:default="PT5M"
	// +kubebuilder:validation:Pattern:="([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?"
	TimeBeforeFirstSchedule string `json:"timeBeforeFirstSchedule,omitempty"`

	// ScheduleSpreadPeriod is the time spacing between each of the repair schedules that is to be carried out. Must be
	// a valid ISO-8601 duration string. The default is "PT6H" (6 hours).
	// +optional
	// +kubebuilder:default="PT6H"
	// +kubebuilder:validation:Pattern:="([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?"
	ScheduleSpreadPeriod string `json:"scheduleSpreadPeriod,omitempty"`

	// ExcludedClusters are the clusters that are to be excluded from the repair schedule.
	// +optional
	ExcludedClusters []string `json:"excludedClusters,omitempty"`

	// ExcludedKeyspaces are the keyspaces that are to be excluded from the repair schedule.
	// +optional
	ExcludedKeyspaces []string `json:"excludedKeyspaces,omitempty"`
}

AutoScheduling includes options to configure the auto scheduling of repairs for new clusters.

func (*AutoScheduling) DeepCopy

func (in *AutoScheduling) DeepCopy() *AutoScheduling

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

func (*AutoScheduling) DeepCopyInto

func (in *AutoScheduling) DeepCopyInto(out *AutoScheduling)

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

type CassandraDatacenterRef

type CassandraDatacenterRef struct {

	// The datacenter name.
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// The datacenter namespace. If empty, the datacenter will be assumed to reside in the same namespace as the Reaper
	// instance.
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

CassandraDatacenterRef references the target Cassandra DC that Reaper should manage. TODO this object could be used by Stargate too; which currently cannot locate DCs outside of its own namespace.

func (*CassandraDatacenterRef) DeepCopy

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

func (*CassandraDatacenterRef) DeepCopyInto

func (in *CassandraDatacenterRef) DeepCopyInto(out *CassandraDatacenterRef)

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

type Reaper

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

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

Reaper is the Schema for the reapers API

func (*Reaper) DeepCopy

func (in *Reaper) DeepCopy() *Reaper

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

func (*Reaper) DeepCopyInto

func (in *Reaper) DeepCopyInto(out *Reaper)

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

func (*Reaper) DeepCopyObject

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

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

type ReaperClusterTemplate

type ReaperClusterTemplate struct {
	ReaperTemplate `json:",inline"`

	// +optional
	// +kubebuilder:default="PER_DC"
	// +kubebuilder:validation:Enum:=PER_DC;SINGLE
	DeploymentMode string `json:"deploymentMode,omitempty"`
}

func (*ReaperClusterTemplate) DeepCopy

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

func (*ReaperClusterTemplate) DeepCopyInto

func (in *ReaperClusterTemplate) DeepCopyInto(out *ReaperClusterTemplate)

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

type ReaperCondition

type ReaperCondition struct {
	Type   ReaperConditionType    `json:"type"`
	Status corev1.ConditionStatus `json:"status"`

	// LastTransitionTime is the last time the condition transited from one status to another.
	// +optional
	LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty"`
}

func (*ReaperCondition) DeepCopy

func (in *ReaperCondition) DeepCopy() *ReaperCondition

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

func (*ReaperCondition) DeepCopyInto

func (in *ReaperCondition) DeepCopyInto(out *ReaperCondition)

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

type ReaperConditionType

type ReaperConditionType string
const (
	ReaperReady ReaperConditionType = "Ready"
)

type ReaperList

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

ReaperList contains a list of Reaper

func (*ReaperList) DeepCopy

func (in *ReaperList) DeepCopy() *ReaperList

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

func (*ReaperList) DeepCopyInto

func (in *ReaperList) DeepCopyInto(out *ReaperList)

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

func (*ReaperList) DeepCopyObject

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

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

type ReaperProgress

type ReaperProgress string

ReaperProgress is a word summarizing the state of a Reaper resource.

type ReaperSpec

type ReaperSpec struct {
	ReaperTemplate `json:",inline"`

	// DatacenterRef is the reference of a CassandraDatacenter resource that this Reaper instance should manage. It will
	// also be used as the backend for persisting Reaper's state. Reaper must be able to access the JMX port (7199 by
	// default) and the CQL port (9042 by default) on this DC.
	// +kubebuilder:validation:Required
	DatacenterRef CassandraDatacenterRef `json:"datacenterRef"`

	// DatacenterAvailability indicates to Reaper its deployment in relation to the target datacenter's network.
	// For single-DC clusters, the default (ALL) is fine. For multi-DC clusters, it is recommended to use EACH,
	// provided that there is one Reaper instance managing each DC in the cluster; otherwise, if one single Reaper
	// instance is going to manage more than one DC in the cluster, use ALL.
	// See https://cassandra-reaper.io/docs/usage/multi_dc/.
	// +optional
	// +kubebuilder:default="ALL"
	// +kubebuilder:validation:Enum:=LOCAL;ALL;EACH
	DatacenterAvailability string `json:"datacenterAvailability,omitempty"`

	// Client encryption stores which are used by Cassandra and Reaper.
	// +optional
	ClientEncryptionStores *encryption.Stores `json:"clientEncryptionStores,omitempty"`

	// Whether to skip schema migration. Schema migration is done in an init container on every Reaper deployment and
	// can slow down Reaper's startup time. Besides, schema migration requires reading data at QUORUM. It can be skipped
	// if you know that the schema is already up-to-date, or if you know upfront that QUORUM cannot be achieved (for
	// example, because a DC is down).
	// +optional
	// +kubebuilder:default=false
	SkipSchemaMigration bool `json:"skipSchemaMigration,omitempty"`
}

ReaperSpec defines the desired state of Reaper

func (*ReaperSpec) DeepCopy

func (in *ReaperSpec) DeepCopy() *ReaperSpec

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

func (*ReaperSpec) DeepCopyInto

func (in *ReaperSpec) DeepCopyInto(out *ReaperSpec)

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

type ReaperStatus

type ReaperStatus struct {

	// Progress is the progress of this Reaper object.
	// +kubebuilder:validation:Enum=Pending;Deploying;Configuring;Running
	// +optional
	Progress ReaperProgress `json:"progress,omitempty"`

	// +optional
	Conditions []ReaperCondition `json:"conditions,omitempty"`
}

ReaperStatus defines the observed state of Reaper

func (*ReaperStatus) DeepCopy

func (in *ReaperStatus) DeepCopy() *ReaperStatus

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

func (*ReaperStatus) DeepCopyInto

func (in *ReaperStatus) DeepCopyInto(out *ReaperStatus)

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

func (*ReaperStatus) GetConditionStatus

func (in *ReaperStatus) GetConditionStatus(conditionType ReaperConditionType) corev1.ConditionStatus

func (*ReaperStatus) IsReady

func (in *ReaperStatus) IsReady() bool

func (*ReaperStatus) SetCondition

func (in *ReaperStatus) SetCondition(condition ReaperCondition)

func (*ReaperStatus) SetNotReady

func (in *ReaperStatus) SetNotReady()

func (*ReaperStatus) SetReady

func (in *ReaperStatus) SetReady()

type ReaperTemplate

type ReaperTemplate struct {

	// The keyspace to use to store Reaper's state. Will default to "reaper_db" if unspecified. Will be created if it
	// does not exist, and if this Reaper resource is managed by K8ssandra.
	// +kubebuilder:default="reaper_db"
	// +optional
	Keyspace string `json:"keyspace,omitempty"`

	// Defines the username and password that Reaper will use to authenticate CQL connections to Cassandra clusters.
	// These credentials will be automatically turned into CQL roles by cass-operator when bootstrapping the datacenter,
	// then passed to the Reaper instance, so that it can authenticate against nodes in the datacenter using CQL. If CQL
	// authentication is not required, leave this field empty. The secret must be in the same namespace as Reaper itself
	// and must contain two keys: "username" and "password".
	// +optional
	CassandraUserSecretRef corev1.LocalObjectReference `json:"cassandraUserSecretRef,omitempty"`

	// Defines the username and password that Reaper will use to authenticate JMX connections to Cassandra clusters.
	// These credentials will be automatically passed to each Cassandra node in the datacenter, as well as to the Reaper
	// instance, so that the latter can authenticate against the former. If JMX authentication is not required, leave
	// this field empty. The secret must be in the same namespace as Reaper itself and must contain two keys: "username"
	// and "password".
	// +optional
	JmxUserSecretRef corev1.LocalObjectReference `json:"jmxUserSecretRef,omitempty"`

	// Defines the secret which contains the username and password for the Reaper UI and REST API authentication.
	// +optional
	UiUserSecretRef corev1.LocalObjectReference `json:"uiUserSecretRef,omitempty"`

	// The image to use for the Reaper pod main container.
	// The default is "thelastpickle/cassandra-reaper:skip-migration".
	// +optional
	// +kubebuilder:default={repository:"thelastpickle",name:"cassandra-reaper",tag:"skip-migration"}
	ContainerImage *images.Image `json:"containerImage,omitempty"`

	// The image to use for the Reaper pod init container (that performs schema migrations).
	// The default is "thelastpickle/cassandra-reaper:skip-migration".
	// +optional
	// +kubebuilder:default={repository:"thelastpickle",name:"cassandra-reaper",tag:"skip-migration"}
	InitContainerImage *images.Image `json:"initContainerImage,omitempty"`

	// +kubebuilder:default="default"
	// +optional
	ServiceAccountName string `json:"ServiceAccountName,omitempty"`

	// Auto scheduling properties. When you enable the auto-schedule feature, Reaper dynamically schedules repairs for
	// all non-system keyspaces in a cluster. A cluster's keyspaces are monitored and any modifications (additions or
	// removals) are detected. When a new keyspace is created, a new repair schedule is created automatically for that
	// keyspace. Conversely, when a keyspace is removed, the corresponding repair schedule is deleted.
	// +optional
	AutoScheduling AutoScheduling `json:"autoScheduling,omitempty"`

	// LivenessProbe sets the Reaper liveness probe. Leave nil to use defaults.
	// +optional
	LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty"`

	// ReadinessProbe sets the Reaper readiness probe. Leave nil to use defaults.
	// +optional
	ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty"`

	// Affinity applied to the Reaper pods.
	// +optional
	Affinity *corev1.Affinity `json:"affinity,omitempty"`

	// Tolerations applied to the Reaper pods.
	// +optional
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`

	// PodSecurityContext contains a pod-level SecurityContext to apply to Reaper pods.
	// +optional
	PodSecurityContext *corev1.PodSecurityContext `json:"podSecurityContext,omitempty"`

	// SecurityContext applied to the Reaper main container.
	// +optional
	SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"`

	// InitContainerSecurityContext is the SecurityContext applied to the Reaper init container, used to perform schema
	// migrations.
	// +optional
	InitContainerSecurityContext *corev1.SecurityContext `json:"initContainerSecurityContext,omitempty"`
}

func (*ReaperTemplate) DeepCopy

func (in *ReaperTemplate) DeepCopy() *ReaperTemplate

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

func (*ReaperTemplate) DeepCopyInto

func (in *ReaperTemplate) DeepCopyInto(out *ReaperTemplate)

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