Fix dindWithinRunnerContainer not to crash-loop runner pods (#419)

Apparently #253 broke dindWithinRunnerContainer completely due to the difference in how /runner volume is set up.
This commit is contained in:
Yusuke Kuoka 2021-03-25 10:23:36 +09:00 committed by GitHub
parent bc6e499e4f
commit 374105c1f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 34 additions and 21 deletions

View File

@ -634,45 +634,58 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) {
}...) }...)
} }
if !dockerdInRunner && dockerEnabled { //
runnerVolumeName := "runner" // /runner must be generated on runtime from /runnertmp embedded in the container image.
runnerVolumeMountPath := "/runner" //
// When you're NOT using dindWithinRunner=true,
// it must also be shared with the dind container as it seems like required to run docker steps.
//
pod.Spec.Volumes = []corev1.Volume{ runnerVolumeName := "runner"
{ runnerVolumeMountPath := "/runner"
pod.Spec.Volumes = append(pod.Spec.Volumes,
corev1.Volume{
Name: runnerVolumeName,
VolumeSource: corev1.VolumeSource{
EmptyDir: &corev1.EmptyDirVolumeSource{},
},
},
)
pod.Spec.Containers[0].VolumeMounts = append(pod.Spec.Containers[0].VolumeMounts,
corev1.VolumeMount{
Name: runnerVolumeName,
MountPath: runnerVolumeMountPath,
},
)
if !dockerdInRunner && dockerEnabled {
pod.Spec.Volumes = append(pod.Spec.Volumes,
corev1.Volume{
Name: "work", Name: "work",
VolumeSource: corev1.VolumeSource{ VolumeSource: corev1.VolumeSource{
EmptyDir: &corev1.EmptyDirVolumeSource{}, EmptyDir: &corev1.EmptyDirVolumeSource{},
}, },
}, },
{ corev1.Volume{
Name: runnerVolumeName,
VolumeSource: corev1.VolumeSource{
EmptyDir: &corev1.EmptyDirVolumeSource{},
},
},
{
Name: "certs-client", Name: "certs-client",
VolumeSource: corev1.VolumeSource{ VolumeSource: corev1.VolumeSource{
EmptyDir: &corev1.EmptyDirVolumeSource{}, EmptyDir: &corev1.EmptyDirVolumeSource{},
}, },
}, },
} )
pod.Spec.Containers[0].VolumeMounts = []corev1.VolumeMount{ pod.Spec.Containers[0].VolumeMounts = append(pod.Spec.Containers[0].VolumeMounts,
{ corev1.VolumeMount{
Name: "work", Name: "work",
MountPath: workDir, MountPath: workDir,
}, },
{ corev1.VolumeMount{
Name: runnerVolumeName,
MountPath: runnerVolumeMountPath,
},
{
Name: "certs-client", Name: "certs-client",
MountPath: "/certs/client", MountPath: "/certs/client",
ReadOnly: true, ReadOnly: true,
}, },
} )
pod.Spec.Containers[0].Env = append(pod.Spec.Containers[0].Env, []corev1.EnvVar{ pod.Spec.Containers[0].Env = append(pod.Spec.Containers[0].Env, []corev1.EnvVar{
{ {
Name: "DOCKER_HOST", Name: "DOCKER_HOST",