parent
							
								
									3c125e2191
								
							
						
					
					
						commit
						b42b8406a2
					
				|  | @ -48,6 +48,8 @@ type RunnerSpec struct { | ||||||
| 	// +optional
 | 	// +optional
 | ||||||
| 	DockerdContainerResources corev1.ResourceRequirements `json:"dockerdContainerResources,omitempty"` | 	DockerdContainerResources corev1.ResourceRequirements `json:"dockerdContainerResources,omitempty"` | ||||||
| 	// +optional
 | 	// +optional
 | ||||||
|  | 	DockerVolumeMounts []corev1.VolumeMount `json:"dockerVolumeMounts,omitempty"` | ||||||
|  | 	// +optional
 | ||||||
| 	Resources corev1.ResourceRequirements `json:"resources,omitempty"` | 	Resources corev1.ResourceRequirements `json:"resources,omitempty"` | ||||||
| 	// +optional
 | 	// +optional
 | ||||||
| 	VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"` | 	VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"` | ||||||
|  |  | ||||||
|  | @ -595,6 +595,13 @@ func (in *RunnerSpec) DeepCopyInto(out *RunnerSpec) { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	in.DockerdContainerResources.DeepCopyInto(&out.DockerdContainerResources) | 	in.DockerdContainerResources.DeepCopyInto(&out.DockerdContainerResources) | ||||||
|  | 	if in.DockerVolumeMounts != nil { | ||||||
|  | 		in, out := &in.DockerVolumeMounts, &out.DockerVolumeMounts | ||||||
|  | 		*out = make([]v1.VolumeMount, len(*in)) | ||||||
|  | 		for i := range *in { | ||||||
|  | 			(*in)[i].DeepCopyInto(&(*out)[i]) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	in.Resources.DeepCopyInto(&out.Resources) | 	in.Resources.DeepCopyInto(&out.Resources) | ||||||
| 	if in.VolumeMounts != nil { | 	if in.VolumeMounts != nil { | ||||||
| 		in, out := &in.VolumeMounts, &out.VolumeMounts | 		in, out := &in.VolumeMounts, &out.VolumeMounts | ||||||
|  |  | ||||||
|  | @ -436,6 +436,33 @@ spec: | ||||||
|                     dockerMTU: |                     dockerMTU: | ||||||
|                       format: int64 |                       format: int64 | ||||||
|                       type: integer |                       type: integer | ||||||
|  |                     dockerVolumeMounts: | ||||||
|  |                       items: | ||||||
|  |                         description: VolumeMount describes a mounting of a Volume within a container. | ||||||
|  |                         properties: | ||||||
|  |                           mountPath: | ||||||
|  |                             description: Path within the container at which the volume should be mounted.  Must not contain ':'. | ||||||
|  |                             type: string | ||||||
|  |                           mountPropagation: | ||||||
|  |                             description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. | ||||||
|  |                             type: string | ||||||
|  |                           name: | ||||||
|  |                             description: This must match the Name of a Volume. | ||||||
|  |                             type: string | ||||||
|  |                           readOnly: | ||||||
|  |                             description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. | ||||||
|  |                             type: boolean | ||||||
|  |                           subPath: | ||||||
|  |                             description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). | ||||||
|  |                             type: string | ||||||
|  |                           subPathExpr: | ||||||
|  |                             description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. This field is beta in 1.15. | ||||||
|  |                             type: string | ||||||
|  |                         required: | ||||||
|  |                           - mountPath | ||||||
|  |                           - name | ||||||
|  |                         type: object | ||||||
|  |                       type: array | ||||||
|                     dockerdContainerResources: |                     dockerdContainerResources: | ||||||
|                       description: ResourceRequirements describes the compute resource requirements. |                       description: ResourceRequirements describes the compute resource requirements. | ||||||
|                       properties: |                       properties: | ||||||
|  |  | ||||||
|  | @ -436,6 +436,33 @@ spec: | ||||||
|                     dockerMTU: |                     dockerMTU: | ||||||
|                       format: int64 |                       format: int64 | ||||||
|                       type: integer |                       type: integer | ||||||
|  |                     dockerVolumeMounts: | ||||||
|  |                       items: | ||||||
|  |                         description: VolumeMount describes a mounting of a Volume within a container. | ||||||
|  |                         properties: | ||||||
|  |                           mountPath: | ||||||
|  |                             description: Path within the container at which the volume should be mounted.  Must not contain ':'. | ||||||
|  |                             type: string | ||||||
|  |                           mountPropagation: | ||||||
|  |                             description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. | ||||||
|  |                             type: string | ||||||
|  |                           name: | ||||||
|  |                             description: This must match the Name of a Volume. | ||||||
|  |                             type: string | ||||||
|  |                           readOnly: | ||||||
|  |                             description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. | ||||||
|  |                             type: boolean | ||||||
|  |                           subPath: | ||||||
|  |                             description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). | ||||||
|  |                             type: string | ||||||
|  |                           subPathExpr: | ||||||
|  |                             description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. This field is beta in 1.15. | ||||||
|  |                             type: string | ||||||
|  |                         required: | ||||||
|  |                           - mountPath | ||||||
|  |                           - name | ||||||
|  |                         type: object | ||||||
|  |                       type: array | ||||||
|                     dockerdContainerResources: |                     dockerdContainerResources: | ||||||
|                       description: ResourceRequirements describes the compute resource requirements. |                       description: ResourceRequirements describes the compute resource requirements. | ||||||
|                       properties: |                       properties: | ||||||
|  |  | ||||||
|  | @ -401,6 +401,33 @@ spec: | ||||||
|             dockerMTU: |             dockerMTU: | ||||||
|               format: int64 |               format: int64 | ||||||
|               type: integer |               type: integer | ||||||
|  |             dockerVolumeMounts: | ||||||
|  |               items: | ||||||
|  |                 description: VolumeMount describes a mounting of a Volume within a container. | ||||||
|  |                 properties: | ||||||
|  |                   mountPath: | ||||||
|  |                     description: Path within the container at which the volume should be mounted.  Must not contain ':'. | ||||||
|  |                     type: string | ||||||
|  |                   mountPropagation: | ||||||
|  |                     description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. | ||||||
|  |                     type: string | ||||||
|  |                   name: | ||||||
|  |                     description: This must match the Name of a Volume. | ||||||
|  |                     type: string | ||||||
|  |                   readOnly: | ||||||
|  |                     description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. | ||||||
|  |                     type: boolean | ||||||
|  |                   subPath: | ||||||
|  |                     description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). | ||||||
|  |                     type: string | ||||||
|  |                   subPathExpr: | ||||||
|  |                     description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. This field is beta in 1.15. | ||||||
|  |                     type: string | ||||||
|  |                 required: | ||||||
|  |                   - mountPath | ||||||
|  |                   - name | ||||||
|  |                 type: object | ||||||
|  |               type: array | ||||||
|             dockerdContainerResources: |             dockerdContainerResources: | ||||||
|               description: ResourceRequirements describes the compute resource requirements. |               description: ResourceRequirements describes the compute resource requirements. | ||||||
|               properties: |               properties: | ||||||
|  |  | ||||||
|  | @ -436,6 +436,33 @@ spec: | ||||||
|                     dockerMTU: |                     dockerMTU: | ||||||
|                       format: int64 |                       format: int64 | ||||||
|                       type: integer |                       type: integer | ||||||
|  |                     dockerVolumeMounts: | ||||||
|  |                       items: | ||||||
|  |                         description: VolumeMount describes a mounting of a Volume within a container. | ||||||
|  |                         properties: | ||||||
|  |                           mountPath: | ||||||
|  |                             description: Path within the container at which the volume should be mounted.  Must not contain ':'. | ||||||
|  |                             type: string | ||||||
|  |                           mountPropagation: | ||||||
|  |                             description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. | ||||||
|  |                             type: string | ||||||
|  |                           name: | ||||||
|  |                             description: This must match the Name of a Volume. | ||||||
|  |                             type: string | ||||||
|  |                           readOnly: | ||||||
|  |                             description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. | ||||||
|  |                             type: boolean | ||||||
|  |                           subPath: | ||||||
|  |                             description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). | ||||||
|  |                             type: string | ||||||
|  |                           subPathExpr: | ||||||
|  |                             description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. This field is beta in 1.15. | ||||||
|  |                             type: string | ||||||
|  |                         required: | ||||||
|  |                           - mountPath | ||||||
|  |                           - name | ||||||
|  |                         type: object | ||||||
|  |                       type: array | ||||||
|                     dockerdContainerResources: |                     dockerdContainerResources: | ||||||
|                       description: ResourceRequirements describes the compute resource requirements. |                       description: ResourceRequirements describes the compute resource requirements. | ||||||
|                       properties: |                       properties: | ||||||
|  |  | ||||||
|  | @ -436,6 +436,33 @@ spec: | ||||||
|                     dockerMTU: |                     dockerMTU: | ||||||
|                       format: int64 |                       format: int64 | ||||||
|                       type: integer |                       type: integer | ||||||
|  |                     dockerVolumeMounts: | ||||||
|  |                       items: | ||||||
|  |                         description: VolumeMount describes a mounting of a Volume within a container. | ||||||
|  |                         properties: | ||||||
|  |                           mountPath: | ||||||
|  |                             description: Path within the container at which the volume should be mounted.  Must not contain ':'. | ||||||
|  |                             type: string | ||||||
|  |                           mountPropagation: | ||||||
|  |                             description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. | ||||||
|  |                             type: string | ||||||
|  |                           name: | ||||||
|  |                             description: This must match the Name of a Volume. | ||||||
|  |                             type: string | ||||||
|  |                           readOnly: | ||||||
|  |                             description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. | ||||||
|  |                             type: boolean | ||||||
|  |                           subPath: | ||||||
|  |                             description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). | ||||||
|  |                             type: string | ||||||
|  |                           subPathExpr: | ||||||
|  |                             description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. This field is beta in 1.15. | ||||||
|  |                             type: string | ||||||
|  |                         required: | ||||||
|  |                           - mountPath | ||||||
|  |                           - name | ||||||
|  |                         type: object | ||||||
|  |                       type: array | ||||||
|                     dockerdContainerResources: |                     dockerdContainerResources: | ||||||
|                       description: ResourceRequirements describes the compute resource requirements. |                       description: ResourceRequirements describes the compute resource requirements. | ||||||
|                       properties: |                       properties: | ||||||
|  |  | ||||||
|  | @ -401,6 +401,33 @@ spec: | ||||||
|             dockerMTU: |             dockerMTU: | ||||||
|               format: int64 |               format: int64 | ||||||
|               type: integer |               type: integer | ||||||
|  |             dockerVolumeMounts: | ||||||
|  |               items: | ||||||
|  |                 description: VolumeMount describes a mounting of a Volume within a container. | ||||||
|  |                 properties: | ||||||
|  |                   mountPath: | ||||||
|  |                     description: Path within the container at which the volume should be mounted.  Must not contain ':'. | ||||||
|  |                     type: string | ||||||
|  |                   mountPropagation: | ||||||
|  |                     description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. | ||||||
|  |                     type: string | ||||||
|  |                   name: | ||||||
|  |                     description: This must match the Name of a Volume. | ||||||
|  |                     type: string | ||||||
|  |                   readOnly: | ||||||
|  |                     description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. | ||||||
|  |                     type: boolean | ||||||
|  |                   subPath: | ||||||
|  |                     description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). | ||||||
|  |                     type: string | ||||||
|  |                   subPathExpr: | ||||||
|  |                     description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. This field is beta in 1.15. | ||||||
|  |                     type: string | ||||||
|  |                 required: | ||||||
|  |                   - mountPath | ||||||
|  |                   - name | ||||||
|  |                 type: object | ||||||
|  |               type: array | ||||||
|             dockerdContainerResources: |             dockerdContainerResources: | ||||||
|               description: ResourceRequirements describes the compute resource requirements. |               description: ResourceRequirements describes the compute resource requirements. | ||||||
|               properties: |               properties: | ||||||
|  |  | ||||||
|  | @ -20,11 +20,12 @@ import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | 	"strings" | ||||||
|  | 	"time" | ||||||
|  | 
 | ||||||
| 	gogithub "github.com/google/go-github/v33/github" | 	gogithub "github.com/google/go-github/v33/github" | ||||||
| 	"github.com/summerwind/actions-runner-controller/hash" | 	"github.com/summerwind/actions-runner-controller/hash" | ||||||
| 	"k8s.io/apimachinery/pkg/util/wait" | 	"k8s.io/apimachinery/pkg/util/wait" | ||||||
| 	"strings" |  | ||||||
| 	"time" |  | ||||||
| 
 | 
 | ||||||
| 	"github.com/go-logr/logr" | 	"github.com/go-logr/logr" | ||||||
| 	kerrors "k8s.io/apimachinery/pkg/api/errors" | 	kerrors "k8s.io/apimachinery/pkg/api/errors" | ||||||
|  | @ -700,10 +701,10 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) { | ||||||
| 				Value: "/certs/client", | 				Value: "/certs/client", | ||||||
| 			}, | 			}, | ||||||
| 		}...) | 		}...) | ||||||
| 		pod.Spec.Containers = append(pod.Spec.Containers, corev1.Container{ | 
 | ||||||
| 			Name:  "docker", | 		// Determine the volume mounts assigned to the docker sidecar. In case extra mounts are included in the RunnerSpec, append them to the standard
 | ||||||
| 			Image: r.DockerImage, | 		// set of mounts. See https://github.com/summerwind/actions-runner-controller/issues/435 for context.
 | ||||||
| 			VolumeMounts: []corev1.VolumeMount{ | 		dockerVolumeMounts := []corev1.VolumeMount{ | ||||||
| 			{ | 			{ | ||||||
| 				Name:      "work", | 				Name:      "work", | ||||||
| 				MountPath: workDir, | 				MountPath: workDir, | ||||||
|  | @ -716,7 +717,15 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) { | ||||||
| 				Name:      "certs-client", | 				Name:      "certs-client", | ||||||
| 				MountPath: "/certs/client", | 				MountPath: "/certs/client", | ||||||
| 			}, | 			}, | ||||||
| 			}, | 		} | ||||||
|  | 		if extraDockerVolumeMounts := runner.Spec.DockerVolumeMounts; extraDockerVolumeMounts != nil { | ||||||
|  | 			dockerVolumeMounts = append(dockerVolumeMounts, extraDockerVolumeMounts...) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		pod.Spec.Containers = append(pod.Spec.Containers, corev1.Container{ | ||||||
|  | 			Name:         "docker", | ||||||
|  | 			Image:        r.DockerImage, | ||||||
|  | 			VolumeMounts: dockerVolumeMounts, | ||||||
| 			Env: []corev1.EnvVar{ | 			Env: []corev1.EnvVar{ | ||||||
| 				{ | 				{ | ||||||
| 					Name:  "DOCKER_TLS_CERTDIR", | 					Name:  "DOCKER_TLS_CERTDIR", | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue