@@ -104,7 +104,7 @@ func (f *factory) New(ctx context.Context, cfg driver.InitConfig) (driver.Driver
104
104
}
105
105
}
106
106
107
- deploymentName , err := buildxNameToDeploymentName (cfg .Name )
107
+ statefulSetName , err := buildxNameToStatefulSetName (cfg .Name )
108
108
if err != nil {
109
109
return nil , err
110
110
}
@@ -128,44 +128,44 @@ func (f *factory) New(ctx context.Context, cfg driver.InitConfig) (driver.Driver
128
128
clientset : clientset ,
129
129
}
130
130
131
- deploymentOpt , loadbalance , namespace , defaultLoad , timeout , err := f .processDriverOpts (deploymentName , namespace , cfg )
131
+ statefulSetOpt , loadbalance , namespace , defaultLoad , timeout , err := f .processDriverOpts (statefulSetName , namespace , cfg )
132
132
if nil != err {
133
133
return nil , err
134
134
}
135
135
136
136
d .defaultLoad = defaultLoad
137
137
d .timeout = timeout
138
138
139
- d .deployment , d .configMaps , err = manifest .NewDeployment ( deploymentOpt )
139
+ d .statefulSet , d .configMaps , err = manifest .NewStatefulSet ( statefulSetOpt )
140
140
if err != nil {
141
141
return nil , err
142
142
}
143
143
144
- d .minReplicas = deploymentOpt .Replicas
144
+ d .minReplicas = statefulSetOpt .Replicas
145
145
146
- d .deploymentClient = clientset .AppsV1 ().Deployments (namespace )
146
+ d .statefulSetClient = clientset .AppsV1 ().StatefulSets (namespace )
147
147
d .podClient = clientset .CoreV1 ().Pods (namespace )
148
148
d .configMapClient = clientset .CoreV1 ().ConfigMaps (namespace )
149
149
150
150
switch loadbalance {
151
151
case LoadbalanceSticky :
152
152
d .podChooser = & podchooser.StickyPodChooser {
153
- Key : cfg .ContextPathHash ,
154
- PodClient : d .podClient ,
155
- Deployment : d .deployment ,
153
+ Key : cfg .ContextPathHash ,
154
+ PodClient : d .podClient ,
155
+ StatefulSet : d .statefulSet ,
156
156
}
157
157
case LoadbalanceRandom :
158
158
d .podChooser = & podchooser.RandomPodChooser {
159
- PodClient : d .podClient ,
160
- Deployment : d .deployment ,
159
+ PodClient : d .podClient ,
160
+ StatefulSet : d .statefulSet ,
161
161
}
162
162
}
163
163
return d , nil
164
164
}
165
165
166
- func (f * factory ) processDriverOpts (deploymentName string , namespace string , cfg driver.InitConfig ) (* manifest.DeploymentOpt , string , string , bool , time.Duration , error ) {
167
- deploymentOpt := & manifest.DeploymentOpt {
168
- Name : deploymentName ,
166
+ func (f * factory ) processDriverOpts (statefulSetName string , namespace string , cfg driver.InitConfig ) (* manifest.StatefulSetOpt , string , string , bool , time.Duration , error ) {
167
+ statefulSetOpt := & manifest.StatefulSetOpt {
168
+ Name : statefulSetName ,
169
169
Image : bkimage .DefaultImage ,
170
170
Replicas : 1 ,
171
171
BuildkitFlags : cfg .BuildkitdFlags ,
@@ -177,7 +177,7 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
177
177
defaultLoad := false
178
178
timeout := defaultTimeout
179
179
180
- deploymentOpt .Qemu .Image = bkimage .QemuImage
180
+ statefulSetOpt .Qemu .Image = bkimage .QemuImage
181
181
182
182
loadbalance := LoadbalanceSticky
183
183
var err error
@@ -186,57 +186,57 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
186
186
switch k {
187
187
case "image" :
188
188
if v != "" {
189
- deploymentOpt .Image = v
189
+ statefulSetOpt .Image = v
190
190
}
191
191
case "namespace" :
192
192
namespace = v
193
193
case "replicas" :
194
- deploymentOpt .Replicas , err = strconv .Atoi (v )
194
+ statefulSetOpt .Replicas , err = strconv .Atoi (v )
195
195
if err != nil {
196
196
return nil , "" , "" , false , 0 , err
197
197
}
198
198
case "requests.cpu" :
199
- deploymentOpt .RequestsCPU = v
199
+ statefulSetOpt .RequestsCPU = v
200
200
case "requests.memory" :
201
- deploymentOpt .RequestsMemory = v
201
+ statefulSetOpt .RequestsMemory = v
202
202
case "requests.ephemeral-storage" :
203
- deploymentOpt .RequestsEphemeralStorage = v
203
+ statefulSetOpt .RequestsEphemeralStorage = v
204
204
case "limits.cpu" :
205
- deploymentOpt .LimitsCPU = v
205
+ statefulSetOpt .LimitsCPU = v
206
206
case "limits.memory" :
207
- deploymentOpt .LimitsMemory = v
207
+ statefulSetOpt .LimitsMemory = v
208
208
case "limits.ephemeral-storage" :
209
- deploymentOpt .LimitsEphemeralStorage = v
209
+ statefulSetOpt .LimitsEphemeralStorage = v
210
210
case "rootless" :
211
- deploymentOpt .Rootless , err = strconv .ParseBool (v )
211
+ statefulSetOpt .Rootless , err = strconv .ParseBool (v )
212
212
if err != nil {
213
213
return nil , "" , "" , false , 0 , err
214
214
}
215
215
if _ , isImage := cfg .DriverOpts ["image" ]; ! isImage {
216
- deploymentOpt .Image = bkimage .DefaultRootlessImage
216
+ statefulSetOpt .Image = bkimage .DefaultRootlessImage
217
217
}
218
218
case "schedulername" :
219
- deploymentOpt .SchedulerName = v
219
+ statefulSetOpt .SchedulerName = v
220
220
case "serviceaccount" :
221
- deploymentOpt .ServiceAccountName = v
221
+ statefulSetOpt .ServiceAccountName = v
222
222
case "nodeselector" :
223
- deploymentOpt .NodeSelector , err = splitMultiValues (v , "," , "=" )
223
+ statefulSetOpt .NodeSelector , err = splitMultiValues (v , "," , "=" )
224
224
if err != nil {
225
225
return nil , "" , "" , false , 0 , errors .Wrap (err , "cannot parse node selector" )
226
226
}
227
227
case "annotations" :
228
- deploymentOpt .CustomAnnotations , err = splitMultiValues (v , "," , "=" )
228
+ statefulSetOpt .CustomAnnotations , err = splitMultiValues (v , "," , "=" )
229
229
if err != nil {
230
230
return nil , "" , "" , false , 0 , errors .Wrap (err , "cannot parse annotations" )
231
231
}
232
232
case "labels" :
233
- deploymentOpt .CustomLabels , err = splitMultiValues (v , "," , "=" )
233
+ statefulSetOpt .CustomLabels , err = splitMultiValues (v , "," , "=" )
234
234
if err != nil {
235
235
return nil , "" , "" , false , 0 , errors .Wrap (err , "cannot parse labels" )
236
236
}
237
237
case "tolerations" :
238
238
ts := strings .Split (v , ";" )
239
- deploymentOpt .Tolerations = []corev1.Toleration {}
239
+ statefulSetOpt .Tolerations = []corev1.Toleration {}
240
240
for i := range ts {
241
241
kvs := strings .Split (ts [i ], "," )
242
242
@@ -267,7 +267,7 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
267
267
}
268
268
}
269
269
270
- deploymentOpt .Tolerations = append (deploymentOpt .Tolerations , t )
270
+ statefulSetOpt .Tolerations = append (statefulSetOpt .Tolerations , t )
271
271
}
272
272
case "loadbalance" :
273
273
switch v {
@@ -278,13 +278,13 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
278
278
}
279
279
loadbalance = v
280
280
case "qemu.install" :
281
- deploymentOpt .Qemu .Install , err = strconv .ParseBool (v )
281
+ statefulSetOpt .Qemu .Install , err = strconv .ParseBool (v )
282
282
if err != nil {
283
283
return nil , "" , "" , false , 0 , err
284
284
}
285
285
case "qemu.image" :
286
286
if v != "" {
287
- deploymentOpt .Qemu .Image = v
287
+ statefulSetOpt .Qemu .Image = v
288
288
}
289
289
case "default-load" :
290
290
defaultLoad , err = strconv .ParseBool (v )
@@ -301,7 +301,7 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
301
301
}
302
302
}
303
303
304
- return deploymentOpt , loadbalance , namespace , defaultLoad , timeout , nil
304
+ return statefulSetOpt , loadbalance , namespace , defaultLoad , timeout , nil
305
305
}
306
306
307
307
func splitMultiValues (in string , itemsep string , kvsep string ) (map [string ]string , error ) {
@@ -324,7 +324,7 @@ func (f *factory) AllowsInstances() bool {
324
324
// buildxNameToDeploymentName converts buildx name to Kubernetes Deployment name.
325
325
//
326
326
// eg. "buildx_buildkit_loving_mendeleev0" -> "loving-mendeleev0"
327
- func buildxNameToDeploymentName (bx string ) (string , error ) {
327
+ func buildxNameToStatefulSetName (bx string ) (string , error ) {
328
328
// TODO: commands.util.go should not pass "buildx_buildkit_" prefix to drivers
329
329
s , err := driver .ParseBuilderName (bx )
330
330
if err != nil {
0 commit comments