You've already forked woodpecker
							
							
				mirror of
				https://github.com/woodpecker-ci/woodpecker.git
				synced 2025-10-30 23:27:39 +02:00 
			
		
		
		
	Add runtimeClassName in Kubernetes backend options (#3474)
				
					
				
			Resolves #3473 --------- Co-authored-by: Thomas Anderson <127358482+zc-devs@users.noreply.github.com>
This commit is contained in:
		| @@ -40,6 +40,11 @@ steps: | ||||
|  | ||||
| You can use [Limit Ranges](https://kubernetes.io/docs/concepts/policy/limit-range/) if you want to set the limits by per-namespace basis. | ||||
|  | ||||
| ### Runtime class | ||||
|  | ||||
| `runtimeClassName` specifies the name of the RuntimeClass which will be used to run this pod. If no `runtimeClassName` is specified, the default RuntimeHandler will be used. | ||||
| See the [kubernetes documentation](https://kubernetes.io/docs/concepts/containers/runtime-class/) for more information on specifying runtime classes. | ||||
|  | ||||
| ### Service account | ||||
|  | ||||
| `serviceAccountName` specifies the name of the ServiceAccount which the pod will mount. This service account must be created externally. | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import ( | ||||
| // BackendOptions defines all the advanced options for the kubernetes backend | ||||
| type BackendOptions struct { | ||||
| 	Resources          Resources         `mapstructure:"resources"` | ||||
| 	RuntimeClassName   *string           `mapstructure:"runtimeClassName"` | ||||
| 	ServiceAccountName string            `mapstructure:"serviceAccountName"` | ||||
| 	NodeSelector       map[string]string `mapstructure:"nodeSelector"` | ||||
| 	Tolerations        []Toleration      `mapstructure:"tolerations"` | ||||
|   | ||||
| @@ -117,6 +117,7 @@ func podSpec(step *types.Step, config *config, options BackendOptions) (v1.PodSp | ||||
| 	var err error | ||||
| 	spec := v1.PodSpec{ | ||||
| 		RestartPolicy:      v1.RestartPolicyNever, | ||||
| 		RuntimeClassName:   options.RuntimeClassName, | ||||
| 		ServiceAccountName: options.ServiceAccountName, | ||||
| 		ImagePullSecrets:   imagePullSecretsReferences(config.ImagePullSecretNames), | ||||
| 		HostAliases:        hostAliases(step.ExtraHosts), | ||||
|   | ||||
| @@ -245,6 +245,7 @@ func TestFullPod(t *testing.T) { | ||||
| 			"nodeSelector": { | ||||
| 				"storage": "ssd" | ||||
| 			}, | ||||
| 			"runtimeClassName": "runc", | ||||
| 			"serviceAccountName": "wp-svc-acc", | ||||
| 			"securityContext": { | ||||
| 				"runAsUser": 101, | ||||
| @@ -289,6 +290,7 @@ func TestFullPod(t *testing.T) { | ||||
| 		"status": {} | ||||
| 	}` | ||||
|  | ||||
| 	runtimeClass := "runc" | ||||
| 	hostAliases := []types.HostAlias{ | ||||
| 		{Name: "cloudflare", IP: "1.1.1.1"}, | ||||
| 		{Name: "cf.v6", IP: "2606:4700:4700::64"}, | ||||
| @@ -333,6 +335,7 @@ func TestFullPod(t *testing.T) { | ||||
| 		SecurityContext:      SecurityContextConfig{RunAsNonRoot: false}, | ||||
| 	}, "wp-01he8bebctabr3kgk0qj36d2me-0", "linux/amd64", BackendOptions{ | ||||
| 		NodeSelector:       map[string]string{"storage": "ssd"}, | ||||
| 		RuntimeClassName:   &runtimeClass, | ||||
| 		ServiceAccountName: "wp-svc-acc", | ||||
| 		Tolerations:        []Toleration{{Key: "net-port", Value: "100Mbit", Effect: TaintEffectNoSchedule}}, | ||||
| 		Resources: Resources{ | ||||
|   | ||||
| @@ -696,6 +696,10 @@ | ||||
|         }, | ||||
|         "securityContext": { | ||||
|           "$ref": "#/definitions/step_backend_kubernetes_security_context" | ||||
|         }, | ||||
|         "runtimeClassName": { | ||||
|           "description": "Read more: https://woodpecker-ci.org/docs/administration/backends/kubernetes#runtimeclassname", | ||||
|           "type": "string" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user