98 lines
2.8 KiB
Text
98 lines
2.8 KiB
Text
let _concerns_lib = import "schemas/lib/concerns.ncl" in
|
|
|
|
{
|
|
GarageBucket = {
|
|
name
|
|
| String
|
|
| doc "Bucket name created in Garage on install (idempotent)",
|
|
|
|
key_name
|
|
| String
|
|
| doc "Garage API key name granted read-write on this bucket; access/secret key printed once on first creation",
|
|
},
|
|
|
|
Garage = {
|
|
mode
|
|
| std.enum.TagOrString
|
|
| doc "Deployment mode — Garage is always a taskserv (StatefulSet)"
|
|
| default = 'taskserv,
|
|
|
|
version
|
|
| String
|
|
| doc "Garage release tag (git.deuxfleurs.fr/Deuxfleurs/garage releases)"
|
|
| default = "v2.3.0",
|
|
|
|
namespace
|
|
| String
|
|
| doc "K8s namespace for the Garage StatefulSet"
|
|
| default = "garage",
|
|
|
|
replicas
|
|
| std.number.Nat
|
|
| doc "StatefulSet replica count. 1 = single-node cluster (no inter-node replication)."
|
|
| default = 1,
|
|
|
|
replication_factor
|
|
| std.number.Nat
|
|
| doc "Garage data replication factor passed to the cluster layout. Must be <= replicas. 1 for single-node."
|
|
| default = 1,
|
|
|
|
storage_class_name
|
|
| String
|
|
| doc "StorageClass backing each Garage pod's data+meta PVC (e.g. hcloud-volumes for single-node attach, avoiding Longhorn replica placement on storage nodes)"
|
|
| default = "hcloud-volumes",
|
|
|
|
data_volume_size
|
|
| String
|
|
| doc "Per-pod PVC size for data_dir + metadata_dir"
|
|
| default = "10Gi",
|
|
|
|
s3_api_port
|
|
| std.number.Nat
|
|
| doc "Garage S3 API port"
|
|
| default = 3900,
|
|
|
|
admin_api_port
|
|
| std.number.Nat
|
|
| doc "Garage admin API port (bucket/key management)"
|
|
| default = 3903,
|
|
|
|
rpc_port
|
|
| std.number.Nat
|
|
| doc "Garage inter-node RPC port"
|
|
| default = 3901,
|
|
|
|
s3_region
|
|
| String
|
|
| doc "S3 region string Garage advertises; consumers must set this as their S3 client region"
|
|
| default = "garage",
|
|
|
|
secret_name
|
|
| String
|
|
| doc "Name of the K8s Secret in `namespace` holding GARAGE_RPC_SECRET and GARAGE_ADMIN_TOKEN — provisioned out-of-band (SOPS-managed), never generated by the install script"
|
|
| default = "garage-rpc-admin",
|
|
|
|
node_selector
|
|
| {_ : String}
|
|
| doc "nodeSelector for the Garage pod(s) — set at the infra layer, never baked into catalog defaults"
|
|
| default = {},
|
|
|
|
buckets
|
|
| Array GarageBucket
|
|
| doc "Buckets to create (idempotent) with their access keys on install"
|
|
| default = [],
|
|
|
|
operations
|
|
| { install: Bool, reinstall: Bool, delete: Bool, health: Bool }
|
|
| optional,
|
|
|
|
live_check
|
|
| { strategy: std.enum.TagOrString, scope: std.enum.TagOrString, namespace: String, selector: String }
|
|
| optional,
|
|
|
|
# ServiceConcerns umbrella (ADR-008).
|
|
concerns | _concerns_lib.ServiceConcerns | optional,
|
|
|
|
..
|
|
},
|
|
}
|