@@ -148,6 +148,39 @@ func (bcp *Backup) JobSpec(spec api.PXCBackupSpec, cluster *api.PerconaXtraDBClu
148148 }, nil
149149}
150150
151+ func appendCABundleSecret (job * batchv1.JobSpec , cr * api.PerconaXtraDBClusterBackup ) error {
152+ if len (job .Template .Spec .Containers ) == 0 {
153+ return errors .New ("no containers in job spec" )
154+ }
155+ secretKeySel := cr .Status .S3 .CABundle .GetSecretKeySelector ()
156+ if secretKeySel == nil {
157+ return nil
158+ }
159+
160+ vol := corev1.Volume {
161+ Name : "ca-bundle" ,
162+ VolumeSource : corev1.VolumeSource {
163+ Secret : & corev1.SecretVolumeSource {
164+ SecretName : secretKeySel .Name ,
165+ Items : []corev1.KeyToPath {
166+ {
167+ Key : secretKeySel .Key ,
168+ Path : "ca.crt" ,
169+ },
170+ },
171+ },
172+ },
173+ }
174+
175+ mnt := corev1.VolumeMount {
176+ Name : "ca-bundle" ,
177+ MountPath : "/etc/s3/certs" ,
178+ }
179+ job .Template .Spec .Volumes = append (job .Template .Spec .Volumes , vol )
180+ job .Template .Spec .Containers [0 ].VolumeMounts = append (job .Template .Spec .Containers [0 ].VolumeMounts , mnt )
181+ return nil
182+ }
183+
151184func appendStorageSecret (job * batchv1.JobSpec , cr * api.PerconaXtraDBClusterBackup ) error {
152185 // Volume for secret
153186 secretVol := corev1.Volume {
@@ -198,7 +231,6 @@ func appendStorageSecret(job *batchv1.JobSpec, cr *api.PerconaXtraDBClusterBacku
198231 secretIntVol ,
199232 secretVaultVol ,
200233 )
201-
202234 return nil
203235}
204236
@@ -323,19 +355,11 @@ func SetStorageS3(job *batchv1.JobSpec, cr *api.PerconaXtraDBClusterBackup) erro
323355 job .Template .Spec .Containers [0 ].Env = append (job .Template .Spec .Containers [0 ].Env , accessKey , secretKey )
324356 }
325357
326- if caBundle := s3 .CABundle ; caBundle != nil {
327- envVar := corev1.EnvVar {}
328- switch {
329- case caBundle .GetValue () != "" :
330- envVar .Name = "CA_BUNDLE"
331- envVar .Value = caBundle .GetValue ()
332- case caBundle .GetSecretKeySelector () != nil :
333- envVar .Name = "CA_BUNDLE"
334- envVar .ValueFrom = & corev1.EnvVarSource {
335- SecretKeyRef : caBundle .GetSecretKeySelector (),
336- }
337- }
338- job .Template .Spec .Containers [0 ].Env = append (job .Template .Spec .Containers [0 ].Env , envVar )
358+ if caBundle := s3 .CABundle .GetValue (); caBundle != "" {
359+ job .Template .Spec .Containers [0 ].Env = append (job .Template .Spec .Containers [0 ].Env , corev1.EnvVar {
360+ Name : "CA_BUNDLE" ,
361+ Value : caBundle ,
362+ })
339363 }
340364
341365 job .Template .Spec .Containers [0 ].Env = append (job .Template .Spec .Containers [0 ].Env , region , endpoint )
@@ -362,5 +386,10 @@ func SetStorageS3(job *batchv1.JobSpec, cr *api.PerconaXtraDBClusterBackup) erro
362386 return errors .Wrap (err , "failed to append storage secrets" )
363387 }
364388
389+ // add CA bundle secret volume
390+ if err := appendCABundleSecret (job , cr ); err != nil {
391+ return errors .Wrap (err , "failed to append CA bundle secret" )
392+ }
393+
365394 return nil
366395}
0 commit comments