@@ -131,19 +131,33 @@ func (impl LifecycleImplementation) reconcileJob(
131131 return nil , err
132132 }
133133
134+ livenessProbe , err := impl .collectSidecarLivenessProbeForRecoveryJob (ctx , pluginConfiguration )
135+ if err != nil {
136+ return nil , err
137+ }
138+
139+ readinessProbe , err := impl .collectSidecarReadinessProbeForRecoveryJob (ctx , pluginConfiguration )
140+ if err != nil {
141+ return nil , err
142+ }
143+
134144 return reconcileJob (ctx , cluster , request , sidecarConfiguration {
135- env : env ,
136- certificates : certificates ,
137- resources : resources ,
138- startupProbe : startupProbe ,
145+ env : env ,
146+ certificates : certificates ,
147+ resources : resources ,
148+ startupProbe : startupProbe ,
149+ livenessProbe : livenessProbe ,
150+ readinessProbe : readinessProbe ,
139151 })
140152}
141153
142154type sidecarConfiguration struct {
143- env []corev1.EnvVar
144- certificates []corev1.VolumeProjection
145- resources corev1.ResourceRequirements
146- startupProbe * barmancloudv1.ProbeConfig
155+ env []corev1.EnvVar
156+ certificates []corev1.VolumeProjection
157+ resources corev1.ResourceRequirements
158+ startupProbe * barmancloudv1.ProbeConfig
159+ livenessProbe * barmancloudv1.ProbeConfig
160+ readinessProbe * barmancloudv1.ProbeConfig
147161}
148162
149163func reconcileJob (
@@ -230,11 +244,23 @@ func (impl LifecycleImplementation) reconcilePod(
230244 return nil , err
231245 }
232246
247+ livenessProbe , err := impl .collectSidecarLivenessProbeForInstancePod (ctx , pluginConfiguration )
248+ if err != nil {
249+ return nil , err
250+ }
251+
252+ readinessProbe , err := impl .collectSidecarReadinessProbeForInstancePod (ctx , pluginConfiguration )
253+ if err != nil {
254+ return nil , err
255+ }
256+
233257 return reconcilePod (ctx , cluster , request , pluginConfiguration , sidecarConfiguration {
234- env : env ,
235- certificates : certificates ,
236- resources : resources ,
237- startupProbe : startupProbe ,
258+ env : env ,
259+ certificates : certificates ,
260+ resources : resources ,
261+ startupProbe : startupProbe ,
262+ livenessProbe : livenessProbe ,
263+ readinessProbe : readinessProbe ,
238264 })
239265}
240266
@@ -325,25 +351,37 @@ func reconcilePodSpec(
325351 },
326352 }
327353
328- // Apply configurable probe settings if available
329- if config .startupProbe != nil {
330- // Copy timing and threshold settings from user configuration
331- baseProbe .InitialDelaySeconds = config .startupProbe .InitialDelaySeconds
332- baseProbe .TimeoutSeconds = config .startupProbe .TimeoutSeconds
333- baseProbe .PeriodSeconds = config .startupProbe .PeriodSeconds
334- baseProbe .FailureThreshold = config .startupProbe .FailureThreshold
335- baseProbe .SuccessThreshold = config .startupProbe .SuccessThreshold
336- } else {
337- // Fallback to default values
338- baseProbe .FailureThreshold = 10
339- baseProbe .TimeoutSeconds = 10
340- }
354+ startupProbe := createProbe (baseProbe , config .startupProbe , & barmancloudv1.ProbeConfig {
355+ FailureThreshold : 10 ,
356+ TimeoutSeconds : 10 ,
357+ InitialDelaySeconds : 0 ,
358+ SuccessThreshold : 1 ,
359+ PeriodSeconds : 10 ,
360+ })
361+
362+ livenessProbe := createProbe (baseProbe , config .livenessProbe , & barmancloudv1.ProbeConfig {
363+ FailureThreshold : 3 ,
364+ TimeoutSeconds : 10 ,
365+ InitialDelaySeconds : 0 ,
366+ SuccessThreshold : 1 ,
367+ PeriodSeconds : 10 ,
368+ })
369+
370+ readinessProbe := createProbe (baseProbe , config .readinessProbe , & barmancloudv1.ProbeConfig {
371+ FailureThreshold : 3 ,
372+ TimeoutSeconds : 10 ,
373+ InitialDelaySeconds : 0 ,
374+ SuccessThreshold : 1 ,
375+ PeriodSeconds : 10 ,
376+ })
341377
342378 // fixed values
343379 sidecarTemplate .Name = "plugin-barman-cloud"
344380 sidecarTemplate .Image = viper .GetString ("sidecar-image" )
345381 sidecarTemplate .ImagePullPolicy = cluster .Spec .ImagePullPolicy
346- sidecarTemplate .StartupProbe = baseProbe .DeepCopy ()
382+ sidecarTemplate .StartupProbe = startupProbe
383+ sidecarTemplate .LivenessProbe = livenessProbe
384+ sidecarTemplate .ReadinessProbe = readinessProbe
347385 sidecarTemplate .SecurityContext = & corev1.SecurityContext {
348386 AllowPrivilegeEscalation : ptr .To (false ),
349387 RunAsNonRoot : ptr .To (true ),
@@ -567,3 +605,33 @@ func getCNPGJobRole(job *batchv1.Job) string {
567605
568606 return ""
569607}
608+
609+ // createProbe creates a probe using the base probe's handler and applies configuration or default values
610+ func createProbe (baseProbe * corev1.Probe , config * barmancloudv1.ProbeConfig , defaults * barmancloudv1.ProbeConfig ) * corev1.Probe {
611+ probe := baseProbe .DeepCopy ()
612+ probe .FailureThreshold = defaults .FailureThreshold
613+ probe .TimeoutSeconds = defaults .TimeoutSeconds
614+ probe .InitialDelaySeconds = defaults .InitialDelaySeconds
615+ probe .SuccessThreshold = defaults .SuccessThreshold
616+ probe .PeriodSeconds = defaults .PeriodSeconds
617+
618+ if config != nil {
619+ if config .InitialDelaySeconds != 0 {
620+ probe .InitialDelaySeconds = config .InitialDelaySeconds
621+ }
622+ if config .TimeoutSeconds != 0 {
623+ probe .TimeoutSeconds = config .TimeoutSeconds
624+ }
625+ if config .PeriodSeconds != 0 {
626+ probe .PeriodSeconds = config .PeriodSeconds
627+ }
628+ if config .SuccessThreshold != 0 {
629+ probe .SuccessThreshold = config .SuccessThreshold
630+ }
631+ if config .FailureThreshold != 0 {
632+ probe .FailureThreshold = config .FailureThreshold
633+ }
634+ }
635+
636+ return probe
637+ }
0 commit comments