Skip to content

Commit 2e59962

Browse files
xingnailuxingnailu
andauthored
feat(runtime):transfer support sc name and node selector (#53)
Co-authored-by: xingnailu <xingnailu@oppo.com>
1 parent aa10c2d commit 2e59962

5 files changed

Lines changed: 31 additions & 6 deletions

File tree

curvine-runtime/README.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,17 +161,19 @@ transfer:
161161
replicas: 1
162162
storage:
163163
size: "1Gi"
164+
storageClass: "" # Empty uses the cluster default StorageClass
164165
rpcPort: 9010
165166
webPort: 9011
166167
```
167168
168169
An empty `storeUrl` keeps Curvine's default single-instance SQLite store at
169170
`/app/curvine/data/transfer/transfer.db`. The chart creates a `ReadWriteOnce`
170-
PVC and mounts it at that directory. It omits `storageClassName`, so Kubernetes
171-
uses the cluster default StorageClass. A cluster without a default StorageClass
172-
leaves the PVC Pending instead of silently using temporary storage. Multiple
173-
Transfer replicas require a shared MySQL store and the chart rejects other
174-
configurations:
171+
PVC and mounts it at that directory. Leave `transfer.storage.storageClass`
172+
empty to omit `storageClassName` and use the cluster default StorageClass;
173+
set it to pin a specific class. A cluster without a matching or default
174+
StorageClass leaves the PVC Pending instead of silently using temporary
175+
storage. Multiple Transfer replicas require a shared MySQL store and the chart
176+
rejects other configurations:
175177

176178
The SQLite Deployment uses `Recreate` to detach its `ReadWriteOnce` volume
177179
before a replacement Pod starts. Its PVC is retained by `helm uninstall`; delete
@@ -204,10 +206,12 @@ configOverrides:
204206
| --- | --- | --- |
205207
| `enabled` | `transfer.enabled` | `false`; creates no Transfer workload until enabled. |
206208
| `store_url` | `transfer.storeUrl` | Empty infers `sqlite://data/transfer/transfer.db`. |
207-
| SQLite PVC capacity | `transfer.storage.size` | `1Gi`; created only when `storeUrl` is empty and uses the default StorageClass. |
209+
| SQLite PVC capacity | `transfer.storage.size` | `1Gi`; created only when `storeUrl` is empty. |
210+
| SQLite PVC StorageClass | `transfer.storage.storageClass` | Empty omits `storageClassName` (cluster default); set to pin a class. |
208211
| `hostname` | Generated | The internal Transfer Service DNS. |
209212
| `rpc_port` | `transfer.rpcPort` | `9010`. |
210213
| `web_port` | `transfer.webPort` | `9011`. |
214+
| Node selector | `transfer.nodeSelector` | `{}`; same semantics as master/worker. |
211215
| `instance_id` | `configOverrides.transfer.instance_id` | Empty generates a unique instance ID. |
212216
| `endpoints` | `configOverrides.transfer.endpoints` | Empty infers the generated Service DNS and RPC port. |
213217
| `cv_metadata_reader` | `configOverrides.transfer.cv_metadata_reader` | `auto`, which resolves to `replica`. |

curvine-runtime/templates/transfer-deployment.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,8 @@ spec:
9090
persistentVolumeClaim:
9191
claimName: {{ include "curvine.transferDataClaimName" . }}
9292
{{- end }}
93+
{{- with .Values.transfer.nodeSelector }}
94+
nodeSelector:
95+
{{- toYaml . | nindent 8 }}
96+
{{- end }}
9397
{{- end }}

curvine-runtime/templates/transfer-pvc.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ metadata:
1111
spec:
1212
accessModes:
1313
- ReadWriteOnce
14+
{{- if .Values.transfer.storage.storageClass }}
15+
storageClassName: {{ .Values.transfer.storage.storageClass }}
16+
{{- end }}
1417
resources:
1518
requests:
1619
storage: {{ .Values.transfer.storage.size }}

curvine-runtime/values.schema.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,12 +309,21 @@
309309
"size": {
310310
"type": "string",
311311
"minLength": 1
312+
},
313+
"storageClass": {
314+
"type": "string"
312315
}
313316
},
314317
"additionalProperties": true
315318
},
316319
"resources": {
317320
"$ref": "#/definitions/resources"
321+
},
322+
"nodeSelector": {
323+
"type": "object",
324+
"additionalProperties": {
325+
"type": "string"
326+
}
318327
}
319328
},
320329
"additionalProperties": true

curvine-runtime/values.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,8 @@ transfer:
245245
storage:
246246
# Requested capacity for the default single-replica SQLite PVC.
247247
size: "1Gi"
248+
# Empty means use the cluster default StorageClass.
249+
storageClass: ""
248250

249251
resources:
250252
requests:
@@ -254,6 +256,9 @@ transfer:
254256
cpu: "1000m"
255257
memory: "2Gi"
256258

259+
# Node selector
260+
nodeSelector: {}
261+
257262
# Service configuration
258263
service:
259264
master:

0 commit comments

Comments
 (0)