Add 'env' field to runner resource
This commit is contained in:
		
							parent
							
								
									c66916a4ee
								
							
						
					
					
						commit
						829a167303
					
				|  | @ -17,6 +17,7 @@ limitations under the License. | |||
| package v1alpha1 | ||||
| 
 | ||||
| import ( | ||||
| 	corev1 "k8s.io/api/core/v1" | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| ) | ||||
| 
 | ||||
|  | @ -28,6 +29,9 @@ type RunnerSpec struct { | |||
| 
 | ||||
| 	// +optional
 | ||||
| 	Image string `json:"image"` | ||||
| 
 | ||||
| 	// +optional
 | ||||
| 	Env []corev1.EnvVar `json:"env"` | ||||
| } | ||||
| 
 | ||||
| // RunnerStatus defines the observed state of Runner
 | ||||
|  |  | |||
|  | @ -21,6 +21,7 @@ limitations under the License. | |||
| package v1alpha1 | ||||
| 
 | ||||
| import ( | ||||
| 	"k8s.io/api/core/v1" | ||||
| 	runtime "k8s.io/apimachinery/pkg/runtime" | ||||
| ) | ||||
| 
 | ||||
|  | @ -29,7 +30,7 @@ func (in *Runner) DeepCopyInto(out *Runner) { | |||
| 	*out = *in | ||||
| 	out.TypeMeta = in.TypeMeta | ||||
| 	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) | ||||
| 	out.Spec = in.Spec | ||||
| 	in.Spec.DeepCopyInto(&out.Spec) | ||||
| 	in.Status.DeepCopyInto(&out.Status) | ||||
| } | ||||
| 
 | ||||
