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

102 lines
3.7 KiB
Text
Raw Normal View History

let _concerns_lib = import "schemas/lib/concerns.ncl" in
let _context_lib = import "schemas/catalog/context.ncl" in
{
Forgejo = {
context | _context_lib.ComponentContext | optional,
name | String,
version | String | default = "9.0.3",
image | String | default = "codeberg.org/forgejo/forgejo:9.0.3",
namespace | String | default = "data",
http_port | Number | default = 3000,
ssh_port | Number | default = 22,
# NodePort exposed for SSH git access. Range 30000-32767 (K8s default).
# When deploying multiple Forgejo instances in the same cluster, pick a
# unique nodeport per tenant (e.g. 32222 / 32223 / 32224).
ssh_nodeport | Number | default = 32222,
domain | String | default = "",
domains_extra | Array String | default = [],
# Overrides SSH_DOMAIN advertised to git clients. Defaults to `domain` when empty.
# Set when SSH is exposed via a different hostname than the web UI (e.g. dedicated NodePort IP/CNAME).
ssh_domain | String | default = "",
dns_zone | String | default = "",
acme_email | String | default = "",
cluster_issuer | String | default = "letsencrypt-prod",
gateway_fip | String | default = "",
gateway_name | String | default = "libre-wuji",
gateway_ns | String | default = "kube-system",
# When set, SSH service becomes LoadBalancer sharing this FIP IP via Cilium LB-IPAM.
# Requires the gateway service to have sharing-cross-namespace including this namespace.
# When empty, falls back to NodePort using ssh_nodeport.
ssh_lb_ip | String | default = "",
ssh_lb_sharing_key | String | default = "",
db_name | String | default = "forgejo",
db_schema | String | default = "",
db_host | String | default = "postgresql.core-data.svc.libre-wuji.local",
db_user | String | default = "forgejo",
db_port | Number | default = 5432,
data_dir | String | default = "/var/lib/gitea",
repos_dir | String | default = "/var/lib/gitea/git/repositories",
admin_user | String | default = "admin",
admin_email | String | default = "",
storage_class | String | default = "longhorn-retain",
storage_size | String | default = "20Gi",
registry_secret | String | default = "",
# Extra app.ini fragments appended to the rendered ConfigMap.
# Used to inject per-tenant overrides without rebuilding the template.
app_ini_extra | String | default = "",
mode | [| 'taskserv, 'cluster, 'container |] | default = 'cluster,
requires | {
storage | { size | String, persistent | Bool } | optional,
ports | Array {
port | Number,
protocol | String | default = "TCP",
exposure | [| 'public, 'private, 'internal |] | default = 'internal,
} | default = [],
credentials | Array String | default = [],
} | default = {},
provides | {
service | String | optional,
port | Number | optional,
databases | Array String | default = [],
endpoints | Array String | default = [],
} | default = {},
operations | {
install | Bool | default = true,
update | Bool | default = false,
reinstall | Bool | default = false,
delete | Bool | default = false,
backup | Bool | default = false,
restore | Bool | default = false,
health | Bool | default = false,
config | Bool | default = false,
scripts | Bool | default = false,
restart | Bool | default = false,
} | 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,
..
},
}