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 \ pgoadmin: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 \ pgoadmin: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 \ pgoadmin:examplepassword -H "Content-Type:application/json" --insecure -X \
POST --data \ '{"ClientVersion":"4.3.0", "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 \ pgoadmin:examplepassword -H "Content-Type:application/json" --insecure -X \
POST --data \ '{"ClientVersion":"4.3.0", "Namespace":"pgouser1", "Clustername":"mycluster"}' \
$PGO_APISERVER_URL/showclusters ```
``` curl --cacert $PGO_CA_CERT --key $PGO_CLIENT_KEY --cert $PGO_CA_CERT -u \ pgoadmin:examplepassword -H "Content-Type:application/json" --insecure -X \
POST --data \ '{"ClientVersion":"4.3.0", "Namespace":"pgouser1", "Clustername":"mycluster"}' \
$PGO_APISERVER_URL/clustersdelete ```
Schemes: http, https BasePath: / Version: 4.3.0 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 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" // 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 CollectSecretSuffix = "-collect-secret"
CollectSecretSuffix ...
const CompletedStatus = "completed"
CompletedStatus -
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 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 PgBouncerSpec ¶
type PgBouncerSpec struct { // EnableMemoryLimit specifies whether or not the "Limit" for memory // should be set on the Pod. Defaults to false EnableMemoryLimit bool `json:"enableMemoryLimit"` // 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"` }
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" }" // // For memory requests, we only set the "Request" portion of the Container // resource definition, but if we do allow for the "Limit" portion to be set, // we would keep it unified to get a "Guaranteed" QoS. // // We don't set the Limit you say? Yes: 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'll ensure that we get the Guaranteed QoS to help avoid OOM risks. // // 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 // // Now, for CPU, we set both the Request and the Limit, based on how // Kubernetes interacts with these parameters Resources v1.ResourceList `json:"resources"` // EnableMemoryLimit specifies whether or not the "Limit" for memory // should be set on the Pod. Defaults to false EnableMemoryLimit bool `json:"enableMemoryLimit"` // BackrestResources, if specified, contains the container request resources // for the pgBackRest Deployment for this PostgreSQL cluster BackrestResources v1.ResourceList `json:"backrestResources"` // EnableBackrestMemoryLimit specifies whether or not the "Limit" for memory // should be set on the Pod. Defaults to false EnableBackrestMemoryLimit bool `json:"enableBackrestMemoryLimit"` // PgBouncer contains all of the settings to properly maintain a pgBouncer // implementation PgBouncer PgBouncerSpec `json:"pgBouncer"` PrimaryHost string `json:"primaryhost"` User string `json:"user"` Database string `json:"database"` Replicas string `json:"replicas"` SecretFrom string `json:"secretfrom"` 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"` BackrestS3Bucket string `json:"backrestS3Bucket"` BackrestS3Region string `json:"backrestS3Region"` BackrestS3Endpoint string `json:"backrestS3Endpoint"` 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"` }
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"` // 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