fix(supabase): use local-path storage class for k3d mode

k3d clusters only have local-path provisioner; defaulting to synology-iscsi
caused all Supabase PVCs to get stuck Pending. Also add local-path to the
validation allowlist so it is not rejected as an unknown storage class.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
chrisfu 2026-05-03 21:51:06 -07:00
parent 0008b0ad54
commit 59696889ea

View File

@ -793,6 +793,8 @@ def _build_overlay(cfg: configparser.ConfigParser, args: argparse.Namespace) ->
)
if mode == "k8s":
default_sc = "supabase-standard"
elif mode == "k3d":
default_sc = "local-path"
else:
default_sc = "synology-iscsi"
@ -805,7 +807,7 @@ def _build_overlay(cfg: configparser.ConfigParser, args: argparse.Namespace) ->
if not supabase_storage_class or _is_placeholder(supabase_storage_class):
if mode == "k8s":
raise SystemExit("SUPABASE_STORAGE_CLASS is required in k8s mode.")
supabase_storage_class = "synology-iscsi"
supabase_storage_class = default_sc
storage_backend = _first(
os.environ.get("SUPABASE_STORAGE_BACKEND", ""),
@ -1078,7 +1080,7 @@ def _build_overlay(cfg: configparser.ConfigParser, args: argparse.Namespace) ->
if supabase_storage_class:
# Validate: must be a synology/merlin/gke mount — refuse pi/local SD card classes
allowed_prefixes = ("synology", "merlin-local-iscsi", "myrddin-local-iscsi", "supabase-gke", "supabase-standard", "pd-standard")
allowed_prefixes = ("synology", "merlin-local-iscsi", "myrddin-local-iscsi", "supabase-gke", "supabase-standard", "pd-standard", "local-path")
if not any(supabase_storage_class.startswith(p) for p in allowed_prefixes):
raise SystemExit(
f"SUPABASE_STORAGE_CLASS '{supabase_storage_class}' is not a synology or GKE CSI mount. "