Documentation
¶
Overview ¶
Crunchy PostgreSQL Operator API
The Crunchy PostgreSQL Operator API defines HTTP(S) interactions with the Crunchy PostgreSQL Operator.
## Direct API Calls
The API can also be accessed by interacting directly with the API server. This can be done by making HTTP requests with curl to get information from the server. In order to make these calls you will need to provide certificates along with your request using the `--cacert`, `--key`, and `--cert` flags. Next you will need to provide the username and password for the RBAC along with a header that includes the content type and the `--insecure` flag. These flags will be the same for all of your interactions with the API server and can be seen in the following examples.
###### Get API Server Version
The most basic example of this interaction is getting the version of the API server. You can send a GET request to `$PGO_APISERVER_URL/version` and this will send back a json response including the API server version. You must specify the client version that matches the API server version as part of the request.
The API server is setup to work with the pgo command line interface so the parameters that are passed to the server can be found by looking at the related flags. ``` curl --cacert $PGO_CA_CERT --key $PGO_CLIENT_KEY --cert $PGO_CA_CERT -u \ admin:examplepassword -H "Content-Type:application/json" --insecure -X \ GET $PGO_APISERVER_URL/version ```
#### Body examples In the following examples data is being passed to the apiserver using a json structure. These json structures are defined in the following documentation.
``` curl --cacert $PGO_CA_CERT --key $PGO_CLIENT_KEY --cert $PGO_CA_CERT -u \ admin:examplepassword -H "Content-Type:application/json" --insecure -X GET \ "$PGO_APISERVER_URL/workflow/<id>?version=<client-version>&namespace=<namespace>" ```
###### Create Cluster You can create a cluster by sending a POST request to `$PGO_APISERVER_URL/clusters`. In this example `--data` is being sent to the API URL that includes the client version that was returned from the version call, the namespace where the cluster should be created, and the name of the new cluster.
``` curl --cacert $PGO_CA_CERT --key $PGO_CLIENT_KEY --cert $PGO_CA_CERT -u \ admin:examplepassword -H "Content-Type:application/json" --insecure -X \
POST --data \ '{"ClientVersion":"4.5.3", "Namespace":"pgouser1", "Name":"mycluster",
$PGO_APISERVER_URL/clusters ```
###### Show and Delete Cluster The last two examples show you how to `show` and `delete` a cluster. Notice how instead of passing `"Name":"mycluster"` you pass `"Clustername":"mycluster" to reference a cluster that has already been created. For the show cluster example you can replace `"Clustername":"mycluster"` with `"AllFlag":true` to show all of the clusters that are in the given namespace.
``` curl --cacert $PGO_CA_CERT --key $PGO_CLIENT_KEY --cert $PGO_CA_CERT -u \ admin:examplepassword -H "Content-Type:application/json" --insecure -X \
POST --data \ '{"ClientVersion":"4.5.3", "Namespace":"pgouser1", "Clustername":"mycluster"}' \
$PGO_APISERVER_URL/showclusters ```
``` curl --cacert $PGO_CA_CERT --key $PGO_CLIENT_KEY --cert $PGO_CA_CERT -u \ admin:examplepassword -H "Content-Type:application/json" --insecure -X \
POST --data \ '{"ClientVersion":"4.5.3", "Namespace":"pgouser1", "Clustername":"mycluster"}' \
$PGO_APISERVER_URL/clustersdelete ```
Schemes: http, https BasePath: / Version: 4.5.3 License: Apache 2.0 http://www.apache.org/licenses/LICENSE-2.0 Contact: Crunchy Data<info@crunchydata.com> https://www.crunchydata.com/ Consumes: - application/json Produces: - application/json
swagger:meta
Index ¶
- Constants
- Variables
- func Kind(kind string) schema.GroupKind
- func Resource(resource string) schema.GroupResource
- type ClusterAnnotationType
- type ClusterAnnotations
- type PGDataSourceSpec
- type PgBouncerSpec
- type PgStorageSpec
- type Pgcluster
- type PgclusterList
- type PgclusterSpec
- type PgclusterState
- type PgclusterStatus
- type Pgpolicy
- type PgpolicyList
- type PgpolicySpec
- type PgpolicyState
- type PgpolicyStatus
- type Pgreplica
- type PgreplicaList
- type PgreplicaSpec
- type PgreplicaState
- type PgreplicaStatus
- type Pgtask
- type PgtaskList
- type PgtaskSpec
- type PgtaskState
- type PgtaskStatus
- type PodAntiAffinityDeployment
- type PodAntiAffinitySpec
- type PodAntiAffinityType
- type TLSSpec
Constants ¶
const ( // PgclusterStateCreated ... PgclusterStateCreated PgclusterState = "pgcluster Created" // PgclusterStateProcessed ... PgclusterStateProcessed PgclusterState = "pgcluster Processed" // PgclusterStateInitialized ... PgclusterStateInitialized PgclusterState = "pgcluster Initialized" // PgclusterStateBootstrapping defines the state of a cluster when it is being bootstrapped // from an existing data source PgclusterStateBootstrapping PgclusterState = "pgcluster Bootstrapping" // PgclusterStateBootstrapped defines the state of a cluster when it has been bootstrapped // successfully from an existing data source PgclusterStateBootstrapped PgclusterState = "pgcluster Bootstrapped" // PgclusterStateRestore ... PgclusterStateRestore PgclusterState = "pgcluster Restoring" // PgclusterStateShutdown indicates that the cluster has been shut down (i.e. the primary) // deployment has been scaled to 0 PgclusterStateShutdown PgclusterState = "pgcluster Shutdown" // PodAntiAffinityRequired results in requiredDuringSchedulingIgnoredDuringExecution for any // default pod anti-affinity rules applied to pg custers PodAntiAffinityRequired PodAntiAffinityType = "required" // PodAntiAffinityPreffered results in preferredDuringSchedulingIgnoredDuringExecution for any // default pod anti-affinity rules applied to pg custers PodAntiAffinityPreffered PodAntiAffinityType = "preferred" // PodAntiAffinityDisabled disables any default pod anti-affinity rules applied to pg custers PodAntiAffinityDisabled PodAntiAffinityType = "disabled" )
const ( // PGUserAdmin is a special user that can perform administrative actions // without being a superuser itself PGUserAdmin = "crunchyadm" // PGUserMonitor is the monitoring user that can access metric data PGUserMonitor = "ccp_monitoring" // PGUserPgBouncer is the user that's used for managing pgBouncer, which a // user can use to access pgBouncer stats, etc. PGUserPgBouncer = "pgbouncer" // PGUserReplication is the user that's used for replication, which has // elevated privileges PGUserReplication = "primaryuser" // PGUserSuperuser is the superuser account that can do anything PGUserSuperuser = "postgres" )
the following are standard PostgreSQL user service accounts that are created as part of managed the PostgreSQL cluster environment via the Operator
const ( // this type of backup is taken following a failover event BackupTypeFailover string = "failover" // this type of backup is taken when a new cluster is being bootstrapped BackupTypeBootstrap string = "bootstrap" )
Defines the types of pgBackRest backups that are taken throughout a clusters lifecycle
const CompletedStatus = "completed"
CompletedStatus -
const ExporterSecretSuffix = "-exporter-secret"
ExporterSecretSuffix ...
const GroupName = "crunchydata.com"
GroupName is the group name used in this package. const GroupName = "cr.client-go.k8s.io"
const InProgressStatus = "in progress"
InProgressStatus -
const JobCompletedStatus = "job completed"
JobCompletedStatus ....
const JobErrorStatus = "job error"
JobErrorStatus ....
const JobSubmittedStatus = "job submitted"
JobSubmittedStatus ....
const PgBackupJobSubmitted = "Backup Job Submitted"
this is ported over from legacy backup code
const PgclusterResourcePlural = "pgclusters"
PgclusterResourcePlural ..
const PgpolicyResourcePlural = "pgpolicies"
PgpolicyResourcePlural ...
const PgreplicaResourcePlural = "pgreplicas"
PgreplicaResourcePlural ..
const PgtaskAddPolicies = "addpolicies"
const PgtaskAutoFailover = "autofailover"
const PgtaskBackrest = "backrest"
const PgtaskBackrestBackup = "backup"
const PgtaskBackrestInfo = "info"
const PgtaskBackrestRestore = "restore"
const PgtaskBackrestStanzaCreate = "stanza-create"
const PgtaskCloneStep1 = "clone-step1" // performs a pgBackRest repo sync
const PgtaskCloneStep2 = "clone-step2" // performs a pgBackRest restore
const PgtaskCloneStep3 = "clone-step3" // creates the Pgcluster
const PgtaskDeleteBackups = "delete-backups"
const PgtaskDeleteData = "delete-data"
const PgtaskFailover = "failover"
const PgtaskPgAdminAdd = "add-pgadmin"
const PgtaskPgAdminDelete = "delete-pgadmin"
const PgtaskResourcePlural = "pgtasks"
PgtaskResourcePlural ...
const PgtaskUpgrade = "clusterupgrade"
const PgtaskUpgradeCreated = "cluster upgrade - task created"
const PgtaskUpgradeInProgress = "cluster upgrade - in progress"
const PgtaskWorkflow = "workflow"
const PgtaskWorkflowBackrestRestoreJobCreatedStatus = "restore job created"
const PgtaskWorkflowBackrestRestorePVCCreatedStatus = "restored PVC created"
const PgtaskWorkflowBackrestRestorePrimaryCreatedStatus = "restored Primary created"
const PgtaskWorkflowBackrestRestoreType = "pgbackrestrestore"
const PgtaskWorkflowBackupType = "backupworkflow"
const PgtaskWorkflowCloneClusterCreate = "clone 3: cluster creating"
const PgtaskWorkflowCloneCreatePVC = "clone 1.1: create pvc"
const PgtaskWorkflowCloneRestoreBackup = "clone 2: restoring backup"
const PgtaskWorkflowCloneSyncRepo = "clone 1.2: sync pgbackrest repo"
const PgtaskWorkflowCloneType = "cloneworkflow"
const PgtaskWorkflowCompletedStatus = "task completed"
const PgtaskWorkflowCreateClusterType = "createcluster"
const PgtaskWorkflowID = "workflowid"
const PgtaskWorkflowSubmittedStatus = "task submitted"
const PgtaskpgDump = "pgdump"
const PgtaskpgDumpBackup = "pgdumpbackup"
const PgtaskpgDumpInfo = "pgdumpinfo"
const PgtaskpgRestore = "pgrestore"
const PrimarySecretSuffix = "-primaryuser-secret"
PrimarySecretSuffix ...
const RootSecretSuffix = "-postgres-secret"
RootSecretSuffix ...
const StorageCreate = "create"
StorageCreate ...
const StorageDynamic = "dynamic"
StorageDynamic ...
const StorageEmptydir = "emptydir"
StorageEmptydir ...
const StorageExisting = "existing"
StorageExisting ...
const SubmittedStatus = "submitted"
SubmittedStatus -
const UserSecretSuffix = "-secret"
UserSecretSuffix ...
Variables ¶
var ( // SchemeBuilder ... SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme ... AddToScheme = SchemeBuilder.AddToScheme )
var BackrestStorageTypes = []string{"local", "s3"}
BackrestStorageTypes defines the valid types of storage that can be utilized with pgBackRest
var PGFSGroup int64 = 26
PGFSGroup stores the UID of the PostgreSQL user that runs the PostgreSQL process, which is 26. This also sets up for future work, as the PodSecurityContext structure takes a *int64 for its FSGroup
This has to be a "var" as Kubernetes requires for this to be a pointer
var PGUserSystemAccounts = map[string]struct{}{ PGUserAdmin: {}, PGUserMonitor: {}, PGUserPgBouncer: {}, PGUserReplication: {}, PGUserSuperuser: {}, }
PGUserSystemAccounts maintains an easy-to-access list of what the systems accounts are, which may affect how information is returned, etc.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"}
SchemeGroupVersion is the group version used to register these objects.
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group-qualified GroupResource.
Types ¶
type ClusterAnnotationType ¶
type ClusterAnnotationType int
ClusterAnnotationType just helps with the various cluster annotation types available
const ( // ClusterAnnotationGlobal indicates to apply the annotation regardless of // deployment type ClusterAnnotationGlobal ClusterAnnotationType = iota // ClusterAnnotationPostgres indicates to apply the annotation to the // PostgreSQL deployments ClusterAnnotationPostgres // ClusterAnnotationBackrest indicates to apply the annotation to the // pgBackRest deployments ClusterAnnotationBackrest // ClusterAnnotationPgBouncer indicates to apply the annotation to the // pgBouncer deployments ClusterAnnotationPgBouncer )
the following constants help with selecting which annotations we may want to apply to a particular Deployment
type ClusterAnnotations ¶
type ClusterAnnotations struct { // Backrest annotations will be propagated **only** to the pgBackRest managed // Deployments Backrest map[string]string `json:"backrest"` // Global annotations will be propagated to **all** managed Deployments Global map[string]string `json:"global"` // PgBouncer annotations will be propagated **only** to the PgBouncer managed // Deployments PgBouncer map[string]string `json:"pgBouncer"` // Postgres annotations will be propagated **only** to the PostgreSQL managed // deployments Postgres map[string]string `json:"postgres"` }
ClusterAnnotations provides a set of annotations that can be propagated to the managed deployments. These are subdivided into four categories, which are explained further below:
- Global - Postgres - Backrest - PgBouncer
func (*ClusterAnnotations) DeepCopy ¶
func (in *ClusterAnnotations) DeepCopy() *ClusterAnnotations
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterAnnotations.
func (*ClusterAnnotations) DeepCopyInto ¶
func (in *ClusterAnnotations) DeepCopyInto(out *ClusterAnnotations)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PGDataSourceSpec ¶
type PGDataSourceSpec struct { RestoreFrom string `json:"restoreFrom"` RestoreOpts string `json:"restoreOpts"` }
PGDataSourceSpec defines the data source that should be used to populate the initial PGDATA directory when bootstrapping a new PostgreSQL cluster swagger:ignore
func (*PGDataSourceSpec) DeepCopy ¶
func (in *PGDataSourceSpec) DeepCopy() *PGDataSourceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PGDataSourceSpec.
func (*PGDataSourceSpec) DeepCopyInto ¶
func (in *PGDataSourceSpec) DeepCopyInto(out *PGDataSourceSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PgBouncerSpec ¶
type PgBouncerSpec struct { // Replicas represents the total number of Pods to deploy with pgBouncer, // which effectively enables/disables the pgBouncer. // // if it is set to 0 or less, it is disabled. // // if it is set to 1 or more, it is enabled Replicas int32 `json:"replicas"` // Resources, if specified, contains the container request resources // for any pgBouncer Deployments that are part of a PostgreSQL cluster Resources v1.ResourceList `json:"resources"` // Limits, if specified, contains the container resource limits // for any pgBouncer Deployments that are part of a PostgreSQL cluster Limits v1.ResourceList `json:"limits"` }
PgBouncerSpec is a struct that is used within the Cluster specification that provides the attributes for managing a PgBouncer implementation, including: - is it enabled? - what resources it should consume - the total number of replicas
func (*PgBouncerSpec) DeepCopy ¶
func (in *PgBouncerSpec) DeepCopy() *PgBouncerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgBouncerSpec.
func (*PgBouncerSpec) DeepCopyInto ¶
func (in *PgBouncerSpec) DeepCopyInto(out *PgBouncerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PgBouncerSpec) Enabled ¶
func (s *PgBouncerSpec) Enabled() bool
Enabled returns true if the pgBouncer is enabled for the cluster, i.e. there is at least one replica set
type PgStorageSpec ¶
type PgStorageSpec struct { Name string `json:"name"` StorageClass string `json:"storageclass"` AccessMode string `json:"accessmode"` Size string `json:"size"` StorageType string `json:"storagetype"` SupplementalGroups string `json:"supplementalgroups"` MatchLabels string `json:"matchLabels"` }
PgStorageSpec ... swagger:ignore
func (*PgStorageSpec) DeepCopy ¶
func (in *PgStorageSpec) DeepCopy() *PgStorageSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgStorageSpec.
func (*PgStorageSpec) DeepCopyInto ¶
func (in *PgStorageSpec) DeepCopyInto(out *PgStorageSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (PgStorageSpec) GetSupplementalGroups ¶
func (s PgStorageSpec) GetSupplementalGroups() []int64
GetSupplementalGroups converts the comma-separated list of SupplementalGroups into a slice of int64 IDs. If it errors, it returns an empty slice and logs a warning
type Pgcluster ¶
type Pgcluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata"` Spec PgclusterSpec `json:"spec"` Status PgclusterStatus `json:"status,omitempty"` }
Pgcluster is the CRD that defines a Crunchy PG Cluster
swagger:ignore Pgcluster +genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*Pgcluster) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Pgcluster.
func (*Pgcluster) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Pgcluster) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PgclusterList ¶
type PgclusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []Pgcluster `json:"items"` }
PgclusterList is the CRD that defines a Crunchy PG Cluster List swagger:ignore +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*PgclusterList) DeepCopy ¶
func (in *PgclusterList) DeepCopy() *PgclusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgclusterList.
func (*PgclusterList) DeepCopyInto ¶
func (in *PgclusterList) DeepCopyInto(out *PgclusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PgclusterList) DeepCopyObject ¶
func (in *PgclusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PgclusterSpec ¶
type PgclusterSpec struct { Namespace string `json:"namespace"` Name string `json:"name"` ClusterName string `json:"clustername"` Policies string `json:"policies"` CCPImage string `json:"ccpimage"` CCPImageTag string `json:"ccpimagetag"` CCPImagePrefix string `json:"ccpimageprefix"` PGOImagePrefix string `json:"pgoimageprefix"` Port string `json:"port"` PGBadgerPort string `json:"pgbadgerport"` ExporterPort string `json:"exporterport"` PrimaryStorage PgStorageSpec `json:primarystorage` WALStorage PgStorageSpec `json:walstorage` ArchiveStorage PgStorageSpec `json:archivestorage` ReplicaStorage PgStorageSpec `json:replicastorage` BackrestStorage PgStorageSpec `json:backreststorage` // Resources behaves just like the "Requests" section of a Kubernetes // container definition. You can set individual items such as "cpu" and // "memory", e.g. "{ cpu: "0.5", memory: "2Gi" }" Resources v1.ResourceList `json:"resources"` // Limits stores the CPU/memory limits to use with PostgreSQL instances // // A long note on memory limits. // // We want to avoid the OOM killer coming for the PostgreSQL process or any // of their backends per lots of guidance from the PostgreSQL documentation. // Based on Kubernetes' behavior with limits, the best thing is to not set // them. However, if they ever do set, we suggest that you have // Request == Limit to get the Guaranteed QoS // // Guaranteed QoS prevents a backend from being first in line to be killed if // the *Node* has memory pressure, but if there is, say // a runaway client backend that causes the *Pod* to exceed its memory // limit, a backend can still be killed by the OOM killer, which is not // great. // // As such, given the choice, the preference is for the Pod to be evicted // and have a failover event, vs. having an individual client backend killed // and causing potential "bad things." // // For more info on PostgreSQL and Kubernetes memory management, see: // // https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT // https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-limits-are-run Limits v1.ResourceList `json:"limits"` // BackrestResources, if specified, contains the container request resources // for the pgBackRest Deployment for this PostgreSQL cluster BackrestResources v1.ResourceList `json:"backrestResources"` // BackrestLimits, if specified, contains the container resource limits // for the pgBackRest Deployment for this PostgreSQL cluster BackrestLimits v1.ResourceList `json:"backrestLimits"` // ExporterResources, if specified, contains the container request resources // for the Crunchy Postgres Exporter Deployment for this PostgreSQL cluster ExporterResources v1.ResourceList `json:"exporterResources"` // ExporterLimits, if specified, contains the container resource limits // for the Crunchy Postgres Exporter Deployment for this PostgreSQL cluster ExporterLimits v1.ResourceList `json:"exporterLimits"` // PgBouncer contains all of the settings to properly maintain a pgBouncer // implementation PgBouncer PgBouncerSpec `json:"pgBouncer"` User string `json:"user"` Database string `json:"database"` Replicas string `json:"replicas"` UserSecretName string `json:"usersecretname"` RootSecretName string `json:"rootsecretname"` PrimarySecretName string `json:"primarysecretname"` CollectSecretName string `json:"collectSecretName"` Status string `json:"status"` CustomConfig string `json:"customconfig"` UserLabels map[string]string `json:"userlabels"` PodAntiAffinity PodAntiAffinitySpec `json:"podAntiAffinity"` SyncReplication *bool `json:"syncReplication"` BackrestConfig []v1.VolumeProjection `json:"backrestConfig"` BackrestS3Bucket string `json:"backrestS3Bucket"` BackrestS3Region string `json:"backrestS3Region"` BackrestS3Endpoint string `json:"backrestS3Endpoint"` BackrestS3URIStyle string `json:"backrestS3URIStyle"` BackrestS3VerifyTLS string `json:"backrestS3VerifyTLS"` BackrestRepoPath string `json:"backrestRepoPath"` TablespaceMounts map[string]PgStorageSpec `json:"tablespaceMounts"` TLS TLSSpec `json:"tls"` TLSOnly bool `json:"tlsOnly"` Standby bool `json:"standby"` Shutdown bool `json:"shutdown"` PGDataSource PGDataSourceSpec `json:"pgDataSource"` // Annotations contains a set of Deployment (and by association, Pod) // annotations that are propagated to all managed Deployments Annotations ClusterAnnotations `json:"annotations"` }
PgclusterSpec is the CRD that defines a Crunchy PG Cluster Spec swagger:ignore
func (*PgclusterSpec) DeepCopy ¶
func (in *PgclusterSpec) DeepCopy() *PgclusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgclusterSpec.
func (*PgclusterSpec) DeepCopyInto ¶
func (in *PgclusterSpec) DeepCopyInto(out *PgclusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PgclusterState ¶
type PgclusterState string
PgclusterState is the crd that defines PG Cluster Stage swagger:ignore
type PgclusterStatus ¶
type PgclusterStatus struct { State PgclusterState `json:"state,omitempty"` Message string `json:"message,omitempty"` }
PgclusterStatus is the CRD that defines PG Cluster Status swagger:ignore
func (*PgclusterStatus) DeepCopy ¶
func (in *PgclusterStatus) DeepCopy() *PgclusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgclusterStatus.
func (*PgclusterStatus) DeepCopyInto ¶
func (in *PgclusterStatus) DeepCopyInto(out *PgclusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Pgpolicy ¶
type Pgpolicy struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata"` Spec PgpolicySpec `json:"spec"` Status PgpolicyStatus `json:"status,omitempty"` }
Pgpolicy ... swagger:ignore +genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*Pgpolicy) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Pgpolicy.
func (*Pgpolicy) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Pgpolicy) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PgpolicyList ¶
type PgpolicyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []Pgpolicy `json:"items"` }
PgpolicyList ... swagger:ignore +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*PgpolicyList) DeepCopy ¶
func (in *PgpolicyList) DeepCopy() *PgpolicyList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgpolicyList.
func (*PgpolicyList) DeepCopyInto ¶
func (in *PgpolicyList) DeepCopyInto(out *PgpolicyList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PgpolicyList) DeepCopyObject ¶
func (in *PgpolicyList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PgpolicySpec ¶
type PgpolicySpec struct { Namespace string `json:"namespace"` Name string `json:"name"` URL string `json:"url"` SQL string `json:"sql"` Status string `json:"status"` }
PgpolicySpec ... swagger:ignore
func (*PgpolicySpec) DeepCopy ¶
func (in *PgpolicySpec) DeepCopy() *PgpolicySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgpolicySpec.
func (*PgpolicySpec) DeepCopyInto ¶
func (in *PgpolicySpec) DeepCopyInto(out *PgpolicySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PgpolicyState ¶
type PgpolicyState string
PgpolicyState ... swagger:ignore
const ( // PgpolicyStateCreated ... PgpolicyStateCreated PgpolicyState = "pgpolicy Created" // PgpolicyStateProcessed ... PgpolicyStateProcessed PgpolicyState = "pgpolicy Processed" )
type PgpolicyStatus ¶
type PgpolicyStatus struct { State PgpolicyState `json:"state,omitempty"` Message string `json:"message,omitempty"` }
PgpolicyStatus ... swagger:ignore
func (*PgpolicyStatus) DeepCopy ¶
func (in *PgpolicyStatus) DeepCopy() *PgpolicyStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgpolicyStatus.
func (*PgpolicyStatus) DeepCopyInto ¶
func (in *PgpolicyStatus) DeepCopyInto(out *PgpolicyStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Pgreplica ¶
type Pgreplica struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata"` Spec PgreplicaSpec `json:"spec"` Status PgreplicaStatus `json:"status,omitempty"` }
Pgreplica .. swagger:ignore +genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*Pgreplica) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Pgreplica.
func (*Pgreplica) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Pgreplica) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PgreplicaList ¶
type PgreplicaList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []Pgreplica `json:"items"` }
PgreplicaList ... swagger:ignore +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*PgreplicaList) DeepCopy ¶
func (in *PgreplicaList) DeepCopy() *PgreplicaList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgreplicaList.
func (*PgreplicaList) DeepCopyInto ¶
func (in *PgreplicaList) DeepCopyInto(out *PgreplicaList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PgreplicaList) DeepCopyObject ¶
func (in *PgreplicaList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PgreplicaSpec ¶
type PgreplicaSpec struct { Namespace string `json:"namespace"` Name string `json:"name"` ClusterName string `json:"clustername"` ReplicaStorage PgStorageSpec `json:"replicastorage"` Status string `json:"status"` UserLabels map[string]string `json:"userlabels"` }
PgreplicaSpec ... swagger:ignore
func (*PgreplicaSpec) DeepCopy ¶
func (in *PgreplicaSpec) DeepCopy() *PgreplicaSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgreplicaSpec.
func (*PgreplicaSpec) DeepCopyInto ¶
func (in *PgreplicaSpec) DeepCopyInto(out *PgreplicaSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PgreplicaState ¶
type PgreplicaState string
PgreplicaState ... swagger:ignore
const ( // PgreplicaStateCreated ... PgreplicaStateCreated PgreplicaState = "pgreplica Created" // PgreplicaStatePending ... PgreplicaStatePendingInit PgreplicaState = "pgreplica Pending init" // PgreplicaStatePendingRestore ... PgreplicaStatePendingRestore PgreplicaState = "pgreplica Pending restore" // PgreplicaStateProcessed ... PgreplicaStateProcessed PgreplicaState = "pgreplica Processed" )
type PgreplicaStatus ¶
type PgreplicaStatus struct { State PgreplicaState `json:"state,omitempty"` Message string `json:"message,omitempty"` }
PgreplicaStatus ... swagger:ignore
func (*PgreplicaStatus) DeepCopy ¶
func (in *PgreplicaStatus) DeepCopy() *PgreplicaStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgreplicaStatus.
func (*PgreplicaStatus) DeepCopyInto ¶
func (in *PgreplicaStatus) DeepCopyInto(out *PgreplicaStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Pgtask ¶
type Pgtask struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata"` Spec PgtaskSpec `json:"spec"` Status PgtaskStatus `json:"status,omitempty"` }
Pgtask ... swagger:ignore +genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*Pgtask) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Pgtask.
func (*Pgtask) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Pgtask) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PgtaskList ¶
type PgtaskList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []Pgtask `json:"items"` }
PgtaskList ... swagger:ignore +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*PgtaskList) DeepCopy ¶
func (in *PgtaskList) DeepCopy() *PgtaskList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgtaskList.
func (*PgtaskList) DeepCopyInto ¶
func (in *PgtaskList) DeepCopyInto(out *PgtaskList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PgtaskList) DeepCopyObject ¶
func (in *PgtaskList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PgtaskSpec ¶
type PgtaskSpec struct { Namespace string `json:"namespace"` Name string `json:"name"` StorageSpec PgStorageSpec `json:"storagespec"` TaskType string `json:"tasktype"` Status string `json:"status"` Parameters map[string]string `json:"parameters"` }
PgtaskSpec ... swagger:ignore
func (*PgtaskSpec) DeepCopy ¶
func (in *PgtaskSpec) DeepCopy() *PgtaskSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgtaskSpec.
func (*PgtaskSpec) DeepCopyInto ¶
func (in *PgtaskSpec) DeepCopyInto(out *PgtaskSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PgtaskState ¶
type PgtaskState string
PgtaskState ... swagger:ignore
const ( // PgtaskStateCreated ... PgtaskStateCreated PgtaskState = "pgtask Created" // PgtaskStateProcessed ... PgtaskStateProcessed PgtaskState = "pgtask Processed" )
type PgtaskStatus ¶
type PgtaskStatus struct { State PgtaskState `json:"state,omitempty"` Message string `json:"message,omitempty"` }
PgtaskStatus ... swagger:ignore
func (*PgtaskStatus) DeepCopy ¶
func (in *PgtaskStatus) DeepCopy() *PgtaskStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PgtaskStatus.
func (*PgtaskStatus) DeepCopyInto ¶
func (in *PgtaskStatus) DeepCopyInto(out *PgtaskStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodAntiAffinityDeployment ¶
type PodAntiAffinityDeployment int
PodAntiAffinityDeployment distinguishes between the different types of Deployments that can leverage PodAntiAffinity
const ( PodAntiAffinityDeploymentDefault PodAntiAffinityDeployment = iota PodAntiAffinityDeploymentPgBackRest PodAntiAffinityDeploymentPgBouncer )
The list of different types of PodAntiAffinityDeployments
type PodAntiAffinitySpec ¶
type PodAntiAffinitySpec struct { Default PodAntiAffinityType `json:"default"` PgBackRest PodAntiAffinityType `json:"pgBackRest"` PgBouncer PodAntiAffinityType `json:"pgBouncer"` }
PodAntiAffinitySpec provides multiple configurations for how pod anti-affinity can be set.
- "Default" is the default rule that applies to all Pods that are a part of the PostgreSQL cluster
- "PgBackrest" applies just to the pgBackRest repository Pods in said Deployment
- "PgBouncer" applies to just pgBouncer Pods in said Deployment
swaggier:ignore
func (*PodAntiAffinitySpec) DeepCopy ¶
func (in *PodAntiAffinitySpec) DeepCopy() *PodAntiAffinitySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodAntiAffinitySpec.
func (*PodAntiAffinitySpec) DeepCopyInto ¶
func (in *PodAntiAffinitySpec) DeepCopyInto(out *PodAntiAffinitySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodAntiAffinityType ¶
type PodAntiAffinityType string
PodAntiAffinityType defines the different types of type of anti-affinity rules applied to pg clusters when utilizing the default pod anti-affinity rules provided by the PostgreSQL Operator, which are enabled for a new pg cluster by default. Valid Values include "required" for requiredDuringSchedulingIgnoredDuringExecution anti-affinity, "preferred" for preferredDuringSchedulingIgnoredDuringExecution anti-affinity, and "disabled" to disable the default pod anti-affinity rules for the pg cluster all together.
func (PodAntiAffinityType) Validate ¶
func (p PodAntiAffinityType) Validate() error
ValidatePodAntiAffinityType is responsible for validating whether or not the type of pod anti-affinity specified is valid
type TLSSpec ¶
type TLSSpec struct { // CASecret contains the name of the secret to use as the trusted CA for the // TLSSecret // This is our own format and should contain at least one key: "ca.crt" // It can also contain a key "ca.crl" which is the certificate revocation list CASecret string `json:"caSecret"` // ReplicationTLSSecret contains the name of the secret that specifies a TLS // keypair that can be used by the replication user (e.g. "primaryuser") to // perform certificate based authentication between replicas. // The keypair must be considered valid by the CA specified in the CASecret ReplicationTLSSecret string `json:"replicationTLSSecret"` // TLSSecret contains the name of the secret to use that contains the TLS // keypair for the PostgreSQL server // This follows the Kubernetes secret format ("kubernetes.io/tls") which has // two keys: tls.crt and tls.key TLSSecret string `json:"tlsSecret"` }
TLSSpec contains the information to set up a TLS-enabled PostgreSQL cluster
func (*TLSSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSSpec.
func (*TLSSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (TLSSpec) IsTLSEnabled ¶
IsTLSEnabled returns true if the cluster is TLS enabled, i.e. both the TLS secret name and the CA secret name are available