|  | @ -86,6 +87,13 @@ func (in *RunnerList) DeepCopyObject() runtime.Object { | |||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 | ||||
| func (in *RunnerSpec) DeepCopyInto(out *RunnerSpec) { | ||||
| 	*out = *in | ||||
| 	if in.Env != nil { | ||||
| 		in, out := &in.Env, &out.Env | ||||
| 		*out = make([]v1.EnvVar, len(*in)) | ||||
| 		for i := range *in { | ||||
| 			(*in)[i].DeepCopyInto(&(*out)[i]) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RunnerSpec.
 | ||||
|  |  | |||
|  | @ -43,6 +43,103 @@ spec: | |||
|         spec: | ||||
|           description: RunnerSpec defines the desired state of Runner | ||||
|           properties: | ||||
|             env: | ||||
|               items: | ||||
|                 description: EnvVar represents an environment variable present in | ||||
|                   a Container. | ||||
|                 properties: | ||||
|                   name: | ||||
|                     description: Name of the environment variable. Must be a C_IDENTIFIER. | ||||
|                     type: string | ||||
|                   value: | ||||
|                     description: 'Variable references $(VAR_NAME) are expanded using | ||||
|                       the previous defined environment variables in the container | ||||
|                       and any service environment variables. If a variable cannot | ||||
|                       be resolved, the reference in the input string will be unchanged. | ||||
|                       The $(VAR_NAME) syntax can be escaped with a double $$, ie: | ||||
|                       $$(VAR_NAME). Escaped references will never be expanded, regardless | ||||
|                       of whether the variable exists or not. Defaults to "".' | ||||
|                     type: string | ||||
|                   valueFrom: | ||||
|                     description: Source for the environment variable's value. Cannot | ||||
|                       be used if value is not empty. | ||||
|                     properties: | ||||
|                       configMapKeyRef: | ||||
|                         description: Selects a key of a ConfigMap. | ||||
|                         properties: | ||||
|                           key: | ||||
|                             description: The key to select. | ||||
|                             type: string | ||||
|                           name: | ||||
|                             description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names | ||||
|                               TODO: Add other useful fields. apiVersion, kind, uid?' | ||||
|                             type: string | ||||
|                           optional: | ||||
|                             description: Specify whether the ConfigMap or its key | ||||
|                               must be defined | ||||
|                             type: boolean | ||||
|                         required: | ||||
|                         - key | ||||
|                         type: object | ||||
|                       fieldRef: | ||||
|                         description: 'Selects a field of the pod: supports metadata.name, | ||||
|                           metadata.namespace, metadata.labels, metadata.annotations, | ||||
|                           spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.' | ||||
|                         properties: | ||||
|                           apiVersion: | ||||
|                             description: Version of the schema the FieldPath is written | ||||
|                               in terms of, defaults to "v1". | ||||
|                             type: string | ||||
|                           fieldPath: | ||||
|                             description: Path of the field to select in the specified | ||||
|                               API version. | ||||
|                             type: string | ||||
|                         required: | ||||
|                         - fieldPath | ||||
|                         type: object | ||||
|                       resourceFieldRef: | ||||
|                         description: 'Selects a resource of the container: only resources | ||||
|                           limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, | ||||
|                           requests.cpu, requests.memory and requests.ephemeral-storage) | ||||
|                           are currently supported.' | ||||
|                         properties: | ||||
|                           containerName: | ||||
|                             description: 'Container name: required for volumes, optional | ||||
|                               for env vars' | ||||
|                             type: string | ||||
|                           divisor: | ||||
|                             description: Specifies the output format of the exposed | ||||
|                               resources, defaults to "1" | ||||
|                             type: string | ||||
|                           resource: | ||||
|                             description: 'Required: resource to select' | ||||
|                             type: string | ||||
|                         required: | ||||
|                         - resource | ||||
|                         type: object | ||||
|                       secretKeyRef: | ||||
|                         description: Selects a key of a secret in the pod's namespace | ||||
|                         properties: | ||||
|                           key: | ||||
|                             description: The key of the secret to select from.  Must | ||||
|                               be a valid secret key. | ||||
|                             type: string | ||||
|                           name: | ||||
|                             description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names | ||||
|                               TODO: Add other useful fields. apiVersion, kind, uid?' | ||||
|                             type: string | ||||
|                           optional: | ||||
|                             description: Specify whether the Secret or its key must | ||||
|                               be defined | ||||
|                             type: boolean | ||||
|                         required: | ||||
|                         - key | ||||
|                         type: object | ||||
|                     type: object | ||||
|                 required: | ||||
|                 - name | ||||
|                 type: object | ||||
|               type: array | ||||
|             image: | ||||
|               type: string | ||||
|             repository: | ||||
|  |  | |||
|  | @ -334,19 +334,7 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) { | |||
| 		runnerImage = r.RunnerImage | ||||
| 	} | ||||
| 
 | ||||
| 	pod := corev1.Pod{ | ||||
| 		ObjectMeta: metav1.ObjectMeta{ | ||||
| 			Name:      runner.Name, | ||||
| 			Namespace: runner.Namespace, | ||||
| 		}, | ||||
| 		Spec: corev1.PodSpec{ | ||||
| 			RestartPolicy: "OnFailure", | ||||
| 			Containers: []corev1.Container{ | ||||
| 				{ | ||||
| 					Name:            containerName, | ||||
| 					Image:           runnerImage, | ||||
| 					ImagePullPolicy: "Always", | ||||
| 					Env: []corev1.EnvVar{ | ||||
| 	env := []corev1.EnvVar{ | ||||
| 		{ | ||||
| 			Name:  "RUNNER_NAME", | ||||
| 			Value: runner.Name, | ||||
|  | @ -359,7 +347,22 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) { | |||
| 			Name:  "RUNNER_TOKEN", | ||||
| 			Value: runner.Status.Registration.Token, | ||||
| 		}, | ||||
| 	} | ||||
| 	env = append(env, runner.Spec.Env...) | ||||
| 
 | ||||
| 	pod := corev1.Pod{ | ||||
| 		ObjectMeta: metav1.ObjectMeta{ | ||||
| 			Name:      runner.Name, | ||||
| 			Namespace: runner.Namespace, | ||||
| 		}, | ||||
| 		Spec: corev1.PodSpec{ | ||||
| 			RestartPolicy: "OnFailure", | ||||
| 			Containers: []corev1.Container{ | ||||
| 				{ | ||||
| 					Name:            containerName, | ||||
| 					Image:           runnerImage, | ||||
| 					ImagePullPolicy: "Always", | ||||
| 					Env:             env, | ||||
| 					VolumeMounts: []corev1.VolumeMount{ | ||||
| 						{ | ||||
| 							Name:      "docker", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue