Skip to content

Commit c2d04d4

Browse files
improve ca bundle mounting logic
Signed-off-by: Mayank Shah <[email protected]>
1 parent 86768bd commit c2d04d4

File tree

2 files changed

+50
-18
lines changed

2 files changed

+50
-18
lines changed

build/backup/lib/pxc/aws.sh

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@ if [ -n "$VERIFY_TLS" ] && [[ $VERIFY_TLS == "false" ]]; then
1010
AWS_S3_NO_VERIFY_SSL='--no-verify-ssl'
1111
fi
1212

13-
if [ -n "$CA_BUNDLE" ]; then
14-
touch /tmp/ca.crt
15-
echo "$CA_BUNDLE" > /tmp/ca.crt
16-
export AWS_CA_BUNDLE='/tmp/ca.crt'
13+
caBundleFile="/etc/s3/certs/ca.crt"
14+
if [ -f "$caBundleFile" ]; then
15+
export AWS_CA_BUNDLE="$caBundleFile"
16+
elif [ -n "$CA_BUNDLE" ]; then
17+
touch $caBundleFile
18+
echo "$CA_BUNDLE" | base64 -d > $caBundleFile
19+
export AWS_CA_BUNDLE="$caBundleFile"
1720
fi
1821

1922
is_object_exist() {

pkg/pxc/backup/job.go

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
151184
func 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

Comments
 (0)