Skip to content

Commit 84dcbfd

Browse files
committed
Kubernetes Driver: switch to 'StatefulSet' from 'Deployment'.
1 parent af2859c commit 84dcbfd

2 files changed

Lines changed: 50 additions & 27 deletions

File tree

driver/kubernetes/factory.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/pkg/errors"
1717
"github.com/sirupsen/logrus"
1818
corev1 "k8s.io/api/core/v1"
19+
"k8s.io/apimachinery/pkg/api/resource"
1920
"k8s.io/client-go/kubernetes"
2021
"k8s.io/client-go/rest"
2122
)
@@ -199,14 +200,18 @@ func (f *factory) processDriverOpts(statefulSetName string, namespace string, cf
199200
statefulSetOpt.RequestsCPU = v
200201
case "requests.memory":
201202
statefulSetOpt.RequestsMemory = v
202-
case "requests.ephemeral-storage":
203-
statefulSetOpt.RequestsEphemeralStorage = v
203+
case "requests.persistent-storage":
204+
reqPersistentStorage, err := resource.ParseQuantity(v)
205+
if err != nil {
206+
return nil, "", "", false, 0, err
207+
}
208+
statefulSetOpt.RequestsPersistentStorage = reqPersistentStorage
204209
case "limits.cpu":
205210
statefulSetOpt.LimitsCPU = v
206211
case "limits.memory":
207212
statefulSetOpt.LimitsMemory = v
208-
case "limits.ephemeral-storage":
209-
statefulSetOpt.LimitsEphemeralStorage = v
213+
case "limits.persistent-storage":
214+
statefulSetOpt.LimitsPersistentStorage = v
210215
case "rootless":
211216
statefulSetOpt.Rootless, err = strconv.ParseBool(v)
212217
if err != nil {

driver/kubernetes/manifest/manifest.go

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,18 @@ type StatefulSetOpt struct {
3232
// files mounted at /etc/buildkitd
3333
ConfigFiles map[string][]byte
3434

35-
Rootless bool
36-
NodeSelector map[string]string
37-
CustomAnnotations map[string]string
38-
CustomLabels map[string]string
39-
Tolerations []corev1.Toleration
40-
RequestsCPU string
41-
RequestsMemory string
42-
RequestsEphemeralStorage string
43-
LimitsCPU string
44-
LimitsMemory string
45-
LimitsEphemeralStorage string
46-
Platforms []v1.Platform
35+
Rootless bool
36+
NodeSelector map[string]string
37+
CustomAnnotations map[string]string
38+
CustomLabels map[string]string
39+
Tolerations []corev1.Toleration
40+
RequestsCPU string
41+
RequestsMemory string
42+
RequestsPersistentStorage resource.Quantity
43+
LimitsCPU string
44+
LimitsMemory string
45+
LimitsPersistentStorage string
46+
Platforms []v1.Platform
4747
}
4848

4949
const (
@@ -141,6 +141,30 @@ func NewStatefulSet(opt *StatefulSetOpt) (s *appsv1.StatefulSet, c []*corev1.Con
141141
Requests: corev1.ResourceList{},
142142
Limits: corev1.ResourceList{},
143143
},
144+
VolumeMounts: []corev1.VolumeMount{
145+
{
146+
Name: "data",
147+
ReadOnly: false,
148+
MountPath: "/var/lib/buildkit",
149+
},
150+
},
151+
},
152+
},
153+
},
154+
},
155+
VolumeClaimTemplates: []corev1.PersistentVolumeClaim{
156+
{
157+
ObjectMeta: metav1.ObjectMeta{
158+
Name: "data",
159+
},
160+
Spec: corev1.PersistentVolumeClaimSpec{
161+
AccessModes: []corev1.PersistentVolumeAccessMode{
162+
corev1.ReadWriteOnce,
163+
},
164+
Resources: corev1.VolumeResourceRequirements{
165+
Requests: corev1.ResourceList{
166+
corev1.ResourceStorage: opt.RequestsPersistentStorage,
167+
},
144168
},
145169
},
146170
},
@@ -222,14 +246,6 @@ func NewStatefulSet(opt *StatefulSetOpt) (s *appsv1.StatefulSet, c []*corev1.Con
222246
s.Spec.Template.Spec.Containers[0].Resources.Requests[corev1.ResourceMemory] = reqMemory
223247
}
224248

225-
if opt.RequestsEphemeralStorage != "" {
226-
reqEphemeralStorage, err := resource.ParseQuantity(opt.RequestsEphemeralStorage)
227-
if err != nil {
228-
return nil, nil, err
229-
}
230-
s.Spec.Template.Spec.Containers[0].Resources.Requests[corev1.ResourceEphemeralStorage] = reqEphemeralStorage
231-
}
232-
233249
if opt.LimitsCPU != "" {
234250
limCPU, err := resource.ParseQuantity(opt.LimitsCPU)
235251
if err != nil {
@@ -246,12 +262,14 @@ func NewStatefulSet(opt *StatefulSetOpt) (s *appsv1.StatefulSet, c []*corev1.Con
246262
s.Spec.Template.Spec.Containers[0].Resources.Limits[corev1.ResourceMemory] = limMemory
247263
}
248264

249-
if opt.LimitsEphemeralStorage != "" {
250-
limEphemeralStorage, err := resource.ParseQuantity(opt.LimitsEphemeralStorage)
265+
if opt.LimitsPersistentStorage != "" {
266+
limPersistentStorage, err := resource.ParseQuantity(opt.LimitsPersistentStorage)
251267
if err != nil {
252268
return nil, nil, err
253269
}
254-
s.Spec.Template.Spec.Containers[0].Resources.Limits[corev1.ResourceEphemeralStorage] = limEphemeralStorage
270+
s.Spec.VolumeClaimTemplates[0].Spec.Resources.Limits = corev1.ResourceList{
271+
corev1.ResourceStorage: limPersistentStorage,
272+
}
255273
}
256274

257275
return

0 commit comments

Comments
 (0)