Skip to content

Commit 9d31b36

Browse files
committed
chore(controller): add oss mount support
1 parent 636dceb commit 9d31b36

16 files changed

Lines changed: 419 additions & 76 deletions

File tree

charts/controller/templates/_helpers.tpl

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,4 +342,85 @@ kubelet_volume_stats_capacity_bytes: [namespace, persistentvolumeclaim, job]
342342
kubelet_volume_stats_inodes: [namespace, persistentvolumeclaim, job]
343343
kubelet_volume_stats_inodes_free: [namespace, persistentvolumeclaim, job]
344344
kubelet_volume_stats_inodes_used: [namespace, persistentvolumeclaim, job]
345-
{{- end }}
345+
{{- end }}
346+
347+
348+
{{/* Generate controller config default secrets template */}}
349+
{{ define "controller.config.defaultSecretTemplate" }}
350+
oss:
351+
data:
352+
key_id: $access_key
353+
access_key: $secret_key
354+
{{- end }}
355+
356+
{{/* Generate controller config default volume template */}}
357+
{{ define "controller.config.defaultVolumeTemplate" }}
358+
nfs:
359+
spec:
360+
capacity:
361+
storage: 65535Gi
362+
accessModes:
363+
- ReadWriteMany
364+
claimRef:
365+
namespace: $namespace
366+
name: $volume_claim_name
367+
nfs:
368+
server: $server
369+
path: $path
370+
mountOptions:
371+
- nfsvers=4.2
372+
oss:
373+
spec:
374+
capacity:
375+
storage: 65535Gi
376+
accessModes:
377+
- ReadWriteMany
378+
storageClassName: ''
379+
claimRef:
380+
namespace: $namespace
381+
name: $volume_claim_name
382+
mountOptions:
383+
- allow-delete
384+
- force-path-style
385+
- endpoint-url $server
386+
csi:
387+
driver: s3.csi.aws.com
388+
volumeHandle: $volume_handle
389+
volumeAttributes:
390+
bucketName: $bucket
391+
authenticationSource: secrets
392+
nodePublishSecretRef:
393+
name: $secret_name
394+
namespace: $namespace
395+
{{- end }}
396+
397+
{{/* Generate controller config default volume claim template */}}
398+
{{ define "controller.config.defaultVolumeClaimTemplate" }}
399+
csi:
400+
spec:
401+
accessModes:
402+
- ReadWriteMany
403+
storageClassName: $storage_class
404+
resources:
405+
requests:
406+
storage: $size
407+
volumeMode: Filesystem
408+
nfs:
409+
spec:
410+
accessModes:
411+
- ReadWriteMany
412+
storageClassName: ''
413+
resources:
414+
requests:
415+
storage: $size
416+
volumeName: $volume_name
417+
oss:
418+
spec:
419+
accessModes:
420+
- ReadWriteMany
421+
storageClassName: ''
422+
resources:
423+
requests:
424+
storage: $size
425+
volumeName: $volume_name
426+
{{- end }}

charts/controller/templates/controller-celery-deloyment.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,11 @@ spec:
5353
{{- end }}
5454
{{- include "controller.limits" $ | indent 8 }}
5555
{{- include "controller.envs" $ | indent 8 }}
56+
volumeMounts:
57+
- name: controller-config
58+
readOnly: false
59+
mountPath: /etc/controller
60+
volumes:
61+
- name: controller-config
62+
configMap:
63+
name: controller-config

charts/controller/templates/controller-clusterrole.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ rules:
7070
- apiGroups: ["apps"]
7171
resources: ["replicasets"]
7272
verbs: ["get", "list", "watch", "delete"]
73+
- apiGroups: [""]
74+
resources: ["persistentvolumes"]
75+
verbs: ["get", "list", "watch", "create", "delete", "patch", "update"]
7376
- apiGroups: [""]
7477
resources: ["persistentvolumeclaims"]
7578
verbs: ["get", "list", "watch", "create", "delete", "patch", "update"]

charts/controller/templates/controller-configmap.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,21 @@ data:
2323
{{- else}}
2424
{{- include "controller.config.defaultLimitPlans" . | fromYamlArray | toPrettyJson | nindent 4 }}
2525
{{- end }}
26+
secret-template.json: |
27+
{{- if .Values.config.secretTemplate }}
28+
{{- (tpl .Values.config.secretTemplate $) | nindent 4 }}
29+
{{- else}}
30+
{{- include "controller.config.defaultSecretTemplate" . | fromYaml | toPrettyJson | nindent 4 }}
31+
{{- end }}
32+
volume-template.json: |
33+
{{- if .Values.config.volumeTemplate }}
34+
{{- (tpl .Values.config.volumeTemplate $) | nindent 4 }}
35+
{{- else}}
36+
{{- include "controller.config.defaultVolumeTemplate" . | fromYaml | toPrettyJson | nindent 4 }}
37+
{{- end }}
38+
volume-claim-template.json: |
39+
{{- if .Values.config.volumeClaimTemplate }}
40+
{{- (tpl .Values.config.volumeClaimTemplate $) | nindent 4 }}
41+
{{- else}}
42+
{{- include "controller.config.defaultVolumeClaimTemplate" . | fromYaml | toPrettyJson | nindent 4 }}
43+
{{- end }}

charts/controller/values.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ config:
7373
metrics: ""
7474
limitSpecs: ""
7575
limitPlans: ""
76+
secretTemplate: ""
77+
volumeTemplate: ""
78+
volumeClaimTemplate: ""
7679

7780
# Service
7881
service:
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Generated by Django 4.2.18 on 2025-03-26 02:44
2+
3+
from django.db import migrations, models
4+
from api.models.volume import Volume
5+
6+
7+
def save_volume_to_k8s(apps, schema_editor):
8+
for volume in Volume.objects.all():
9+
if volume.type == 'nfs':
10+
volume.save_to_k8s()
11+
12+
13+
class Migration(migrations.Migration):
14+
15+
dependencies = [
16+
('api', '0022_migration_deployed_ptypes'),
17+
]
18+
19+
operations = [
20+
migrations.AlterField(
21+
model_name='volume',
22+
name='type',
23+
field=models.CharField(choices=[('csi', 'container storage interface'), ('nfs', 'network file system'), ('oss', 'object storage service file')], default='csi'),
24+
),
25+
migrations.RunPython(save_volume_to_k8s),
26+
]

rootfs/api/models/app.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,12 +1175,8 @@ def _get_volumes_and_mounts(self, ptype, volumes):
11751175
k8s_volumes, k8s_volume_mounts = [], []
11761176
if volumes:
11771177
for volume in volumes:
1178-
k8s_volume = {"name": volume.name}
1179-
if volume.type == "csi":
1180-
k8s_volume.update({"persistentVolumeClaim": {"claimName": volume.name}})
1181-
else:
1182-
k8s_volume.update(volume.parameters)
1183-
k8s_volumes.append(k8s_volume)
1178+
k8s_volumes.append(
1179+
{"name": volume.name, "persistentVolumeClaim": {"claimName": volume.name}})
11841180
k8s_volume_mounts.append(
11851181
{"name": volume.name, "mountPath": volume.path.get(ptype)})
11861182
return k8s_volumes, k8s_volume_mounts

0 commit comments

Comments
 (0)