Skip to content

Commit 9f721e3

Browse files
committed
kubernetes: add env driver opt to kubernetes
Signed-off-by: Tonis Tiigi <[email protected]>
1 parent 8033908 commit 9f721e3

File tree

2 files changed

+36
-29
lines changed

2 files changed

+36
-29
lines changed

driver/kubernetes/factory.go

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -176,65 +176,63 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
176176

177177
defaultLoad := false
178178
timeout := defaultTimeout
179-
180179
deploymentOpt.Qemu.Image = bkimage.QemuImage
181-
182180
loadbalance := LoadbalanceSticky
183181
var err error
184182

185183
for k, v := range cfg.DriverOpts {
186-
switch k {
187-
case "image":
184+
switch {
185+
case k == "image":
188186
if v != "" {
189187
deploymentOpt.Image = v
190188
}
191-
case "namespace":
189+
case k == "namespace":
192190
namespace = v
193-
case "replicas":
191+
case k == "replicas":
194192
deploymentOpt.Replicas, err = strconv.Atoi(v)
195193
if err != nil {
196194
return nil, "", "", false, 0, err
197195
}
198-
case "requests.cpu":
196+
case k == "requests.cpu":
199197
deploymentOpt.RequestsCPU = v
200-
case "requests.memory":
198+
case k == "requests.memory":
201199
deploymentOpt.RequestsMemory = v
202-
case "requests.ephemeral-storage":
200+
case k == "requests.ephemeral-storage":
203201
deploymentOpt.RequestsEphemeralStorage = v
204-
case "limits.cpu":
202+
case k == "limits.cpu":
205203
deploymentOpt.LimitsCPU = v
206-
case "limits.memory":
204+
case k == "limits.memory":
207205
deploymentOpt.LimitsMemory = v
208-
case "limits.ephemeral-storage":
206+
case k == "limits.ephemeral-storage":
209207
deploymentOpt.LimitsEphemeralStorage = v
210-
case "rootless":
208+
case k == "rootless":
211209
deploymentOpt.Rootless, err = strconv.ParseBool(v)
212210
if err != nil {
213211
return nil, "", "", false, 0, err
214212
}
215213
if _, isImage := cfg.DriverOpts["image"]; !isImage {
216214
deploymentOpt.Image = bkimage.DefaultRootlessImage
217215
}
218-
case "schedulername":
216+
case k == "schedulername":
219217
deploymentOpt.SchedulerName = v
220-
case "serviceaccount":
218+
case k == "serviceaccount":
221219
deploymentOpt.ServiceAccountName = v
222-
case "nodeselector":
220+
case k == "nodeselector":
223221
deploymentOpt.NodeSelector, err = splitMultiValues(v, ",", "=")
224222
if err != nil {
225223
return nil, "", "", false, 0, errors.Wrap(err, "cannot parse node selector")
226224
}
227-
case "annotations":
225+
case k == "annotations":
228226
deploymentOpt.CustomAnnotations, err = splitMultiValues(v, ",", "=")
229227
if err != nil {
230228
return nil, "", "", false, 0, errors.Wrap(err, "cannot parse annotations")
231229
}
232-
case "labels":
230+
case k == "labels":
233231
deploymentOpt.CustomLabels, err = splitMultiValues(v, ",", "=")
234232
if err != nil {
235233
return nil, "", "", false, 0, errors.Wrap(err, "cannot parse labels")
236234
}
237-
case "tolerations":
235+
case k == "tolerations":
238236
ts := strings.Split(v, ";")
239237
deploymentOpt.Tolerations = []corev1.Toleration{}
240238
for i := range ts {
@@ -269,42 +267,46 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
269267

270268
deploymentOpt.Tolerations = append(deploymentOpt.Tolerations, t)
271269
}
272-
case "loadbalance":
270+
case k == "loadbalance":
273271
switch v {
274-
case LoadbalanceSticky:
275-
case LoadbalanceRandom:
272+
case LoadbalanceSticky, LoadbalanceRandom:
273+
loadbalance = v
276274
default:
277275
return nil, "", "", false, 0, errors.Errorf("invalid loadbalance %q", v)
278276
}
279-
loadbalance = v
280-
case "qemu.install":
277+
case k == "qemu.install":
281278
deploymentOpt.Qemu.Install, err = strconv.ParseBool(v)
282279
if err != nil {
283280
return nil, "", "", false, 0, err
284281
}
285-
case "qemu.image":
282+
case k == "qemu.image":
286283
if v != "" {
287284
deploymentOpt.Qemu.Image = v
288285
}
289-
case "buildkit-root-volume-memory":
286+
case k == "buildkit-root-volume-memory":
290287
if v != "" {
291288
deploymentOpt.BuildKitRootVolumeMemory = v
292289
}
293-
case "default-load":
290+
case k == "default-load":
294291
defaultLoad, err = strconv.ParseBool(v)
295292
if err != nil {
296293
return nil, "", "", false, 0, err
297294
}
298-
case "timeout":
295+
case k == "timeout":
299296
timeout, err = time.ParseDuration(v)
300297
if err != nil {
301298
return nil, "", "", false, 0, errors.Wrap(err, "cannot parse timeout")
302299
}
300+
case strings.HasPrefix(k, "env."):
301+
envName := strings.TrimPrefix(k, "env.")
302+
if envName == "" {
303+
return nil, "", "", false, 0, errors.Errorf("invalid env option %q, expecting env.FOO=bar", k)
304+
}
305+
deploymentOpt.Env = append(deploymentOpt.Env, corev1.EnvVar{Name: envName, Value: v})
303306
default:
304307
return nil, "", "", false, 0, errors.Errorf("invalid driver option %s for driver %s", k, DriverName)
305308
}
306309
}
307-
308310
return deploymentOpt, loadbalance, namespace, defaultLoad, timeout, nil
309311
}
310312

driver/kubernetes/manifest/manifest.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ type DeploymentOpt struct {
4545
LimitsMemory string
4646
LimitsEphemeralStorage string
4747
Platforms []ocispecs.Platform
48+
Env []corev1.EnvVar // injected into main buildkitd container
4849
}
4950

5051
const (
@@ -270,6 +271,10 @@ func NewDeployment(opt *DeploymentOpt) (d *appsv1.Deployment, c []*corev1.Config
270271
})
271272
}
272273

274+
if len(opt.Env) > 0 {
275+
d.Spec.Template.Spec.Containers[0].Env = append(d.Spec.Template.Spec.Containers[0].Env, opt.Env...)
276+
}
277+
273278
return
274279
}
275280

0 commit comments

Comments
 (0)