101 lines
3.7 KiB
Text
101 lines
3.7 KiB
Text
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,
|
|
|
|
..
|
|
},
|
|
}
|