MCPcopy Create free account
hub / github.com/CrunchyData/postgres-operator / InstancePod

Function InstancePod

internal/postgres/reconcile.go:59–292  ·  view source on GitHub ↗

InstancePod initializes outInstancePod with the database container and the volumes needed by PostgreSQL.

(ctx context.Context,
	inCluster *v1beta1.PostgresCluster,
	inInstanceSpec *v1beta1.PostgresInstanceSetSpec,
	inClusterCertificates, inClientCertificates *corev1.SecretProjection,
	inDataVolume, inWALVolume *corev1.PersistentVolumeClaim,
	inTablespaceVolumes []*corev1.PersistentVolumeClaim,
	inParameters *ParameterSet,
	outInstancePod *corev1.PodTemplateSpec,
)

Source from the content-addressed store, hash-verified

57// InstancePod initializes outInstancePod with the database container and the
58// volumes needed by PostgreSQL.
59func InstancePod(ctx context.Context,
60 inCluster *v1beta1.PostgresCluster,
61 inInstanceSpec *v1beta1.PostgresInstanceSetSpec,
62 inClusterCertificates, inClientCertificates *corev1.SecretProjection,
63 inDataVolume, inWALVolume *corev1.PersistentVolumeClaim,
64 inTablespaceVolumes []*corev1.PersistentVolumeClaim,
65 inParameters *ParameterSet,
66 outInstancePod *corev1.PodTemplateSpec,
67) {
68 certVolumeMount := corev1.VolumeMount{
69 Name: naming.CertVolume,
70 MountPath: naming.CertMountPath,
71 ReadOnly: true,
72 }
73 certVolume := corev1.Volume{
74 Name: certVolumeMount.Name,
75 VolumeSource: corev1.VolumeSource{
76 Projected: &corev1.ProjectedVolumeSource{
77 // PostgreSQL expects client certificate keys to not be readable
78 // by any other user.
79 // - https://www.postgresql.org/docs/current/libpq-ssl.html
80 DefaultMode: initialize.Int32(0o600),
81 Sources: []corev1.VolumeProjection{
82 {Secret: inClusterCertificates},
83 {Secret: inClientCertificates},
84 },
85 },
86 },
87 }
88
89 dataVolumeMount := DataVolumeMount()
90 dataVolume := corev1.Volume{
91 Name: dataVolumeMount.Name,
92 VolumeSource: corev1.VolumeSource{
93 PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
94 ClaimName: inDataVolume.Name,
95 ReadOnly: false,
96 },
97 },
98 }
99
100 downwardAPIVolumeMount := DownwardAPIVolumeMount()
101 downwardAPIVolume := corev1.Volume{
102 Name: downwardAPIVolumeMount.Name,
103 VolumeSource: corev1.VolumeSource{
104 DownwardAPI: &corev1.DownwardAPIVolumeSource{
105 // The paths defined in Items (cpu_limit, cpu_request, etc.)
106 // are hard coded in the pgnodemx queries defined by
107 // pgMonitor configuration (queries_nodemx.yml)
108 // https://github.com/CrunchyData/pgmonitor/blob/master/postgres_exporter/common/queries_nodemx.yml
109 Items: []corev1.DownwardAPIVolumeFile{{
110 Path: "cpu_limit",
111 ResourceFieldRef: &corev1.ResourceFieldSelector{
112 ContainerName: naming.ContainerDatabase,
113 Resource: "limits.cpu",
114 },
115 }, {
116 Path: "cpu_request",

Callers 2

reconcileInstanceMethod · 0.92
TestInstancePodFunction · 0.70

Calls 14

Int32Function · 0.92
PostgresContainerImageFunction · 0.92
EnabledFunction · 0.92
DataVolumeMountFunction · 0.85
DownwardAPIVolumeMountFunction · 0.85
EnvironmentFunction · 0.85
TablespaceVolumeMountFunction · 0.85
ConfigVolumeMountFunction · 0.85
WALVolumeMountFunction · 0.85
TempVolumeMountFunction · 0.85
reloadCommandFunction · 0.70

Tested by 1

TestInstancePodFunction · 0.56