Documentation
¶
Overview ¶
Package specs contains the specification of the K8s resources generated by the CloudNativePG operator
Index ¶
- Constants
- func AddBarmanEndpointCAToPodSpec(podSpec *corev1.PodSpec, caSecret *apiv1.SecretKeySelector, ...)
- func BuildManagedServices(cluster apiv1.Cluster) ([]corev1.Service, error)
- func BuildPrimaryPodDisruptionBudget(cluster *apiv1.Cluster) *policyv1.PodDisruptionBudget
- func BuildReplicasPodDisruptionBudget(cluster *apiv1.Cluster) *policyv1.PodDisruptionBudget
- func ComparePodSpecs(currentPodSpec, targetPodSpec corev1.PodSpec) (bool, string)
- func CreateAffinitySection(clusterName string, config apiv1.AffinityConfiguration) *corev1.Affinity
- func CreateClusterAnyService(cluster apiv1.Cluster) *corev1.Service
- func CreateClusterReadOnlyService(cluster apiv1.Cluster) *corev1.Service
- func CreateClusterReadService(cluster apiv1.Cluster) *corev1.Service
- func CreateClusterReadWriteService(cluster apiv1.Cluster) *corev1.Service
- func CreateGeneratedAntiAffinity(clusterName string, config apiv1.AffinityConfiguration) *corev1.Affinity
- func CreateManagedSecretsAnnotationValue(imagePullSecretsNames []string) (string, error)
- func CreatePostgresVolumeMounts(cluster apiv1.Cluster) []corev1.VolumeMount
- func CreatePrimaryJob(cluster apiv1.Cluster, nodeSerial int, role jobRole, initCommand []string) *batchv1.Job
- func CreatePrimaryJobViaInitdb(cluster apiv1.Cluster, nodeSerial int) *batchv1.Job
- func CreatePrimaryJobViaPgBaseBackup(cluster apiv1.Cluster, nodeSerial int) *batchv1.Job
- func CreatePrimaryJobViaRecovery(cluster apiv1.Cluster, nodeSerial int, backup *apiv1.Backup) *batchv1.Job
- func CreatePrimaryJobViaRestoreSnapshot(cluster apiv1.Cluster, nodeSerial int, object *metav1.ObjectMeta, ...) *batchv1.Job
- func CreateRole(cluster apiv1.Cluster, backupOrigin *apiv1.Backup) rbacv1.Role
- func CreateRoleBinding(objectMeta metav1.ObjectMeta) rbacv1.RoleBinding
- func CreateSecret(name string, namespace string, hostname string, dbname string, username string, ...) *corev1.Secret
- func GetBootstrapControllerImageName(pod corev1.Pod) (string, error)
- func GetContainerImageName(pod corev1.Pod, containerName string) (string, error)
- func GetInitContainerImageName(pod corev1.Pod, containerName string) (string, error)
- func GetInstanceName(clusterName string, nodeSerial int) string
- func GetNodeSerial(object metav1.ObjectMeta) (int, error)
- func GetPodSecurityContext(cluster *apiv1.Cluster) *corev1.PodSecurityContext
- func GetPostgresImageName(pod corev1.Pod) (string, error)
- func GetSecurityContext(cluster *apiv1.Cluster) *corev1.SecurityContext
- func IsPodPrimary(pod corev1.Pod) bool
- func IsPodStandby(pod corev1.Pod) bool
- func IsPrimary(meta metav1.ObjectMeta) bool
- func IsServiceAccountAligned(ctx context.Context, sa *corev1.ServiceAccount, imagePullSecretsNames []string, ...) bool
- func JoinReplicaInstance(cluster apiv1.Cluster, nodeSerial int) *batchv1.Job
- func LocationForTablespace(tablespaceName string) string
- func MountForTablespace(tablespaceName string) string
- func NewInstance(ctx context.Context, cluster apiv1.Cluster, nodeSerial int, tlsEnabled bool) (*corev1.Pod, error)
- func PvcNameForTablespace(podName, tablespaceName string) string
- func RestoreReplicaInstance(cluster apiv1.Cluster, nodeSerial int) *batchv1.Job
- func SnapshotBackupNameForTablespace(backupName, tablespaceName string) string
- func UpdateServiceAccount(imagePullSecretsNames []string, serviceAccount *corev1.ServiceAccount) error
- func VolumeMountNameForTablespace(tablespaceName string) string
- type ClusterPodMonitorManager
- type EnvConfig
Constants ¶
const ( // ClusterSerialAnnotationName is the name of the annotation containing the // serial number of the node ClusterSerialAnnotationName = utils.ClusterSerialAnnotationName // ClusterRestartAnnotationName is the name of the annotation containing the // latest required restart time ClusterRestartAnnotationName = utils.ClusterRestartAnnotationName // ClusterReloadAnnotationName is the name of the annotation containing the // latest required restart time ClusterReloadAnnotationName = utils.ClusterReloadAnnotationName // WatchedLabelName label is for Secrets or ConfigMaps that needs to be reloaded WatchedLabelName = utils.WatchedLabelName // ClusterRoleLabelPrimary is written in labels to represent primary servers ClusterRoleLabelPrimary = "primary" // ClusterRoleLabelReplica is written in labels to represent replica servers ClusterRoleLabelReplica = "replica" // PostgresContainerName is the name of the container executing PostgreSQL // inside one Pod PostgresContainerName = "postgres" // BootstrapControllerContainerName is the name of the container copying the bootstrap // controller inside the Pod file system BootstrapControllerContainerName = "bootstrap-controller" // PgDataPath is the path to PGDATA variable PgDataPath = "/var/lib/postgresql/data/pgdata" // PgWalPath is the path to the pg_wal directory PgWalPath = PgDataPath + "/pg_wal" // PgWalArchiveStatusPath is the path to the archive status directory PgWalArchiveStatusPath = PgWalPath + "/archive_status" // ReadinessProbePeriod is the period set for the postgres instance readiness probe ReadinessProbePeriod = 10 // StartupProbePeriod is the period set for the postgres instance startup probe StartupProbePeriod = 10 // LivenessProbePeriod is the period set for the postgres instance liveness probe LivenessProbePeriod = 10 )
const PgTablespaceVolumePath = "/var/lib/postgresql/tablespaces"
PgTablespaceVolumePath is the base path used by tablespace when present
const PgWalVolumePath = "/var/lib/postgresql/wal"
PgWalVolumePath is the path used by the WAL volume when present
const PgWalVolumePgWalPath = "/var/lib/postgresql/wal/pg_wal"
PgWalVolumePgWalPath is the path of pg_wal directory inside the WAL volume when present
Variables ¶
This section is empty.
Functions ¶
func AddBarmanEndpointCAToPodSpec ¶ added in v1.16.1
func AddBarmanEndpointCAToPodSpec( podSpec *corev1.PodSpec, caSecret *apiv1.SecretKeySelector, credentials apiv1.BarmanCredentials, )
AddBarmanEndpointCAToPodSpec adds the required volumes and env variables needed by barman to work correctly
func BuildManagedServices ¶ added in v1.24.0
BuildManagedServices creates a list of Kubernetes Services based on the additional managed services specified in the Cluster's ManagedServices configuration. Returns: - []corev1.Service: a slice of Service objects created from the managed services configuration. - error: an error if the creation of any service fails, otherwise nil.
Example usage:
services, err := BuildManagedServices(cluster)
if err != nil {
// handle error
}
for idx := range services {
// use the created services
}
func BuildPrimaryPodDisruptionBudget ¶
func BuildPrimaryPodDisruptionBudget(cluster *apiv1.Cluster) *policyv1.PodDisruptionBudget
BuildPrimaryPodDisruptionBudget creates a pod disruption budget, telling K8s to avoid removing more than one primary instance at a time
func BuildReplicasPodDisruptionBudget ¶
func BuildReplicasPodDisruptionBudget(cluster *apiv1.Cluster) *policyv1.PodDisruptionBudget
BuildReplicasPodDisruptionBudget creates a pod disruption budget telling K8s to avoid removing more than one replica at a time
func ComparePodSpecs ¶ added in v1.19.5
ComparePodSpecs compares two pod specs, returns true iff they are equivalent, and if they are not, points out the first discrepancy.
func CreateAffinitySection ¶
func CreateAffinitySection(clusterName string, config apiv1.AffinityConfiguration) *corev1.Affinity
CreateAffinitySection creates the affinity sections for Pods, given the configuration from the user
func CreateClusterAnyService ¶
CreateClusterAnyService create a service insisting on all the pods
func CreateClusterReadOnlyService ¶
CreateClusterReadOnlyService create a service insisting on all the ready pods
func CreateClusterReadService ¶
CreateClusterReadService create a service insisting on all the ready pods
func CreateClusterReadWriteService ¶
CreateClusterReadWriteService create a service insisting on the primary pod
func CreateGeneratedAntiAffinity ¶
func CreateGeneratedAntiAffinity(clusterName string, config apiv1.AffinityConfiguration) *corev1.Affinity
CreateGeneratedAntiAffinity generates the affinity terms the operator is in charge for if enabled, return nil if disabled or an error occurred, as invalid values should be validated before this method is called
func CreateManagedSecretsAnnotationValue ¶
CreateManagedSecretsAnnotationValue creates the value of the annotations that stores the names of the secrets managed by the operator inside a ServiceAccount
func CreatePostgresVolumeMounts ¶ added in v1.26.0
func CreatePostgresVolumeMounts(cluster apiv1.Cluster) []corev1.VolumeMount
CreatePostgresVolumeMounts creates the volume mounts that are used by PostgreSQL Pods
func CreatePrimaryJob ¶ added in v1.26.0
func CreatePrimaryJob(cluster apiv1.Cluster, nodeSerial int, role jobRole, initCommand []string) *batchv1.Job
CreatePrimaryJob create a job that executes the provided command. The role should describe the purpose of the executed job
func CreatePrimaryJobViaInitdb ¶
CreatePrimaryJobViaInitdb creates a new primary instance in a Pod
func CreatePrimaryJobViaPgBaseBackup ¶
CreatePrimaryJobViaPgBaseBackup creates a new primary instance in a Pod
func CreatePrimaryJobViaRecovery ¶
func CreatePrimaryJobViaRecovery(cluster apiv1.Cluster, nodeSerial int, backup *apiv1.Backup) *batchv1.Job
CreatePrimaryJobViaRecovery creates a new primary instance in a Pod, restoring from a Backup
func CreatePrimaryJobViaRestoreSnapshot ¶ added in v1.20.3
func CreatePrimaryJobViaRestoreSnapshot( cluster apiv1.Cluster, nodeSerial int, object *metav1.ObjectMeta, backup *apiv1.Backup, ) *batchv1.Job
CreatePrimaryJobViaRestoreSnapshot creates a new primary instance in a Pod, restoring from a volumeSnapshot
func CreateRole ¶
CreateRole create a role with the permissions needed by the instance manager
func CreateRoleBinding ¶
func CreateRoleBinding(objectMeta metav1.ObjectMeta) rbacv1.RoleBinding
CreateRoleBinding is the binding between the permissions that the instance manager can use and the ServiceAccount used by the Pod
func CreateSecret ¶
func CreateSecret( name string, namespace string, hostname string, dbname string, username string, password string, usertype utils.UserType, ) *corev1.Secret
CreateSecret creates a secret with the PostgreSQL and the owner passwords
func GetBootstrapControllerImageName ¶
GetBootstrapControllerImageName get the controller image name used to bootstrap a Pod
func GetContainerImageName ¶
GetContainerImageName get the name of the image used in a container
func GetInitContainerImageName ¶
GetInitContainerImageName get the name of the image used in an init container
func GetInstanceName ¶ added in v1.18.0
GetInstanceName returns a string indicating the instance name
func GetNodeSerial ¶
func GetNodeSerial(object metav1.ObjectMeta) (int, error)
GetNodeSerial get the serial number of an object created by the operator for a Cluster
func GetPodSecurityContext ¶ added in v1.28.0
func GetPodSecurityContext(cluster *apiv1.Cluster) *corev1.PodSecurityContext
GetPodSecurityContext return the proper PodSecurityContext set in the cluster for Pods
func GetPostgresImageName ¶
GetPostgresImageName get the PostgreSQL image name used in this Pod
func GetSecurityContext ¶ added in v1.28.0
func GetSecurityContext(cluster *apiv1.Cluster) *corev1.SecurityContext
GetSecurityContext return the proper SecurityContext in the cluster for Containers in Pods
func IsPodPrimary ¶
IsPodPrimary check if a certain pod belongs to a primary
func IsPodStandby ¶
IsPodStandby check if a certain pod belongs to a standby
func IsPrimary ¶ added in v1.19.5
func IsPrimary(meta metav1.ObjectMeta) bool
IsPrimary check if a certain resource belongs to a primary
func IsServiceAccountAligned ¶
func IsServiceAccountAligned( ctx context.Context, sa *corev1.ServiceAccount, imagePullSecretsNames []string, updatedMetadata metav1.ObjectMeta, ) bool
IsServiceAccountAligned compares the given list of pull secrets with the ones managed by the operator inside the given ServiceAccount and returns true when everything is aligned
func JoinReplicaInstance ¶
JoinReplicaInstance create a new PostgreSQL node, copying the contents from another Pod
func LocationForTablespace ¶ added in v1.22.0
LocationForTablespace returns the data location for tablespace on a cluster pod
func MountForTablespace ¶ added in v1.22.0
MountForTablespace returns the normalized tablespace volume name for a given tablespace, on a cluster pod
func NewInstance ¶ added in v1.25.2
func NewInstance( ctx context.Context, cluster apiv1.Cluster, nodeSerial int, tlsEnabled bool, ) (*corev1.Pod, error)
NewInstance creates a new instance Pod with the plugin patches applied
func PvcNameForTablespace ¶ added in v1.22.0
PvcNameForTablespace returns the normalized tablespace volume name for a given tablespace, on a cluster pod
func RestoreReplicaInstance ¶ added in v1.21.0
RestoreReplicaInstance creates a new PostgreSQL replica starting from a volume snapshot backup
func SnapshotBackupNameForTablespace ¶ added in v1.22.0
SnapshotBackupNameForTablespace returns the volume snapshot backup name for the tablespace
func UpdateServiceAccount ¶
func UpdateServiceAccount(imagePullSecretsNames []string, serviceAccount *corev1.ServiceAccount) error
UpdateServiceAccount sets the needed values in the ServiceAccount that will be used in every Pod
func VolumeMountNameForTablespace ¶ added in v1.22.0
VolumeMountNameForTablespace returns the normalized tablespace volume name for a given tablespace, on a cluster pod
Types ¶
type ClusterPodMonitorManager ¶ added in v1.18.5
type ClusterPodMonitorManager struct {
// contains filtered or unexported fields
}
ClusterPodMonitorManager builds the PodMonitor for the cluster resource
func NewClusterPodMonitorManager ¶ added in v1.18.5
func NewClusterPodMonitorManager(cluster *apiv1.Cluster) *ClusterPodMonitorManager
NewClusterPodMonitorManager returns a new instance of ClusterPodMonitorManager
func (ClusterPodMonitorManager) BuildPodMonitor ¶ added in v1.18.5
func (c ClusterPodMonitorManager) BuildPodMonitor() *monitoringv1.PodMonitor
BuildPodMonitor builds a new PodMonitor object
func (ClusterPodMonitorManager) IsPodMonitorEnabled ¶ added in v1.18.5
func (c ClusterPodMonitorManager) IsPodMonitorEnabled() bool
IsPodMonitorEnabled returns a boolean indicating if the PodMonitor should exists or not
type EnvConfig ¶ added in v1.18.2
type EnvConfig struct {
EnvVars []corev1.EnvVar
EnvFrom []corev1.EnvFromSource
Hash string
}
EnvConfig carries the environment configuration of a container
func CreatePodEnvConfig ¶ added in v1.18.2
CreatePodEnvConfig returns the hash of pod env configuration
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package pgbouncer contains the specification of the K8s resources generated by the CloudNativePG operator related to pgbouncer poolers
|
Package pgbouncer contains the specification of the K8s resources generated by the CloudNativePG operator related to pgbouncer poolers |