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

132 lines
4 KiB
Text
Raw Normal View History

let _presets = (import "schemas/lib/concerns_presets.ncl").presets in
{
forgejo | default = {
name | default = "forgejo",
version | default = "9.0.3",
image | default = "codeberg.org/forgejo/forgejo:9.0.3",
namespace | default = "data",
http_port | default = 3000,
ssh_port | default = 22,
ssh_nodeport | default = 32222,
domain | default = "",
domains_extra | default = [],
ssh_domain | default = "",
dns_zone | default = "",
acme_email | default = "",
cluster_issuer | default = "letsencrypt-prod",
gateway_fip | default = "",
gateway_name | default = "libre-wuji",
gateway_ns | default = "kube-system",
ssh_lb_ip | default = "",
ssh_lb_sharing_key | default = "",
db_name | default = "forgejo",
db_schema | default = "",
db_host | default = "postgresql.core-data.svc.libre-wuji.local",
db_user | default = "forgejo",
db_port | default = 5432,
data_dir | default = "/var/lib/gitea",
repos_dir | default = "/var/lib/gitea/git/repositories",
admin_user | default = "admin",
admin_email | default = "",
storage_class | default = "longhorn-retain",
storage_size | default = "20Gi",
registry_secret | default = "",
app_ini_extra | default = "",
mode | default = 'cluster,
requires | default = {
storage = { size = "20Gi", persistent = true },
ports = [
{ port = 3000, exposure = 'internal },
{ port = 22, exposure = 'public },
],
credentials = [
"FORGEJO_ADMIN_PASSWORD",
"POSTGRES_PASSWORD",
"FORGEJO_SECRET_KEY",
"FORGEJO_INTERNAL_TOKEN",
"FORGEJO_JWT_SECRET",
"FORGEJO_LFS_JWT_SECRET",
],
},
provides | default = {
service = "forgejo",
port = 3000,
},
operations | default = {
install = true,
update = true,
delete = true,
health = true,
restart = true,
},
live_check | default =
let _sel = name in
{
strategy = 'k8s_pods,
scope = 'cp_only,
selector = _sel,
},
concerns | default =
let _name = name in
let _domain = domain in
let _domains_extra = domains_extra in
let _dns_zone = dns_zone in
let _acme_email = acme_email in
let _cluster_issuer = cluster_issuer in
let _backup_ref = "BACKUP-FORGEJO-%{_name}" in
(_presets.tls_endpoint_with_acme {
tls_secret = "%{_name}-tls",
cluster_issuer = _cluster_issuer,
hostnames = [_domain] @ _domains_extra,
dns_internal = [],
dns_zone = _dns_zone,
acme_server = "https://acme-v02.api.letsencrypt.org/directory",
acme_email = _acme_email,
cert_secret_ref = "",
cert_provider = 'cloudflare,
backup_backlog_ref = _backup_ref,
}) & {
backup | force = {
kind = 'pending,
reason = "BackupPolicy required — Forgejo /data PVC + PostgreSQL DB must be backed up as a group",
backlog_ref = _backup_ref,
},
manifest_hooks = {
init = { pre = [
{ action = 'create-cf-secret },
{ file = "clusterissuer", action = 'apply, skip_if_exists = true },
{ file = "certificate", action = 'apply, skip_if_exists = true },
{ file = "referencegrant", action = 'apply },
{ action = 'patch-gateway-https },
] },
update = { pre = [
{ file = "certificate", action = 'apply, skip_if_exists = true },
{ file = "referencegrant", action = 'apply },
{ action = 'patch-gateway-https },
] },
delete = { pre = [
{ action = 'remove-gateway-https },
{ file = "referencegrant", action = 'delete },
] },
},
},
},
}