let _presets = (import "schemas/lib/concerns_presets.ncl").presets in { garage | default = { mode | default = 'taskserv, version | default = "v2.3.0", namespace | default = "garage", replicas | default = 1, replication_factor | default = 1, storage_class_name | default = "hcloud-volumes", data_volume_size | default = "10Gi", s3_api_port | default = 3900, admin_api_port | default = 3903, rpc_port | default = 3901, s3_region | default = "garage", secret_name | default = "garage-rpc-admin", node_selector | default = {}, buckets | default = [], operations | default = { install = true, reinstall = true, delete = true, health = true, }, live_check | default = { strategy = 'k8s_pods, scope = 'cp_only, namespace = "garage", selector = "app=garage", }, # ServiceConcerns default (ADR-008). Garage is a real datastore for # in-cluster S3 consumers — unlike infra glue, its data matters and the # backup question is open (not disabled): single-node, single Hetzner # Cloud Volume, no off-Hetzner replica decided yet. concerns | default = _presets.database & { backup | force = { kind = 'pending, reason = "Garage holds live S3 data for in-cluster consumers (Loki, fleet-state) on a single-node, non-replicated Hetzner Cloud Volume — no off-Hetzner backup destination decided yet", backlog_ref = "BACKUP-GARAGE-001", }, }, }, }