provisioning-catalog/components/ontoref_panel/nickel/contracts.ncl

109 lines
4.1 KiB
Text
Raw Permalink Normal View History

let _concerns_lib = import "schemas/lib/concerns.ncl" in
{
OntorefPanel = {
name
| String
| doc "Kubernetes resource name — include the panel suffix to distinguish instances (e.g. ontoref-panel-mail)"
| default = "ontoref-panel",
namespace
| String
| doc "Namespace where this panel Deployment is created"
| default = "ontoref-panel",
image
| String
| doc "Full image reference — built by lamina/ontoref-panel with all connector features; published to reg.librecloud.online"
| default = "reg.librecloud.online/lamina/ontoref-panel:latest",
port
| Number
| doc "HTTP port the panel daemon listens on"
| default = 8090,
node
| String
| doc "Kubernetes node hostname to pin the Deployment to — required for connector-mail to share the RWO PVC on the same node"
| default = "",
panel_enabled
| String
| doc "Value for PANEL_ENABLED — the single panel name this deployment activates (mail | vpn | dns)",
# ── Panel config ────────────────────────────────────────────────────────
panel_ncl_path
| String
| doc "Workspace-relative path to panel.ncl — vars.nu reads it and embeds it in the ConfigMap at render time"
| default = "config/panel.ncl",
panel_token_secret
| String
| doc "Secret name holding PANEL_TOKEN credential — must be pre-created in the panel namespace"
| default = "ontoref-panel-token",
# ── connector-mail specific ─────────────────────────────────────────────
mail_namespace
| String
| doc "Namespace of the docker-mailserver pod — used by RBAC and setup-proxy"
| default = "mail",
mail_pvc
| String
| doc "PVC name of the docker-mailserver data volume — mounted read-only for config file reads"
| default = "docker-mailserver-mail-data",
mail_data_subpath
| String
| doc "PVC subPath that contains postfix-accounts.cf, postfix-virtual.cf, etc."
| default = "config",
mail_pod_selector
| String
| doc "Label selector for the docker-mailserver pod targeted by the setup-proxy kubectl exec"
| default = "app.kubernetes.io/name=docker-mailserver",
mail_container
| String
| doc "Container name within the docker-mailserver pod to exec into"
| default = "docker-mailserver",
# ── connector-vpn specific ──────────────────────────────────────────────
wg_easy_url
| String
| doc "Base URL of the wg-easy admin API — reachable from the cluster network (e.g. http://10.200.0.1:51821)"
| default = "",
wg_easy_secret
| String
| doc "Secret name holding WG_EASY_PASSWORD"
| default = "wg-easy-password",
# ── connector-dns specific ──────────────────────────────────────────────
cloudflare_secret
| String
| doc "Secret name holding CLOUDFLARE_ZONE_ID and CLOUDFLARE_API_TOKEN"
| default = "cloudflare-dns-credentials",
# ── Private gateway ─────────────────────────────────────────────────────
private_gateway_name
| String
| doc "Name of the Cilium Gateway serving private VPN-only routes"
| default = "private-gateway",
private_gateway_namespace
| String
| doc "Namespace of the private gateway Gateway resource"
| default = "kube-system",
private_gateway_hostname
| String
| doc "Hostname for the HTTPRoute — must resolve to the private gateway IP inside the VPN (e.g. panel-mail.in.librecloud.online)"
| default = "",
concerns | _concerns_lib.ServiceConcerns | optional,
..
},
}