85 lines
3 KiB
Text
85 lines
3 KiB
Text
|
|
let _concerns_lib = import "schemas/lib/concerns.ncl" in
|
||
|
|
let _context_lib = import "schemas/catalog/context.ncl" in
|
||
|
|
|
||
|
|
{
|
||
|
|
RusteloWebsite = {
|
||
|
|
context | _context_lib.ComponentContext | optional,
|
||
|
|
|
||
|
|
name | String,
|
||
|
|
namespace | String,
|
||
|
|
catalog_ref | String | optional,
|
||
|
|
|
||
|
|
# Full image reference without tag — e.g. reg.librecloud.online/ns/my-site
|
||
|
|
image | String,
|
||
|
|
image_tag | String | default = "latest",
|
||
|
|
|
||
|
|
port | Number | default = 3000,
|
||
|
|
domain | String,
|
||
|
|
dns_zone | String,
|
||
|
|
acme_email | String,
|
||
|
|
cluster_issuer | String,
|
||
|
|
|
||
|
|
# Gateway API sharing key for the public FIP gateway (e.g. librecloud-fip-wuji)
|
||
|
|
gateway_fip | String,
|
||
|
|
# Gateway resource name and namespace — must match the Cilium Gateway in the cluster
|
||
|
|
gateway_name | String | default = "libre-wuji",
|
||
|
|
gateway_ns | String | default = "kube-system",
|
||
|
|
|
||
|
|
# K8s Secret name in the deployment namespace holding the registry pull credentials
|
||
|
|
registry_secret | String | default = "regcred",
|
||
|
|
|
||
|
|
# Rendering strategy. 'htmx_ssr ships a binary-only image (no WASM): the server
|
||
|
|
# renders the full body and htmx drives interactivity from public/ assets.
|
||
|
|
# 'leptos_hydration ships a WASM bundle under pkg/ that the client hydrates,
|
||
|
|
# which requires the sync-pkg initContainer to keep the PV's pkg/ paired with
|
||
|
|
# the server binary (server-fn hashes drift otherwise).
|
||
|
|
render_mode | [| 'leptos_hydration, 'htmx_ssr |] | default = 'htmx_ssr,
|
||
|
|
|
||
|
|
# cargo-leptos output-name — base name of the WASM/JS bundle served under pkg/.
|
||
|
|
# Only meaningful when render_mode = 'leptos_hydration.
|
||
|
|
leptos_output_name | String | default = "website",
|
||
|
|
|
||
|
|
data_pvc | {
|
||
|
|
enabled | Bool | default = false,
|
||
|
|
size | String | default = "2Gi",
|
||
|
|
# Mount path inside the container for SQLite and dynamic content
|
||
|
|
mount_path | String | default = "/app/data",
|
||
|
|
storage_class | String | default = "longhorn-retain",
|
||
|
|
} | default = {},
|
||
|
|
|
||
|
|
# Additional env vars injected into the Deployment (non-secret)
|
||
|
|
env | { _ : String } | optional,
|
||
|
|
|
||
|
|
requires | {
|
||
|
|
storage | { size | String, persistent | Bool } | optional,
|
||
|
|
ports | Array {
|
||
|
|
port | Number,
|
||
|
|
exposure | [| 'public, 'private, 'internal |] | default = 'public,
|
||
|
|
} | default = [],
|
||
|
|
credentials | Array String | default = [],
|
||
|
|
} | default = {},
|
||
|
|
|
||
|
|
provides | {
|
||
|
|
service | String | optional,
|
||
|
|
port | Number | optional,
|
||
|
|
endpoints | Array String | default = [],
|
||
|
|
} | default = {},
|
||
|
|
|
||
|
|
operations | {
|
||
|
|
install | Bool | default = true,
|
||
|
|
update | Bool | default = true,
|
||
|
|
delete | Bool | default = true,
|
||
|
|
health | Bool | default = true,
|
||
|
|
} | default = {},
|
||
|
|
|
||
|
|
live_check | {
|
||
|
|
strategy | [| 'k8s_pods, 'http_get |] | default = 'k8s_pods,
|
||
|
|
scope | [| 'cp_only, 'all_nodes |] | default = 'cp_only,
|
||
|
|
} | default = {},
|
||
|
|
|
||
|
|
concerns | _concerns_lib.ServiceConcerns | optional,
|
||
|
|
|
||
|
|
..
|
||
|
|
},
|
||
|
|
}
|