Skip to content

Commit fd4a82c

Browse files
committed
Create deployment PVC outside of helm chart
1 parent 6ea54d8 commit fd4a82c

4 files changed

Lines changed: 35 additions & 76 deletions

File tree

src/deployment/__init__.py

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,37 @@ def _load_chart_values(chart_root: Any) -> dict[str, Any]:
391391
return values_content
392392

393393

394+
async def _create_fresh_pvcs(
395+
namespace: str,
396+
storage_class_name: str,
397+
parameters: DeploymentParameters,
398+
*,
399+
pitr_enabled: bool,
400+
) -> None:
401+
"""Create empty block PVCs for a brand-new deployment before helm install."""
402+
from .kubernetes.pvc import create_pvc
403+
404+
access_modes = ["ReadWriteMany"]
405+
406+
def _pvc(name: str, size: str) -> kubernetes_client.V1PersistentVolumeClaim:
407+
return kubernetes_client.V1PersistentVolumeClaim(
408+
metadata=kubernetes_client.V1ObjectMeta(name=name),
409+
spec=kubernetes_client.V1PersistentVolumeClaimSpec(
410+
access_modes=access_modes,
411+
storage_class_name=storage_class_name,
412+
volume_mode="Block",
413+
resources=kubernetes_client.V1VolumeResourceRequirements(requests={"storage": size}),
414+
),
415+
)
416+
417+
db_pvc_name = f"{_autoscaler_vm_name()}{AUTOSCALER_PVC_SUFFIX}"
418+
await create_pvc(namespace, _pvc(db_pvc_name, str(parameters.database_size)))
419+
420+
if pitr_enabled:
421+
wal_pvc_name = f"{_autoscaler_vm_name()}{AUTOSCALER_WAL_PVC_SUFFIX}"
422+
await create_pvc(namespace, _pvc(wal_pvc_name, PITR_WAL_PVC_SIZE))
423+
424+
394425
def _configure_vela_values(
395426
values_content: dict[str, Any],
396427
*,
@@ -399,7 +430,6 @@ def _configure_vela_values(
399430
database_admin_password: str,
400431
pgbouncer_admin_password: str,
401432
storage_class_name: str,
402-
use_existing_db_pvc: bool,
403433
pgbouncer_config: Mapping[str, int] | None,
404434
enable_file_storage: bool,
405435
pitr_enabled: bool,
@@ -451,7 +481,6 @@ def _configure_vela_values(
451481
pg_wal_spec = values_content.setdefault("pg_wal", wal_archive_spec or {})
452482
pg_wal_spec["enabled"] = pitr_enabled
453483
wal_persistence = pg_wal_spec.setdefault("persistence", {})
454-
wal_persistence["create"] = not use_existing_db_pvc
455484
wal_persistence["size"] = PITR_WAL_PVC_SIZE
456485
wal_persistence["storageClassName"] = storage_class_name
457486
wal_persistence["claimName"] = wal_persistence.get("claimName") or (
@@ -461,8 +490,6 @@ def _configure_vela_values(
461490

462491
db_persistence = db_spec.setdefault("persistence", {})
463492
db_persistence["size"] = str(parameters.database_size)
464-
if use_existing_db_pvc:
465-
db_persistence["create"] = False
466493
db_persistence["storageClassName"] = storage_class_name
467494

468495
autoscaler_spec = values_content.setdefault("autoscalerVm", {})
@@ -479,7 +506,6 @@ def _configure_vela_values(
479506
autoscaler_resources["memorySlots"] = memory_slots
480507

481508
autoscaler_persistence = autoscaler_spec.setdefault("persistence", {})
482-
autoscaler_persistence["create"] = not use_existing_db_pvc
483509
autoscaler_persistence["claimName"] = f"{_autoscaler_vm_name()}{AUTOSCALER_PVC_SUFFIX}"
484510
autoscaler_persistence["size"] = str(parameters.database_size)
485511
autoscaler_persistence["storageClassName"] = storage_class_name
@@ -523,14 +549,17 @@ async def create_vela_config(
523549
values_content = _load_chart_values(chart)
524550

525551
storage_class_name = await ensure_branch_storage_class(branch_id, iops=parameters.iops)
552+
553+
if not use_existing_db_pvc:
554+
await _create_fresh_pvcs(namespace, storage_class_name, parameters, pitr_enabled=pitr_enabled)
555+
526556
values_content = _configure_vela_values(
527557
values_content,
528558
parameters=parameters,
529559
jwt_secret=jwt_secret,
530560
database_admin_password=database_admin_password,
531561
pgbouncer_admin_password=pgbouncer_admin_password,
532562
storage_class_name=storage_class_name,
533-
use_existing_db_pvc=use_existing_db_pvc,
534563
pgbouncer_config=pgbouncer_config,
535564
enable_file_storage=parameters.enable_file_storage,
536565
pitr_enabled=pitr_enabled,

src/deployment/charts/vela/templates/autoscaler/pvc.yaml

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/deployment/charts/vela/templates/autoscaler/wal-pvc.yaml

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/deployment/charts/vela/values.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ autoscalerVm:
6060
tls:
6161
serverName: ""
6262
persistence:
63-
create: true
6463
storageClassName: "simplyblock-csi-sc"
6564
size: 20Gi
6665
claimName: ''
@@ -71,7 +70,6 @@ pg_wal:
7170
enabled: false
7271
mountPath: '/var/lib/postgresql/wal'
7372
persistence:
74-
create: true
7573
storageClassName: "simplyblock-csi-sc"
7674
size: 10Gi
7775
claimName: ''

0 commit comments

Comments
 (0)