Documentation
¶
Index ¶
- Constants
- type BackupScheduleSpec
- type DatabasePhase
- type InitSpec
- type LeaderElectionConfig
- type MySQL
- type MySQLClusterMode
- type MySQLClusterTopology
- type MySQLGroupMode
- type MySQLGroupSpec
- type MySQLList
- type MySQLSpec
- type MySQLStatus
- type MysqlOperator
- func (my *MysqlOperator) Convert(sg *apistructs.ServiceGroup) interface{}
- func (my *MysqlOperator) Create(k8syml interface{}) error
- func (my *MysqlOperator) Inspect(sg *apistructs.ServiceGroup) (*apistructs.ServiceGroup, error)
- func (my *MysqlOperator) IsSupported() bool
- func (my *MysqlOperator) Remove(sg *apistructs.ServiceGroup) error
- func (my *MysqlOperator) Update(k8syml interface{}) error
- func (my *MysqlOperator) Validate(sg *apistructs.ServiceGroup) error
- type ScriptSourceSpec
- type SnapshotSourceSpec
- type StorageType
- type TerminationPolicy
Constants ¶
View Source
const ( ResourceCodeMySQL = "my" ResourceKindMySQL = "MySQL" ResourceSingularMySQL = "mysql" ResourcePluralMySQL = "mysqls" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BackupScheduleSpec ¶
type BackupScheduleSpec struct {
CronExpression string `json:"cronExpression,omitempty"`
// Snapshot Spec
store.Backend `json:",inline"`
// StorageType can be durable or ephemeral.
// If not given, database storage type will be used.
// +optional
StorageType *StorageType `json:"storageType,omitempty"`
// PodTemplate is an optional configuration for pods used to take database snapshots
// +optional
PodTemplate ofst.PodTemplateSpec `json:"podTemplate,omitempty"`
// PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job.
// If not given, database's PvcSpec will be used.
// If storageType is durable, then a PVC will be created using this PVCSpec.
// If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage].
// +optional
PodVolumeClaimSpec *core.PersistentVolumeClaimSpec `json:"podVolumeClaimSpec,omitempty"`
}
type DatabasePhase ¶
type DatabasePhase string
const ( // used for Databases that are currently running DatabasePhaseRunning DatabasePhase = "Running" // used for Databases that are currently creating DatabasePhaseCreating DatabasePhase = "Creating" // used for Databases that are currently initializing DatabasePhaseInitializing DatabasePhase = "Initializing" // used for Databases that are Failed DatabasePhaseFailed DatabasePhase = "Failed" )
type InitSpec ¶
type InitSpec struct {
ScriptSource *ScriptSourceSpec `json:"scriptSource,omitempty"`
// Deprecated
SnapshotSource *SnapshotSourceSpec `json:"snapshotSource,omitempty"`
// PostgresWAL *PostgresWALSourceSpec `json:"postgresWAL,omitempty"`
// Name of stash restoreSession in same namespace of kubedb object.
// ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22
StashRestoreSession *core.LocalObjectReference `json:"stashRestoreSession,omitempty"`
}
type LeaderElectionConfig ¶
type LeaderElectionConfig struct {
// LeaseDuration is the duration in second that non-leader candidates will
// wait to force acquire leadership. This is measured against time of
// last observed ack. Default 15
LeaseDurationSeconds int32 `json:"leaseDurationSeconds"`
// RenewDeadline is the duration in second that the acting master will retry
// refreshing leadership before giving up. Normally, LeaseDuration * 2 / 3.
// Default 10
RenewDeadlineSeconds int32 `json:"renewDeadlineSeconds"`
// RetryPeriod is the duration in second the LeaderElector clients should wait
// between tries of actions. Normally, LeaseDuration / 3.
// Default 2
RetryPeriodSeconds int32 `json:"retryPeriodSeconds"`
}
LeaderElectionConfig contains essential attributes of leader election. ref: https://github.com/kubernetes/client-go/blob/6134db91200ea474868bc6775e62cc294a74c6c6/tools/leaderelection/leaderelection.go#L105-L114
type MySQL ¶
type MySQL struct {
metav1.TypeMeta `json:",inline,omitempty"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MySQLSpec `json:"spec,omitempty"`
Status MySQLStatus `json:"status,omitempty"`
}
Mysql defines a Mysql database.
type MySQLClusterMode ¶
type MySQLClusterMode string
const (
MySQLClusterModeGroup MySQLClusterMode = "GroupReplication"
)
type MySQLClusterTopology ¶
type MySQLClusterTopology struct {
// If set to -
// "GroupReplication", GroupSpec is required and MySQL servers will start a replication group
Mode *MySQLClusterMode `json:"mode,omitempty"`
// Group replication info for MySQL
Group *MySQLGroupSpec `json:"group,omitempty"`
}
type MySQLGroupMode ¶
type MySQLGroupMode string
const ( MySQLGroupModeSinglePrimary MySQLGroupMode = "Single-Primary" MySQLGroupModeMultiPrimary MySQLGroupMode = "Multi-Primary" )
type MySQLGroupSpec ¶
type MySQLGroupSpec struct {
// TODO: "Multi-Primary" needs to be implemented
// Group Replication can be deployed in either "Single-Primary" or "Multi-Primary" mode
Mode *MySQLGroupMode `json:"mode,omitempty"`
// Group name is a version 4 UUID
// ref: https://dev.mysql.com/doc/refman/5.7/en/group-replication-options.html#sysvar_group_replication_group_name
Name string `json:"name,omitempty"`
// On a replication master and each replication slave, the --server-id
// option must be specified to establish a unique replication ID in the
// range from 1 to 2^32 − 1. “Unique”, means that each ID must be different
// from every other ID in use by any other replication master or slave.
// ref: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_server_id
//
// So, BaseServerID is needed to calculate a unique server_id for each member.
BaseServerID *uint `json:"baseServerID,omitempty"`
}
type MySQLSpec ¶
type MySQLSpec struct {
// Version of MySQL to be deployed.
Version types.StrYo `json:"version"`
// Number of instances to deploy for a MySQL database. In case of MySQL group
// replication, max allowed value is 9 (default 3).
// (see ref: https://dev.mysql.com/doc/refman/5.7/en/group-replication-frequently-asked-questions.html)
Replicas *int32 `json:"replicas,omitempty"`
// MySQL cluster topology
Topology *MySQLClusterTopology `json:"topology,omitempty"`
// StorageType can be durable (default) or ephemeral
StorageType StorageType `json:"storageType,omitempty"`
// Storage spec to specify how storage shall be used.
Storage *core.PersistentVolumeClaimSpec `json:"storage,omitempty"`
// Database authentication secret
DatabaseSecret *core.SecretVolumeSource `json:"databaseSecret,omitempty"`
// Init is used to initialize database
// +optional
Init *InitSpec `json:"init,omitempty"`
// BackupSchedule spec to specify how database backup will be taken
// +optional
BackupSchedule *BackupScheduleSpec `json:"backupSchedule,omitempty"`
// Monitor is used monitor database instance
// +optional
Monitor *mona.AgentSpec `json:"monitor,omitempty"`
// ConfigSource is an optional field to provide custom configuration file for database (i.e custom-mysql.cnf).
// If specified, this file will be used as configuration file otherwise default configuration file will be used.
ConfigSource *core.VolumeSource `json:"configSource,omitempty"`
// PodTemplate is an optional configuration for pods used to expose database
// +optional
PodTemplate ofst.PodTemplateSpec `json:"podTemplate,omitempty"`
// ServiceTemplate is an optional configuration for service used to expose database
// +optional
ServiceTemplate ofst.ServiceTemplateSpec `json:"serviceTemplate,omitempty"`
// updateStrategy indicates the StatefulSetUpdateStrategy that will be
// employed to update Pods in the StatefulSet when a revision is made to
// Template.
UpdateStrategy apps.StatefulSetUpdateStrategy `json:"updateStrategy,omitempty"`
// TerminationPolicy controls the delete operation for database
// +optional
TerminationPolicy TerminationPolicy `json:"terminationPolicy,omitempty"`
}
type MySQLStatus ¶
type MySQLStatus struct {
Phase DatabasePhase `json:"phase,omitempty"`
Reason string `json:"reason,omitempty"`
// observedGeneration is the most recent generation observed for this resource. It corresponds to the
// resource's generation, which is updated on mutation by the API Server.
// +optional
ObservedGeneration *types.IntHash `json:"observedGeneration,omitempty"`
}
type MysqlOperator ¶
type MysqlOperator struct {
// contains filtered or unexported fields
}
func New ¶
func New(k8s addon.K8SUtil, ns addon.NamespaceUtil, secret addon.SecretUtil, pvc addon.PVCUtil, client *httpclient.HTTPClient) *MysqlOperator
func (*MysqlOperator) Convert ¶
func (my *MysqlOperator) Convert(sg *apistructs.ServiceGroup) interface{}
func (*MysqlOperator) Create ¶
func (my *MysqlOperator) Create(k8syml interface{}) error
func (*MysqlOperator) Inspect ¶
func (my *MysqlOperator) Inspect(sg *apistructs.ServiceGroup) (*apistructs.ServiceGroup, error)
func (*MysqlOperator) IsSupported ¶
func (my *MysqlOperator) IsSupported() bool
func (*MysqlOperator) Remove ¶
func (my *MysqlOperator) Remove(sg *apistructs.ServiceGroup) error
func (*MysqlOperator) Update ¶
func (my *MysqlOperator) Update(k8syml interface{}) error
func (*MysqlOperator) Validate ¶
func (my *MysqlOperator) Validate(sg *apistructs.ServiceGroup) error
type ScriptSourceSpec ¶
type ScriptSourceSpec struct {
ScriptPath string `json:"scriptPath,omitempty"`
core.VolumeSource `json:",inline,omitempty"`
}
type SnapshotSourceSpec ¶
type StorageType ¶
type StorageType string
const ( // default storage type and requires spec.storage to be configured StorageTypeDurable StorageType = "Durable" // Uses emptyDir as storage StorageTypeEphemeral StorageType = "Ephemeral" )
type TerminationPolicy ¶
type TerminationPolicy string
const ( // Pauses database into a DormantDatabase TerminationPolicyPause TerminationPolicy = "Pause" // Deletes database pods, service, pvcs but leave the snapshot data intact. This will not create a DormantDatabase. TerminationPolicyDelete TerminationPolicy = "Delete" // Deletes database pods, service, pvcs and snapshot data. This will not create a DormantDatabase. TerminationPolicyWipeOut TerminationPolicy = "WipeOut" // Rejects attempt to delete database using ValidationWebhook. This replaces spec.doNotPause = true TerminationPolicyDoNotTerminate TerminationPolicy = "DoNotTerminate" )
Click to show internal directories.
Click to hide internal directories.