Documentation ¶
Index ¶
- Constants
- Variables
- func PostgreSQLWALPath(cluster string) string
- func PostgreSQLWALVolumeMount() core_v1.VolumeMount
- type ClusterStruct
- type PgoConfig
- func (c *PgoConfig) CheckEnv()
- func (c *PgoConfig) DefaultTemplate(path string) (string, error)
- func (c *PgoConfig) GetConfig(clientset *kubernetes.Clientset, namespace string) error
- func (c *PgoConfig) GetPodAntiAffinitySpec(cluster, pgBackRest, pgBouncer crv1.PodAntiAffinityType) (crv1.PodAntiAffinitySpec, error)
- func (c *PgoConfig) GetStorageSpec(name string) (crv1.PgStorageSpec, error)
- func (c *PgoConfig) LoadTemplate(cMap *v1.ConfigMap, rootPath, path string) (*template.Template, error)
- func (c *PgoConfig) Validate() error
- type PgoStruct
- type StorageStruct
Constants ¶
const ( ANNOTATION_PGHA_BOOTSTRAP_REPLICA = "pgo-pgha-bootstrap-replica" ANNOTATION_CLONE_BACKREST_PVC_SIZE = "clone-backrest-pvc-size" ANNOTATION_CLONE_ENABLE_METRICS = "clone-enable-metrics" ANNOTATION_CLONE_PVC_SIZE = "clone-pvc-size" ANNOTATION_CLONE_SOURCE_CLUSTER_NAME = "clone-source-cluster-name" ANNOTATION_CLONE_TARGET_CLUSTER_NAME = "clone-target-cluster-name" ANNOTATION_PRIMARY_DEPLOYMENT = "primary-deployment" // annotation to track the cluster's current primary ANNOTATION_CURRENT_PRIMARY = "current-primary" // annotation to indicate whether a cluster has been upgraded ANNOTATION_IS_UPGRADED = "is-upgraded" // annotation to store the Operator versions upgraded from and to ANNOTATION_UPGRADE_INFO = "upgrade-info" // annotation to store the string boolean, used when checking upgrade status ANNOTATIONS_FALSE = "false" )
annotations used by the operator
const ( // ControllerGroupRefreshInterval is the default informer refresh interval in seconds // for the controllers created by the Controller Manager that require a refresh interval DefaultControllerGroupRefreshInterval = 60 // NamespaceRefreshInterval is the default informer refresh interval in seconds // for the Operator's namespace controller DefaultNamespaceRefreshInterval = 60 )
The following constants define the default refresh intervals for any informers created by that require a refresh interval
const ( // DefaultConfigMapWorkerCount defines the default number or workers for the worker queue // in the ConfigMap controller DefaultConfigMapWorkerCount = 2 // DefaultPGClusterWorkerCount defines the default number or workers for the worker queue // in the PGCluster controller DefaultPGClusterWorkerCount = 1 // DefaultPGReplicaWorkerCount defines the default number or workers for the worker queue // in the PGReplica controller DefaultPGReplicaWorkerCount = 1 // DefaultPGTaskWorkerCount defines the default number or workers for the worker queue // in the PGTask controller DefaultPGTaskWorkerCount = 1 )
The following constants define the default number of workers created for the worker queues created within the various controller created by the Operator
const ( CONTAINER_IMAGE_PGO_BACKREST = "pgo-backrest" CONTAINER_IMAGE_PGO_BACKREST_REPO = "pgo-backrest-repo" CONTAINER_IMAGE_PGO_BACKREST_REPO_SYNC = "pgo-backrest-repo-sync" CONTAINER_IMAGE_PGO_BACKREST_RESTORE = "pgo-backrest-restore" CONTAINER_IMAGE_PGO_CLIENT = "pgo-client" CONTAINER_IMAGE_PGO_LOAD = "pgo-load" CONTAINER_IMAGE_PGO_RMDATA = "pgo-rmdata" CONTAINER_IMAGE_PGO_SQL_RUNNER = "pgo-sqlrunner" CONTAINER_IMAGE_CRUNCHY_ADMIN = "crunchy-admin" CONTAINER_IMAGE_CRUNCHY_BACKREST_RESTORE = "crunchy-backrest-restore" CONTAINER_IMAGE_CRUNCHY_COLLECT = "crunchy-collect" CONTAINER_IMAGE_CRUNCHY_GRAFANA = "crunchy-grafana" CONTAINER_IMAGE_CRUNCHY_PGBADGER = "crunchy-pgbadger" CONTAINER_IMAGE_CRUNCHY_PGBOUNCER = "crunchy-pgbouncer" CONTAINER_IMAGE_CRUNCHY_PGDUMP = "crunchy-pgdump" CONTAINER_IMAGE_CRUNCHY_PGRESTORE = "crunchy-pgrestore" CONTAINER_IMAGE_CRUNCHY_POSTGRES_HA = "crunchy-postgres-ha" CONTAINER_IMAGE_CRUNCHY_POSTGRES_GIS_HA = "crunchy-postgres-gis-ha" CONTAINER_IMAGE_CRUNCHY_PROMETHEUS = "crunchy-prometheus" )
a list of container images that are available
const CONFIG_PATH = "pgo.yaml"
const CustomConfigMapName = "pgo-config"
const CustomConfigsPath = "/pgo-config/"
const DEFAULT_BACKREST_PORT = 2022
const DEFAULT_EXPORTER_PORT = "9187"
const DEFAULT_PATRONI_PORT = "8009"
const DEFAULT_PGBADGER_PORT = "10000"
const DEFAULT_POSTGRES_PORT = "5432"
const DEFAULT_SERVICE_TYPE = "ClusterIP"
const DefaultConfigsPath = "/default-pgo-config/"
const DefaultPgBouncerReplicas = 1
DefaultPgBouncerReplicas is the total number of Pods to place in a pgBouncer Deployment
const GLOBAL_CUSTOM_CONFIGMAP = "pgo-custom-pg-config"
const LABEL_ARCHIVE = "archive"
const LABEL_ARCHIVE_TIMEOUT = "archive-timeout"
const LABEL_AUTOFAIL = "autofail"
const LABEL_BACKREST = "pgo-backrest"
const LABEL_BACKREST_BACKUP_OPTS = "backrest-backup-opts"
const LABEL_BACKREST_COMMAND = "backrest-command"
const LABEL_BACKREST_JOB = "pgo-backrest-job"
const LABEL_BACKREST_OPTS = "backrest-opts"
const LABEL_BACKREST_PITR_TARGET = "backrest-pitr-target"
const LABEL_BACKREST_REPO_SECRET = "backrest-repo-config"
const LABEL_BACKREST_RESTORE = "pgo-backrest-restore"
const LABEL_BACKREST_RESTORE_FROM_CLUSTER = "backrest-restore-from-cluster"
const LABEL_BACKREST_RESTORE_OPTS = "backrest-restore-opts"
const LABEL_BACKREST_RESTORE_TO_PVC = "backrest-restore-to-pvc"
const LABEL_BACKREST_STORAGE_TYPE = "backrest-storage-type"
const LABEL_BACKUP_TYPE_BACKREST = "pgbackrest"
const LABEL_BACKUP_TYPE_PGDUMP = "pgdump"
const LABEL_BADGER = "crunchy-pgbadger"
const LABEL_BADGER_CCPIMAGE = "crunchy-pgbadger"
const LABEL_CCP_IMAGE_KEY = "ccp-image"
const LABEL_CCP_IMAGE_TAG_KEY = "ccp-image-tag"
const LABEL_CLAIM_NAME = "claimName"
const LABEL_COLLECT = "crunchy_collect"
const LABEL_COLLECT_PG_USER = "ccp_monitoring"
const LABEL_CONTAINER_NAME = "containername"
const LABEL_CRUNCHY = "crunchydata"
const LABEL_CURRENT_PRIMARY = "current-primary"
const LABEL_CUSTOM_CONFIG = "custom-config"
const LABEL_DATA_ROOT = "data-root"
const LABEL_DELETE_BACKUPS = "delete-backups"
const LABEL_DELETE_DATA = "delete-data"
const LABEL_DELETE_DATA_STARTED = "delete-data-started"
const LABEL_DEPLOYMENT_NAME = "deployment-name"
const LABEL_FAILOVER = "failover"
const LABEL_FAILOVER_STARTED = "failover-started"
const LABEL_FALSE = "false"
const LABEL_IMAGE_PREFIX = "image-prefix"
const LABEL_INGEST = "ingest"
const LABEL_IS_BACKUP = "is-backup"
const LABEL_IS_REPLICA = "is-replica"
const LABEL_JOB_NAME = "job-name"
const LABEL_NAME = "name"
resource labels used by the operator
const LABEL_NAMESPACE = "namespace"
const LABEL_NODE_LABEL = "node-label"
const LABEL_NODE_LABEL_KEY = "NodeLabelKey"
const LABEL_NODE_LABEL_VALUE = "NodeLabelValue"
const LABEL_OPERATOR = "postgres-operator"
const LABEL_PASSWORD = "password"
const LABEL_PGBACKREST_DB_PATH = "pgbackrest-db-path"
const LABEL_PGBACKREST_REPO_HOST = "pgbackrest-repo-host"
const LABEL_PGBACKREST_REPO_PATH = "pgbackrest-repo-path"
const LABEL_PGBACKREST_STANZA = "pgbackrest-stanza"
const LABEL_PGBOUNCER = "crunchy-pgbouncer"
const LABEL_PGDUMP_ALL = "pgdump-all"
const LABEL_PGDUMP_COMMAND = "pgdump"
const LABEL_PGDUMP_DB = "pgdump-db"
const LABEL_PGDUMP_HOST = "pgdump-host"
const LABEL_PGDUMP_OPTS = "pgdump-opts"
const LABEL_PGDUMP_PORT = "pgdump-port"
const LABEL_PGDUMP_PVC = "pgdump-pvc"
const LABEL_PGDUMP_RESTORE = "pgdump-restore"
const LABEL_PGDUMP_USER = "pgdump-user"
const LABEL_PGHA_BACKUP_TYPE = "pgha-backup-type"
const LABEL_PGHA_CONFIGMAP = "pgha-config"
const LABEL_PGHA_ROLE = "role"
const LABEL_PGHA_ROLE_PRIMARY = "master"
const LABEL_PGHA_ROLE_REPLICA = "replica"
const LABEL_PGHA_SCOPE = "crunchy-pgha-scope"
const LABEL_PGOUSER = "pgouser"
const LABEL_PGO_BACKREST_REPO = "pgo-backrest-repo"
const LABEL_PGO_CLONE = "pgo-clone"
a general label for grouping all the tasks...helps with cleanups
const LABEL_PGO_CLONE_STEP_1 = "pgo-clone-step-1"
the individualized step labels
const LABEL_PGO_CLONE_STEP_2 = "pgo-clone-step-2"
const LABEL_PGO_CLONE_STEP_3 = "pgo-clone-step-3"
const LABEL_PGO_CREATED_BY = "pgo-created-by"
const LABEL_PGO_INSTALLATION_NAME = "pgo-installation-name"
const LABEL_PGO_LOAD = "pgo-load"
const LABEL_PGO_PGOROLE = "pgo-pgorole"
const LABEL_PGO_PGOUSER = "pgo-pgouser"
const LABEL_PGO_UPDATED_BY = "pgo-updated-by"
const LABEL_PGO_VERSION = "pgo-version"
const LABEL_PGPOLICY = "pgpolicy"
const LABEL_PGREMOVE = "pgremove"
const LABEL_PGRESTORE_COMMAND = "pgrestore"
const LABEL_PGRESTORE_DB = "pgrestore-db"
const LABEL_PGRESTORE_FROM_CLUSTER = "pgrestore-from-cluster"
const LABEL_PGRESTORE_FROM_PVC = "pgrestore-from-pvc"
const LABEL_PGRESTORE_HOST = "pgrestore-host"
const LABEL_PGRESTORE_OPTS = "pgrestore-opts"
const LABEL_PGRESTORE_PITR_TARGET = "pgrestore-pitr-target"
const LABEL_PGRESTORE_PORT = "pgrestore-port"
const LABEL_PGRESTORE_USER = "pgrestore-user"
const LABEL_PGTASK = "pg-task"
const LABEL_PG_CLUSTER = "pg-cluster"
const LABEL_PG_CLUSTER_IDENTIFIER = "pg-cluster-id"
const LABEL_PG_DATABASE = "pgo-pg-database"
const LABEL_POD_ANTI_AFFINITY = "pg-pod-anti-affinity"
const LABEL_POD_NAME = "podname"
const LABEL_PVCNAME = "pvcname"
const LABEL_PVC_NAME = "pvc-name"
const LABEL_REPLICA_COUNT = "replica-count"
const LABEL_REPLICA_NAME = "replica-name"
const LABEL_RESTORE_TYPE_PGRESTORE = "pgrestore"
const LABEL_RMDATA = "pgrmdata"
const LABEL_ROLENAME = "rolename"
const LABEL_SELECTOR = "selector"
const LABEL_SERVICE_NAME = "service-name"
const LABEL_SERVICE_TYPE = "service-type"
const LABEL_SESSION_ID = "sessionid"
const LABEL_SHUTDOWN = "shutdown"
const LABEL_STARTUP = "startup"
const LABEL_STORAGE_CONFIG = "storage-config"
const LABEL_SYNC_REPLICATION = "sync-replication"
const LABEL_TARGET = "target"
const LABEL_TRUE = "true"
const LABEL_UPGRADE = "upgrade"
label for the pgcluster upgrade
const LABEL_USERNAME = "username"
const LABEL_VENDOR = "vendor"
const LABEL_VERSION = "version"
const LABEL_VOLUME_NAME = "volume-name"
const LABEL_WORKFLOW_ID = "workflowid" // NOTE: this now matches crv1.PgtaskWorkflowID
const LOAD_BALANCER_SERVICE_TYPE = "LoadBalancer"
const NODEPORT_SERVICE_TYPE = "NodePort"
const PGOBackrestRoleBindingPath = "pgo-backrest-role-binding.json"
const PGOBackrestRolePath = "pgo-backrest-role.json"
const PGOBackrestServiceAccountPath = "pgo-backrest-sa.json"
const PGODefaultServiceAccountPath = "pgo-default-sa.json"
const PGOPgRoleBindingPath = "pgo-pg-role-binding.json"
const PGOPgRolePath = "pgo-pg-role.json"
const PGOPgServiceAccountPath = "pgo-pg-sa.json"
const PGOTargetRoleBindingPath = "pgo-target-role-binding.json"
const PGOTargetRolePath = "pgo-target-role.json"
const PGOTargetServiceAccountPath = "pgo-target-sa.json"
const VOLUME_PGBACKREST_REPO_MOUNT_PATH = "/backrestrepo"
const VOLUME_PGBACKREST_REPO_NAME = "backrestrepo"
volume configuration settings used by the pgBackRest repo mount
const VOLUME_POSTGRESQL_DATA = "pgdata"
volume configuration settings used by the PostgreSQL data directory and mount
const VOLUME_POSTGRESQL_DATA_MOUNT_PATH = "/pgdata"
const VOLUME_SSHD_MOUNT_PATH = "/sshd"
const VOLUME_SSHD_NAME = "sshd"
volume configuration settings used by the SSHD secret
const VOLUME_TABLESPACE_NAME_PREFIX = "tablespace-"
the pattern for the volume name used on a tablespace, which follows "tablespace-<tablespaceName>"
const VOLUME_TABLESPACE_PATH_PREFIX = "/tablespaces/"
the pattern for the path used to mount the volume of a tablespace, which follows "/tablespace/<pvcName>"
const VOLUME_TABLESPACE_PVC_NAME_FORMAT = "%s-tablespace-%s"
the pattern for the name of a tablespace PVC, which is off the form: "<clusterName>-tablespace-<tablespaceName>"
Variables ¶
var ( // DefaultBackrestRepoResourceMemory is the default value of the resource // request for memory for a pgBackRest repository DefaultBackrestResourceMemory = resource.MustParse("48Mi") // DefaultInstanceResourceMemory is the default value of the resource request // for memory for a PostgreSQL instance in a cluster DefaultInstanceResourceMemory = resource.MustParse("512Mi") // DefaultPgBouncerResourceMemory is the default value of the resource request // for memory of a pgBouncer instance DefaultPgBouncerResourceMemory = resource.MustParse("24Mi") )
Default resource values for deploying a PostgreSQL cluster. These values are utilized if the user has not provided these values either through configuration or from one-off API/CLI calls.
These values were determined by either program defaults (e.g. the PostgreSQL one) and/or loose to vigorous experimentation and profiling
var AffinityTemplate *template.Template
var BackrestRestorejobTemplate *template.Template
var BackrestjobTemplate *template.Template
var BadgerTemplate *template.Template
var CollectTemplate *template.Template
var ContainerResourcesTemplate *template.Template
var DeploymentTemplate *template.Template
var LoadTemplate *template.Template
var PVCMatchLabelsTemplate *template.Template
var PVCStorageClassTemplate *template.Template
var PVCTemplate *template.Template
var PgDumpBackupJobTemplate *template.Template
var PgRestoreJobTemplate *template.Template
var PgbackrestEnvVarsTemplate *template.Template
var PgbackrestS3EnvVarsTemplate *template.Template
var PgbouncerConfTemplate *template.Template
var PgbouncerHBATemplate *template.Template
var PgbouncerTemplate *template.Template
var PgbouncerUsersTemplate *template.Template
var PgmonitorEnvVarsTemplate *template.Template
var PgoBackrestRepoServiceTemplate *template.Template
var PgoBackrestRepoTemplate *template.Template
var PgoBackrestRoleBindingTemplate *template.Template
var PgoBackrestRoleTemplate *template.Template
var PgoBackrestServiceAccountTemplate *template.Template
var PgoDefaultServiceAccountTemplate *template.Template
var PgoPgRoleBindingTemplate *template.Template
var PgoPgRoleTemplate *template.Template
var PgoPgServiceAccountTemplate *template.Template
var PgoTargetRoleBindingTemplate *template.Template
var PgoTargetRoleTemplate *template.Template
var PgoTargetServiceAccountTemplate *template.Template
var PodAntiAffinityTemplate *template.Template
var PolicyJobTemplate *template.Template
var RelatedImageMap = map[string]string{ "RELATED_IMAGE_PGO_BACKREST": CONTAINER_IMAGE_PGO_BACKREST, "RELATED_IMAGE_PGO_BACKREST_REPO": CONTAINER_IMAGE_PGO_BACKREST_REPO, "RELATED_IMAGE_PGO_BACKREST_REPO_SYNC": CONTAINER_IMAGE_PGO_BACKREST_REPO_SYNC, "RELATED_IMAGE_PGO_BACKREST_RESTORE": CONTAINER_IMAGE_PGO_BACKREST_RESTORE, "RELATED_IMAGE_PGO_CLIENT": CONTAINER_IMAGE_PGO_CLIENT, "RELATED_IMAGE_PGO_LOAD": CONTAINER_IMAGE_PGO_LOAD, "RELATED_IMAGE_PGO_RMDATA": CONTAINER_IMAGE_PGO_RMDATA, "RELATED_IMAGE_PGO_SQL_RUNNER": CONTAINER_IMAGE_PGO_SQL_RUNNER, "RELATED_IMAGE_CRUNCHY_ADMIN": CONTAINER_IMAGE_CRUNCHY_ADMIN, "RELATED_IMAGE_CRUNCHY_BACKREST_RESTORE": CONTAINER_IMAGE_CRUNCHY_BACKREST_RESTORE, "RELATED_IMAGE_CRUNCHY_COLLECT": CONTAINER_IMAGE_CRUNCHY_COLLECT, "RELATED_IMAGE_CRUNCHY_PGBADGER": CONTAINER_IMAGE_CRUNCHY_PGBADGER, "RELATED_IMAGE_CRUNCHY_PGBOUNCER": CONTAINER_IMAGE_CRUNCHY_PGBOUNCER, "RELATED_IMAGE_CRUNCHY_PGDUMP": CONTAINER_IMAGE_CRUNCHY_PGDUMP, "RELATED_IMAGE_CRUNCHY_PGRESTORE": CONTAINER_IMAGE_CRUNCHY_PGRESTORE, "RELATED_IMAGE_CRUNCHY_POSTGRES_HA": CONTAINER_IMAGE_CRUNCHY_POSTGRES_HA, "RELATED_IMAGE_CRUNCHY_POSTGRES_GIS_HA": CONTAINER_IMAGE_CRUNCHY_POSTGRES_GIS_HA, }
a map of the "RELATED_IMAGE_*" environmental variables to their defined container image names, which allows certain packagers to inject the full definition for where to pull a container image from
var RmdatajobTemplate *template.Template
var ServiceTemplate *template.Template
Functions ¶
func PostgreSQLWALPath ¶
PostgreSQLWALPath returns the absolute path to a mounted WAL directory.
func PostgreSQLWALVolumeMount ¶
func PostgreSQLWALVolumeMount() core_v1.VolumeMount
PostgreSQLWALVolumeMount returns the VolumeMount for the PostgreSQL WAL directory.
Types ¶
type ClusterStruct ¶
type ClusterStruct struct { CCPImagePrefix string CCPImageTag string Policies string Metrics bool Badger bool Port string PGBadgerPort string ExporterPort string User string Database string PasswordAgeDays string PasswordLength string Replicas string ServiceType string BackrestPort int Backrest bool BackrestS3Bucket string BackrestS3Endpoint string BackrestS3Region string DisableAutofail bool PgmonitorPassword string EnableCrunchyadm bool DisableReplicaStartFailReinit bool PodAntiAffinity string PodAntiAffinityPgBackRest string PodAntiAffinityPgBouncer string SyncReplication bool DefaultInstanceResourceMemory resource.Quantity `json:"DefaultInstanceMemory"` DefaultBackrestResourceMemory resource.Quantity `json:"DefaultBackrestMemory"` DefaultPgBouncerResourceMemory resource.Quantity `json:"DefaultPgBouncerMemory"` }
type PgoConfig ¶
type PgoConfig struct { BasicAuth string Cluster ClusterStruct Pgo PgoStruct PrimaryStorage string WALStorage string BackupStorage string ReplicaStorage string BackrestStorage string Storage map[string]StorageStruct }
func (*PgoConfig) CheckEnv ¶
func (c *PgoConfig) CheckEnv()
CheckEnv is mostly used for the OLM deployment use case when someone wants to deploy with OLM, use the baked-in configuration, but use a different set of images, by setting these env vars in the OLM CSV, users can override the baked in images
func (*PgoConfig) DefaultTemplate ¶
DefaultTemplate attempts to load a default configuration template file
func (*PgoConfig) GetConfig ¶
func (c *PgoConfig) GetConfig(clientset *kubernetes.Clientset, namespace string) error
func (*PgoConfig) GetPodAntiAffinitySpec ¶
func (c *PgoConfig) GetPodAntiAffinitySpec(cluster, pgBackRest, pgBouncer crv1.PodAntiAffinityType) (crv1.PodAntiAffinitySpec, error)
GetPodAntiAffinitySpec accepts possible user-defined values for what the pod anti-affinity spec should be, which include rules for: - PostgreSQL instances - pgBackRest - pgBouncer
func (*PgoConfig) GetStorageSpec ¶
func (c *PgoConfig) GetStorageSpec(name string) (crv1.PgStorageSpec, error)
type PgoStruct ¶
type PgoStruct struct { Audit bool ConfigMapWorkerCount *int ControllerGroupRefreshInterval *int NamespaceRefreshInterval *int PGClusterWorkerCount *int PGOImagePrefix string PGOImageTag string PGReplicaWorkerCount *int PGTaskWorkerCount *int }
PgoStruct defines various configuration settings for the PostgreSQL Operator