Documentation
¶
Overview ¶
Package v1 contains API Schema definitions for the database v1 API group +kubebuilder:object:generate=true +groupName=database.fits.cloud
Index ¶
- Constants
- Variables
- type AccessList
- type BackupConfig
- type Postgres
- func (p *Postgres) AddFinalizer(finalizerName string)
- func (in *Postgres) DeepCopy() *Postgres
- func (in *Postgres) DeepCopyInto(out *Postgres)
- func (in *Postgres) DeepCopyObject() runtime.Object
- func (p *Postgres) DisableLoadBalancers() bool
- func (p *Postgres) EnableDedicatedSVCLB() bool
- func (p *Postgres) EnableSharedSVCLB(enableForceSharedIP bool) bool
- func (p *Postgres) HasFinalizer(finalizerName string) bool
- func (p *Postgres) HasSourceRanges() bool
- func (p *Postgres) IsBeingDeleted() bool
- func (p *Postgres) IsReplicationPrimaryOrStandalone() bool
- func (p *Postgres) IsReplicationTarget() bool
- func (p *Postgres) RemoveFinalizer(finalizerName string)
- func (p *Postgres) ToBackupSecretName() string
- func (p *Postgres) ToCWNP(port int) (*firewall.ClusterwideNetworkPolicy, error)
- func (p *Postgres) ToDNSName(tlsSubDomain string) string
- func (p *Postgres) ToDedicatedSvcLB(lbIP string, lbPort int32, standbyClustersSourceRanges []string, ...) *corev1.Service
- func (p *Postgres) ToDedicatedSvcLBName() string
- func (p *Postgres) ToDedicatedSvcLBNamespacedName() *types.NamespacedName
- func (p *Postgres) ToKey() *types.NamespacedName
- func (p *Postgres) ToPeripheralResourceLookupKey() types.NamespacedName
- func (p *Postgres) ToPeripheralResourceName() string
- func (p *Postgres) ToPeripheralResourceNamespace() string
- func (p *Postgres) ToSharedSvcLB(lbIP string, lbPort int32, enableStandbyLeaderSelector bool, ...) *corev1.Service
- func (p *Postgres) ToSharedSvcLBName() string
- func (p *Postgres) ToSharedSvcLBNamespacedName() *types.NamespacedName
- func (p *Postgres) ToStandbyClusterEgresCWNPName() string
- func (p *Postgres) ToStandbyClusterEgressCWNP() (*firewall.ClusterwideNetworkPolicy, error)
- func (p *Postgres) ToStandbyClusterIngresCWNPName() string
- func (p *Postgres) ToStandbyClusterIngressCWNP(sourceCIDRs []string) (*firewall.ClusterwideNetworkPolicy, error)
- func (p *Postgres) ToTLSSecretName() string
- func (p *Postgres) ToUnstructuredZalandoPostgresql(z *zalando.Postgresql, c *corev1.ConfigMap, sc string, ...) (*unstructured.Unstructured, error)
- func (p *Postgres) ToUserPasswordSecretMatchingLabels() map[string]string
- func (p *Postgres) ToUserPasswordsSecret(src *corev1.SecretList, scheme *runtime.Scheme) (*corev1.Secret, error)
- func (p *Postgres) ToUserPasswordsSecretListOption() []client.ListOption
- func (p *Postgres) ToUserPasswordsSecretName() string
- func (p *Postgres) ToZalandoPostgresqlMatchingLabels() client.MatchingLabels
- type PostgresConnection
- type PostgresList
- type PostgresRestore
- type PostgresSpec
- type PostgresStatus
- type Size
- type Socket
Constants ¶
const ( // UIDLabelName Name of the label referencing the owning Postgres resource uid in the control cluster UIDLabelName string = "postgres.database.fits.cloud/uid" // NameLabelName Name of the label referencing the owning Postgres resource name in the control cluster (which might not be unique) NameLabelName string = "postgres.database.fits.cloud/name" // TenantLabelName Name of the tenant label TenantLabelName string = "postgres.database.fits.cloud/tenant" // ProjectIDLabelName Name of the ProjectID label ProjectIDLabelName string = "postgres.database.fits.cloud/project-id" // ManagedByLabelName Name of the managed-by label ManagedByLabelName string = "postgres.database.fits.cloud/managed-by" // ManagedByLabelValue Value of the managed-by label ManagedByLabelValue string = "postgreslet" // PostgresFinalizerName Name of the finalizer to use PostgresFinalizerName string = "postgres.finalizers.database.fits.cloud" // CreatedByAnnotationKey is used to store who in person created this database CreatedByAnnotationKey string = "postgres.database.fits.cloud/created-by" // BackupConfigLabelName if set to true, this secret stores the backupConfig BackupConfigLabelName string = "postgres.database.fits.cloud/is-backup" // BackupConfigKey defines the key under which the BackupConfig is stored in the data map. BackupConfigKey = "config" SharedBufferParameterKey = "shared_buffers" // StandbyKey defines the key under which the standby configuration is stored in the CR. Defined by the postgres-operator/patroni StandbyKey = "standby" StandbyMethod = "streaming_host" // PartitionIDLabelName Name of the managed-by label PartitionIDLabelName string = "postgres.database.fits.cloud/partition-id" // PostgresVersionLabelName Name of the version label PostgresVersionLabelName string = "postgres.database.fits.cloud/version" ApplicationLabelName = "application" ApplicationLabelValue = "spilo" SpiloRoleLabelName = "spilo-role" SpiloRoleLabelValueMaster = "master" SpiloRoleLabelValueStandbyLeader = "standby_leader" StatefulsetPodNameLabelName = "statefulset.kubernetes.io/pod-name" ClusterNameLabelName = "cluster-name" DefaultPatroniParamValueLoopWait uint32 = 10 DefaultPatroniParamValueRetryTimeout uint32 = 10 // PostgresAutoAssignedIPNamePrefix a prefix to add to the generated random name PostgresAutoAssignedIPNamePrefix = "pgaas-autoassign-" // PostgresAutoAssignedIPLabelKey tag to identify ips auto-assigned for a postgres PostgresAutoAssignedIPLabelKey = "postgres.database.fits.cloud/auto-assigned-ip" // PostgresAutoAssignedIPLabel tag to identify ips auto-assigned for a postgres PostgresAutoAssignedIPLabel = PostgresAutoAssignedIPLabelKey + "=true" PostresConfigSuperUsername = "postgres" PostgresConfigReplicationUsername = "standby" PostgresConfigAuditorUsername = "auditor" PostgresConfigMonitoringUsername = "monitoring" )
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "database.fits.cloud", Version: "v1"} // 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 )
var SvcLoadBalancerLabel = map[string]string{ ManagedByLabelName: ManagedByLabelValue, }
var (
ZalandoPostgresqlTypeMeta = metav1.TypeMeta{
APIVersion: "acid.zalan.do/v1",
Kind: "postgresql",
}
)
Functions ¶
This section is empty.
Types ¶
type AccessList ¶
type AccessList struct {
// SourceRanges defines a list of prefixes in CIDR Notation e.g. 1.2.3.0/24 or fdaa::/104
SourceRanges []string `json:"sourceRanges,omitempty"`
}
AccessList defines the type of restrictions to access the database
func (*AccessList) DeepCopy ¶
func (in *AccessList) DeepCopy() *AccessList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessList.
func (*AccessList) DeepCopyInto ¶
func (in *AccessList) DeepCopyInto(out *AccessList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BackupConfig ¶
type BackupConfig struct {
// ID of this backupConfig
ID string `json:"id"`
// Name is a user defined description
Name string `json:"name"`
// ProjectID the project this backup is mapped to
ProjectID string `json:"project"`
// Tenant the tenant of the backup
Tenant string `json:"tenant"`
// CreatedBy is the name of the person or technical account which created this backupConfig
CreatedBy string `json:"createdBy"`
// Retention defines how many versions should be held in s3
Retention string `json:"retention"`
// Schedule in cron syntax when to run the backup periodically
Schedule string `json:"schedule"`
// S3Endpoint the url of the s3 endpoint
S3Endpoint string `json:"s3endpoint"`
// S3BucketName is the name of the bucket where the backup should be stored.
S3BucketName string `json:"s3bucketname"`
// S3Region the region of the aws s3
S3Region string `json:"s3region"`
// S3AccessKey is the accesskey which must have write access
S3AccessKey string `json:"s3accesskey"`
// S3SecretKey is the secretkey which must match to the accesskey
S3SecretKey string `json:"s3secretkey"`
// S3EncryptionKey if set, server side s3 encryption is used.
S3EncryptionKey *string `json:"s3encryptionkey,omitempty"`
}
BackupConfig defines all properties to configure backup of a database. This config is stored in the data section under the key BackupConfigKey as json payload.
func (*BackupConfig) DeepCopy ¶
func (in *BackupConfig) DeepCopy() *BackupConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupConfig.
func (*BackupConfig) DeepCopyInto ¶
func (in *BackupConfig) DeepCopyInto(out *BackupConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Postgres ¶
type Postgres struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec PostgresSpec `json:"spec,omitempty"`
Status PostgresStatus `json:"status,omitempty"`
}
Postgres is the Schema for the postgres API
func (*Postgres) AddFinalizer ¶
func (*Postgres) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Postgres.
func (*Postgres) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Postgres) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Postgres) DisableLoadBalancers ¶ added in v0.18.0
func (*Postgres) EnableDedicatedSVCLB ¶ added in v0.14.0
func (*Postgres) EnableSharedSVCLB ¶ added in v0.14.0
func (*Postgres) HasFinalizer ¶
func (*Postgres) HasSourceRanges ¶
HasSourceRanges returns true if SourceRanges are set
func (*Postgres) IsBeingDeleted ¶
IsBeingDeleted returns true if the deletion-timestamp is set
func (*Postgres) IsReplicationPrimaryOrStandalone ¶ added in v0.16.0
func (*Postgres) IsReplicationTarget ¶ added in v0.12.1
func (*Postgres) RemoveFinalizer ¶
func (*Postgres) ToBackupSecretName ¶
ToBackupSecretName returns the name of the secret containing backup credentials
func (*Postgres) ToCWNP ¶
func (p *Postgres) ToCWNP(port int) (*firewall.ClusterwideNetworkPolicy, error)
ToCWNP returns CRD ClusterwideNetworkPolicy derived from CRD Postgres
func (*Postgres) ToDedicatedSvcLB ¶ added in v0.12.0
func (*Postgres) ToDedicatedSvcLBName ¶ added in v0.12.0
ToSharedSvcLBName returns the name of the peripheral resource Service LoadBalancer. It's different from all other peripheral resources because the operator already generates one service with that name.
func (*Postgres) ToDedicatedSvcLBNamespacedName ¶ added in v0.12.0
func (p *Postgres) ToDedicatedSvcLBNamespacedName() *types.NamespacedName
func (*Postgres) ToKey ¶
func (p *Postgres) ToKey() *types.NamespacedName
func (*Postgres) ToPeripheralResourceLookupKey ¶
func (p *Postgres) ToPeripheralResourceLookupKey() types.NamespacedName
func (*Postgres) ToPeripheralResourceName ¶
func (*Postgres) ToPeripheralResourceNamespace ¶
func (*Postgres) ToSharedSvcLB ¶ added in v0.12.0
func (*Postgres) ToSharedSvcLBName ¶ added in v0.12.0
ToSharedSvcLBName returns the name of the peripheral resource Service LoadBalancer. It's different from all other peripheral resources because the operator already generates one service with that name.
func (*Postgres) ToSharedSvcLBNamespacedName ¶ added in v0.12.0
func (p *Postgres) ToSharedSvcLBNamespacedName() *types.NamespacedName
func (*Postgres) ToStandbyClusterEgresCWNPName ¶ added in v0.4.0
func (*Postgres) ToStandbyClusterEgressCWNP ¶ added in v0.4.0
func (p *Postgres) ToStandbyClusterEgressCWNP() (*firewall.ClusterwideNetworkPolicy, error)
func (*Postgres) ToStandbyClusterIngresCWNPName ¶ added in v0.4.0
func (*Postgres) ToStandbyClusterIngressCWNP ¶ added in v0.4.0
func (p *Postgres) ToStandbyClusterIngressCWNP(sourceCIDRs []string) (*firewall.ClusterwideNetworkPolicy, error)
func (*Postgres) ToTLSSecretName ¶ added in v0.14.0
func (*Postgres) ToUnstructuredZalandoPostgresql ¶
func (p *Postgres) ToUnstructuredZalandoPostgresql(z *zalando.Postgresql, c *corev1.ConfigMap, sc string, pgParamBlockList map[string]bool, rbs *BackupConfig, srcDB *Postgres, patroniTTL, patroniLoopWait, patroniRetryTimeout uint32, dboIsSuperuser bool, enableTlsCert bool, image string) (*unstructured.Unstructured, error)
func (*Postgres) ToUserPasswordSecretMatchingLabels ¶
func (*Postgres) ToUserPasswordsSecret ¶
func (p *Postgres) ToUserPasswordsSecret(src *corev1.SecretList, scheme *runtime.Scheme) (*corev1.Secret, error)
ToUserPasswordsSecret returns the secret containing user password pairs
func (*Postgres) ToUserPasswordsSecretListOption ¶
func (p *Postgres) ToUserPasswordsSecretListOption() []client.ListOption
ToUserPasswordsSecretListOption returns the argument for listing secrets
func (*Postgres) ToUserPasswordsSecretName ¶
ToUserPasswordsSecretName returns the name of the secret containing user password pairs
func (*Postgres) ToZalandoPostgresqlMatchingLabels ¶
func (p *Postgres) ToZalandoPostgresqlMatchingLabels() client.MatchingLabels
type PostgresConnection ¶ added in v0.4.0
type PostgresConnection struct {
// ConnectedPostgresID internal ID of the connected Postgres instance
ConnectedPostgresID string `json:"postgresID,omitempty"`
// ConnectionSecretName name of the internal secret used to connect to the remote postgres
ConnectionSecretName string `json:"secretName,omitempty"`
// ConnectionIP IP of the remote postgres
ConnectionIP string `json:"ip,omitempty"`
// ConnectionPort port of the remote postgres
ConnectionPort uint16 `json:"port,omitempty"`
// SynchronousReplication determines if async or sync replication is used for the standby postgres
SynchronousReplication bool `json:"synchronous,omitempty"`
// ReplicationPrimary determines if THIS side of the connection is the primary or the standby side
ReplicationPrimary bool `json:"localSideIsPrimary,omitempty"`
}
PostgresConnection A remote postgres instance this one is linked to, e.g. for standby purposes.
func (*PostgresConnection) DeepCopy ¶ added in v0.4.0
func (in *PostgresConnection) DeepCopy() *PostgresConnection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PostgresConnection.
func (*PostgresConnection) DeepCopyInto ¶ added in v0.4.0
func (in *PostgresConnection) DeepCopyInto(out *PostgresConnection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PostgresList ¶
type PostgresList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Postgres `json:"items"`
}
PostgresList contains a list of Postgres
func (*PostgresList) DeepCopy ¶
func (in *PostgresList) DeepCopy() *PostgresList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PostgresList.
func (*PostgresList) DeepCopyInto ¶
func (in *PostgresList) DeepCopyInto(out *PostgresList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PostgresList) DeepCopyObject ¶
func (in *PostgresList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PostgresRestore ¶ added in v0.5.0
type PostgresRestore struct {
// SourcePostgresID internal ID of the Postgres instance to whose backup to restore
SourcePostgresID string `json:"postgresID,omitempty"`
// Timestamp The point in time to recover. Must be set, or the clone with switch from WALs from the S3 to a basebackup via direct sql connection (which won't work when the source db is managed by another posgres-operator)
Timestamp string `json:"timestamp,omitempty"`
}
Restore defines what to restore from where
func (*PostgresRestore) DeepCopy ¶ added in v0.5.0
func (in *PostgresRestore) DeepCopy() *PostgresRestore
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PostgresRestore.
func (*PostgresRestore) DeepCopyInto ¶ added in v0.5.0
func (in *PostgresRestore) DeepCopyInto(out *PostgresRestore)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PostgresSpec ¶
type PostgresSpec struct {
// Description
Description string `json:"description,omitempty"`
// ProjectID metal project ID
ProjectID string `json:"projectID,omitempty"`
// Tenant metal tenant
Tenant string `json:"tenant,omitempty"`
// PartitionID the partition where the database is created
PartitionID string `json:"partitionID,omitempty"`
// NumberOfInstances number of replicas
// +kubebuilder:validation:Minimum=1
// +kubebuilder:default=1
NumberOfInstances int32 `json:"numberOfInstances,omitempty"`
// Version is the version of Postgre-as-a-Service
Version string `json:"version,omitempty"`
// Size of the database
Size *Size `json:"size,omitempty"`
// todo: add default
// Maintenance defines automatic maintenance of the database
Maintenance []string `json:"maintenance,omitempty"`
// AccessList defines access restrictions
AccessList *AccessList `json:"accessList,omitempty"`
// BackupSecretRef reference to the secret where the backup credentials are stored
BackupSecretRef string `json:"backupSecretRef,omitempty"`
// PostgresRestore
PostgresRestore *PostgresRestore `json:"restore,omitempty"`
// PostgresConnection Connection info of a streaming host, independent of the current role (leader or standby)
PostgresConnection *PostgresConnection `json:"connection,omitempty"`
// AuditLogs enable or disable default audit logs
AuditLogs *bool `json:"auditLogs,omitempty"`
// PostgresParams additional parameters that are passed along to the postgres config
PostgresParams map[string]string `json:"postgresParams,omitempty"`
// DedicatedLoadBalancerIP The ip to use for the load balancer
DedicatedLoadBalancerIP *string `json:"dedicatedLoadBalancerIP,omitempty"`
// DedicatedLoadBalancerPort The port to use for the load balancer
DedicatedLoadBalancerPort *int32 `json:"dedicatedLoadBalancerPort,omitempty"`
// DisableLoadBalancers enable or disable the Load Balancers (Services)
DisableLoadBalancers *bool `json:"disableLoadBalancers,omitempty"`
}
PostgresSpec defines the desired state of Postgres
func (*PostgresSpec) DeepCopy ¶
func (in *PostgresSpec) DeepCopy() *PostgresSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PostgresSpec.
func (*PostgresSpec) DeepCopyInto ¶
func (in *PostgresSpec) DeepCopyInto(out *PostgresSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PostgresStatus ¶
type PostgresStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
Description string `json:"description,omitempty"`
Socket Socket `json:"socket,omitempty"`
AdditionalSockets []Socket `json:"additionalSockets,omitempty"`
ChildName string `json:"childName,omitempty"`
}
PostgresStatus defines the observed state of Postgres
func (*PostgresStatus) DeepCopy ¶
func (in *PostgresStatus) DeepCopy() *PostgresStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PostgresStatus.
func (*PostgresStatus) DeepCopyInto ¶
func (in *PostgresStatus) DeepCopyInto(out *PostgresStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Size ¶
type Size struct {
// CPU is in the format as pod.spec.resource.request.cpu
CPU string `json:"cpu,omitempty"`
// Memory is in the format as pod.spec.resource.request.memory
Memory string `json:"memory,omitempty"`
SharedBuffer string `json:"sharedBuffer,omitempty"`
// Memoryfactor used to calculate the memory
MemoryFactor uint8 `json:"memoryfactor,omitempty"`
// StorageSize the amount of Storage this database will get
// +kubebuilder:default="1Gi"
// +kubebuilder:validation:Pattern=^[1-9][0-9]*Gi
StorageSize string `json:"storageSize,omitempty"`
}
Todo: Add defaults Size defines the size aspects of the database
func (*Size) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Size.
func (*Size) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Socket ¶
Socket represents load-balancer socket of Postgres
func (*Socket) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Socket.
func (*Socket) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.