Documentation
¶
Overview ¶
Package v1 contains version 1 of the custom resource definitions
+k8s:deepcopy-gen=package +groupName=backup.nect.com
Index ¶
- Constants
- Variables
- func Resource(resource string) schema.GroupResource
- type CockroachConfig
- type DatabaseBackup
- type DatabaseBackupList
- type DatabaseBackupSpec
- type DatabaseBackupStatus
- func (d *DatabaseBackupStatus) CalculateReady(generation int64)
- func (in *DatabaseBackupStatus) DeepCopy() *DatabaseBackupStatus
- func (in *DatabaseBackupStatus) DeepCopyInto(out *DatabaseBackupStatus)
- func (d *DatabaseBackupStatus) Init(generation int64)
- func (d *DatabaseBackupStatus) Set(condType DatabaseBackupStatusCondition, generation int64, ...)
- type DatabaseBackupStatusCondition
- type DatabaseBackupStorageClass
- type DatabaseBackupStorageClassList
- type DatabaseBackupStorageClassSpec
- func (in *DatabaseBackupStorageClassSpec) DeepCopy() *DatabaseBackupStorageClassSpec
- func (in *DatabaseBackupStorageClassSpec) DeepCopyInto(out *DatabaseBackupStorageClassSpec)
- func (d *DatabaseBackupStorageClassSpec) FetchSecrets(ctx context.Context, client kubernetes.Interface, namespace string) error
- type DatabaseBackupStorageLocation
- type MySQLConfig
- type PostgresConfig
- type Secret
- type SecretKeyRef
Constants ¶
const ( // GroupName defines the group name of this API package GroupName = "backup.nect.com" // GroupVersion defines the current group version of this package GroupVersion = "v1" )
Variables ¶
var ( // SchemeBuilder contains a runtime.SchemeBuilder with types // available in this api package SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme contains the AddToScheme function of the SchemeBuilder AddToScheme = SchemeBuilder.AddToScheme )
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: GroupVersion}
SchemeGroupVersion contains a schema GroupVersion of the exported GroupName and GroupVersion in this api package
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type CockroachConfig ¶
type CockroachConfig struct { // Database specifies the database to be backed up Database string `json:"database"` // Host specifies the IP or DNS name to connect to Host string `json:"host"` // Port specifies the port the database is listening on (usually 3306) Port int64 `json:"port"` // User specifies the user to use for connection User string `json:"user"` // Cert is the client certificate used to authenticate against CRDB Cert Secret `json:"cert"` // TLSCertCA specifies the CA certificate and should be specified // as reference to a key in a secret if CA is managed as a secret // // +kubebuilder:validation:Optional CertCA Secret `json:"certCA"` // CertCAFromCluster specifies the cluster certificate should be // used instead of the certCA provided certificate. If this is set // to true the certCA key will be ignored. // // +kubebuilder:validation:Optional // +kubebuilder:default=false CertCAFromCluster bool `json:"certCAFromCluster"` // CertKey is the private key for the given client certificate CertKey Secret `json:"certKey"` }
CockroachConfig contains the values required for the backup-engine to backup a single database on a Cockroach server
+kubebuilder:object:generate=true
func (*CockroachConfig) DeepCopy ¶
func (in *CockroachConfig) DeepCopy() *CockroachConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CockroachConfig.
func (*CockroachConfig) DeepCopyInto ¶
func (in *CockroachConfig) DeepCopyInto(out *CockroachConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DatabaseBackup ¶
type DatabaseBackup struct { metav1.TypeMeta `json:",inline"` //revive:disable-line:struct-tag // "inline" is valid metav1.ObjectMeta `json:"metadata,omitempty"` Spec DatabaseBackupSpec `json:"spec"` Status DatabaseBackupStatus `json:"status,omitempty"` }
DatabaseBackup contains the Kubernetes document for the DatabaseBackupSpec
+genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:subresource:status
func (*DatabaseBackup) DeepCopy ¶
func (in *DatabaseBackup) DeepCopy() *DatabaseBackup
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseBackup.
func (*DatabaseBackup) DeepCopyInto ¶
func (in *DatabaseBackup) DeepCopyInto(out *DatabaseBackup)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DatabaseBackup) DeepCopyObject ¶
func (in *DatabaseBackup) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type DatabaseBackupList ¶
type DatabaseBackupList struct { metav1.TypeMeta `json:",inline"` //revive:disable-line:struct-tag // "inline" is valid metav1.ListMeta `json:"metadata,omitempty"` Items []DatabaseBackup `json:"items"` }
DatabaseBackupList contains a list of DatabaseBackup
+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*DatabaseBackupList) DeepCopy ¶
func (in *DatabaseBackupList) DeepCopy() *DatabaseBackupList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseBackupList.
func (*DatabaseBackupList) DeepCopyInto ¶
func (in *DatabaseBackupList) DeepCopyInto(out *DatabaseBackupList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DatabaseBackupList) DeepCopyObject ¶
func (in *DatabaseBackupList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type DatabaseBackupSpec ¶
type DatabaseBackupSpec struct { // DatabaseType specifies the type of the database to be backed up. // This changes the behaviour of the backup engine used in the // background and needs to match the provisioned database. // // +kubebuilder:validation:Enum={cockroach, mysql, postgres} DatabaseType string `json:"databaseType"` // DatabaseVersion is an arbitrary string the database driver uses // to determine how to handle the exact version of the database. // This for example is used to handle the different approaches used // by Cockroach v21 and v23. // // +kubebuilder:validation:Optional DatabaseVersion string `json:"databaseVersion"` // BackupStorageClass defines where to store the backups (must // exist before) BackupStorageClass string `json:"backupStorageClass"` // BackupCron specifies a cron entry (5 fields) when to execute // the backup runs. If set to other than empty string will // override the BackupInterval // // +kubebuilder:validation:Optional // +kubebuilder:validation:Pattern=`((((\d+,)+\d+|(\d+(\/|-)\d+)|\d+|\*) ?){5})` BackupCron string `json:"backupCron"` // BackupIntervalHours is a simpler method of specifying the // backup schedule: The process will wait for the current time // to be divisible by the given interval. (i.e. if you specify // 2h the backup will run 00:00, 02:00, 04:00, ...) // // +kubebuilder:validation:Minimum=1 // +kubebuilder:validation:Optional BackupIntervalHours int64 `json:"backupInterval"` // RetentionConfig defines the retention rules applied to store // old copies of the backup in case generation-principle backups // are enabled. If left to nil the default retention config is // used // // +kubebuilder:validation:Optional RetentionConfig labelmanager.RetentionConfig `json:"retentionConfig"` // UseSingleBackupTarget defines whether to upload in the same // place all the time (S3 server then needs to take care of // rotating / revisioning backup file and backup can only restore // this single instance, not to a point in time) or whether to // use generation principle backups and treat the storage target // as a prefix. // // +kubebuilder:default=false // +kubebuilder:validation:Optional UseSingleBackupTarget bool `json:"useSingleBackupTarget"` // Cockroach defines the required values for a Cockroach backup // // +kubebuilder:validation:Optional Cockroach *CockroachConfig `json:"cockroach,omitempty"` // MySQL defines the required values for a MySQL backup // // +kubebuilder:validation:Optional MySQL *MySQLConfig `json:"mysql,omitempty"` // Postgres defines the required values for a PostgreSQL backup // // +kubebuilder:validation:Optional Postgres *PostgresConfig `json:"postgres,omitempty"` }
DatabaseBackupSpec describes how the backup of the database should look and how to connect to the database
+kubebuilder:object:generate=true
func (*DatabaseBackupSpec) DeepCopy ¶
func (in *DatabaseBackupSpec) DeepCopy() *DatabaseBackupSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseBackupSpec.
func (*DatabaseBackupSpec) DeepCopyInto ¶
func (in *DatabaseBackupSpec) DeepCopyInto(out *DatabaseBackupSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DatabaseBackupSpec) FetchSecrets ¶
func (d *DatabaseBackupSpec) FetchSecrets(ctx context.Context, client kubernetes.Interface, namespace string) error
FetchSecrets iterates through all Secret resources inside the spec and pulls their values from the original locations into the local instance
type DatabaseBackupStatus ¶
type DatabaseBackupStatus struct { // Collection of conditions Conditions []metav1.Condition `json:"conditions"` // Last applied hash of the created resources for comparison of a // generated update // // +kubebuilder:validation:Optional Hash string `json:"hash,omitempty"` }
DatabaseBackupStatus represents a status of a DatabaseBackup resource
func (*DatabaseBackupStatus) CalculateReady ¶
func (d *DatabaseBackupStatus) CalculateReady(generation int64)
CalculateReady takes all known conditions into account and checks whether they are fine. From all those conditions the overall "Ready" condition is set
func (*DatabaseBackupStatus) DeepCopy ¶
func (in *DatabaseBackupStatus) DeepCopy() *DatabaseBackupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseBackupStatus.
func (*DatabaseBackupStatus) DeepCopyInto ¶
func (in *DatabaseBackupStatus) DeepCopyInto(out *DatabaseBackupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DatabaseBackupStatus) Init ¶
func (d *DatabaseBackupStatus) Init(generation int64)
Init initializes a new "not ready" status object
func (*DatabaseBackupStatus) Set ¶
func (d *DatabaseBackupStatus) Set(condType DatabaseBackupStatusCondition, generation int64, status metav1.ConditionStatus, reason, message string)
Set replaces the status condition if the status changed and re-calculates the overall Ready status
type DatabaseBackupStatusCondition ¶
type DatabaseBackupStatusCondition string
DatabaseBackupStatusCondition is an enum of available status conditions for the DatabaseBackupStatus
const ( // ConditionSecretExists represents the status condition whether the secret was created successfully ConditionSecretExists DatabaseBackupStatusCondition = "db-backup.nect.com/secretExists" //#nosec:G101 -- That's not a credential // ConditionServiceExists represents the status condition whether the service was created successfully ConditionServiceExists DatabaseBackupStatusCondition = "db-backup.nect.com/serviceExists" // ConditionSTSExists represents the status condition whether the sts was created successfully ConditionSTSExists DatabaseBackupStatusCondition = "db-backup.nect.com/stsExists" )
type DatabaseBackupStorageClass ¶
type DatabaseBackupStorageClass struct { metav1.TypeMeta `json:",inline"` //revive:disable-line:struct-tag // "inline" is valid metav1.ObjectMeta `json:"metadata,omitempty"` Spec DatabaseBackupStorageClassSpec `json:"spec"` }
DatabaseBackupStorageClass contains the Kubernetes document for the DatabaseBackupStorageClassSpec
+genclient +genclient:nonNamespaced +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:resource:scope=Cluster
func (*DatabaseBackupStorageClass) DeepCopy ¶
func (in *DatabaseBackupStorageClass) DeepCopy() *DatabaseBackupStorageClass
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseBackupStorageClass.
func (*DatabaseBackupStorageClass) DeepCopyInto ¶
func (in *DatabaseBackupStorageClass) DeepCopyInto(out *DatabaseBackupStorageClass)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DatabaseBackupStorageClass) DeepCopyObject ¶
func (in *DatabaseBackupStorageClass) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type DatabaseBackupStorageClassList ¶
type DatabaseBackupStorageClassList struct { metav1.TypeMeta `json:",inline"` //revive:disable-line:struct-tag // "inline" is valid metav1.ListMeta `json:"metadata,omitempty"` Items []DatabaseBackupStorageClass `json:"items"` }
DatabaseBackupStorageClassList contains a list of DatabaseBackupStorageClass
+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:resource:scope=Cluster
func (*DatabaseBackupStorageClassList) DeepCopy ¶
func (in *DatabaseBackupStorageClassList) DeepCopy() *DatabaseBackupStorageClassList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseBackupStorageClassList.
func (*DatabaseBackupStorageClassList) DeepCopyInto ¶
func (in *DatabaseBackupStorageClassList) DeepCopyInto(out *DatabaseBackupStorageClassList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DatabaseBackupStorageClassList) DeepCopyObject ¶
func (in *DatabaseBackupStorageClassList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type DatabaseBackupStorageClassSpec ¶
type DatabaseBackupStorageClassSpec struct { // BackupLocations defines a number of locations the backups // written to this DatabaseBackupStorageClass should be uploaded // to. // // +kubebuilder:validation:MinItems=1 BackupLocations []DatabaseBackupStorageLocation `json:"backupLocations"` }
DatabaseBackupStorageClassSpec contains a list of locations to write the backups to when using this DatabaseBackupStorageClass
+kubebuilder:object:generate=true
func (*DatabaseBackupStorageClassSpec) DeepCopy ¶
func (in *DatabaseBackupStorageClassSpec) DeepCopy() *DatabaseBackupStorageClassSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseBackupStorageClassSpec.
func (*DatabaseBackupStorageClassSpec) DeepCopyInto ¶
func (in *DatabaseBackupStorageClassSpec) DeepCopyInto(out *DatabaseBackupStorageClassSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DatabaseBackupStorageClassSpec) FetchSecrets ¶
func (d *DatabaseBackupStorageClassSpec) FetchSecrets(ctx context.Context, client kubernetes.Interface, namespace string) error
FetchSecrets iterates through all Secret resources inside the spec and pulls their values from the original locations into the local instance
type DatabaseBackupStorageLocation ¶
type DatabaseBackupStorageLocation struct { // StorageType defines which storage engine to load for this // storage location // // +kubebuilder:validation:Enum={s3} StorageType string `json:"storageType"` // StorageEndpoint defines the MinIO / S3 endpoint to connect to StorageEndpoint string `json:"storageEndpoint"` // StorageAccessKeyID and StorageSecretAccessKey define the // credentials to access the StorageBucket StorageAccessKeyID Secret `json:"storageAccessKeyID"` StorageSecretAccessKey Secret `json:"storageSecretAccessKey"` // StorageBucket defines to which bucket to upload the files StorageBucket string `json:"storageBucket"` // StorageLocation defines the location the bucket exists in // (i.e. "minio", "eu-west-1", ...) StorageLocation string `json:"storageLocation"` // StorageUseSSL defines whether to use TLS encrypted connection // to storage // // +kubebuilder:validation:Optional // +kubebuilder:default=false StorageUseSSL bool `json:"storageUseSSL"` // StorageInsecureSkipVerify defines whether to skip TLS cert // verify as of unknown CA / ... // // +kubebuilder:validation:Optional // +kubebuilder:default=false StorageInsecureSkipVerify bool `json:"storageInsecureSkipVerify"` // EncryptionPass defines the passphrase to be used to encrypt the // backup before writing it to the storage server specified in this // location. Leaving this empty will DISABLE encryption! // // +kubebuilder:validation:Optional EncryptionPass Secret `json:"encryptionPass"` }
DatabaseBackupStorageLocation describes how to connect to the storage location for uploading the backup
+kubebuilder:object:generate=true
func (*DatabaseBackupStorageLocation) DeepCopy ¶
func (in *DatabaseBackupStorageLocation) DeepCopy() *DatabaseBackupStorageLocation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseBackupStorageLocation.
func (*DatabaseBackupStorageLocation) DeepCopyInto ¶
func (in *DatabaseBackupStorageLocation) DeepCopyInto(out *DatabaseBackupStorageLocation)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MySQLConfig ¶
type MySQLConfig struct { // Database specifies the database to be backed up Database string `json:"database"` // Host specifies the IP or DNS name to connect to Host string `json:"host"` // Pass specifies a reference to or the value of the users password Pass Secret `json:"pass"` // Port specifies the port the database is listening on (usually 3306) Port int64 `json:"port"` // User specifies the user or a reference to it to use for connection User Secret `json:"user"` }
MySQLConfig contains the values required for the backup-engine to backup a single database on a MySQL server
+kubebuilder:object:generate=true
func (*MySQLConfig) DeepCopy ¶
func (in *MySQLConfig) DeepCopy() *MySQLConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MySQLConfig.
func (*MySQLConfig) DeepCopyInto ¶
func (in *MySQLConfig) DeepCopyInto(out *MySQLConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PostgresConfig ¶
type PostgresConfig struct { // Database specifies the database to be backed up Database string `json:"database"` // Host specifies the IP or DNS name to connect to Host string `json:"host"` // Port specifies the port the database is listening on (usually 3306) Port int64 `json:"port"` // User specifies the user or a reference to it to use for connection User string `json:"user"` // Pass specifies a reference to or the value of the users password Pass Secret `json:"pass"` }
PostgresConfig contains the values required for the backup-engine to backup a single database on a Postgres server
+kubebuilder:object:generate=true
func (*PostgresConfig) DeepCopy ¶
func (in *PostgresConfig) DeepCopy() *PostgresConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PostgresConfig.
func (*PostgresConfig) DeepCopyInto ¶
func (in *PostgresConfig) DeepCopyInto(out *PostgresConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Secret ¶
type Secret struct { // Value specifies a plain text value for the secret. When filled // this will prevent the lookup of the FromSecret reference. // // +kubebuilder:validation:Optional Value string `json:"value"` // FromSecret references a secret to fetch the value from // // +kubebuilder:validation:Optional FromSecret SecretKeyRef `json:"fromSecret"` }
Secret contains an optional Value or reference to fetch the value FromSecret
func (*Secret) CopyFromSecret ¶
func (s *Secret) CopyFromSecret(ctx context.Context, client kubernetes.Interface, namespace string) error
CopyFromSecret fetches the secret given in the reference and copies the content of the key into the Value
func (*Secret) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Secret.
func (*Secret) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecretKeyRef ¶
type SecretKeyRef struct { // Name specifies the name of the secret to fetch the value from. // Must exist in the same namespace as the resource Name string `json:"name"` // Key specifies the key within the refereced secret to fetch the // value from Key string `json:"key"` }
SecretKeyRef contains information where to find the Secret information when fetching from cluster
func (*SecretKeyRef) DeepCopy ¶
func (in *SecretKeyRef) DeepCopy() *SecretKeyRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretKeyRef.
func (*SecretKeyRef) DeepCopyInto ¶
func (in *SecretKeyRef) DeepCopyInto(out *SecretKeyRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.