let _presets = (import "schemas/lib/concerns_presets.ncl").presets in { web_app | default = { name | default = "web-app", namespace | default = "", catalog_ref | default = "web_app", image | default = "nginx", image_tag | default = "1.27-alpine", http_port | default = 80, domain | default = "", domains_extra | 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", storage_class | default = "longhorn-retain", storage_size | default = "2Gi", data_dir | default = "/usr/share/nginx/html", nginx_conf_extra | default = "", auth_paths | default = [], requires | default = { storage = { size = "2Gi", persistent = true }, ports = [{ port = 80, exposure = 'public }], credentials = [], }, provides | default = { service = "web-app", port = 80, endpoints = [], }, operations | default = { install = true, update = true, delete = true, health = true, }, live_check | default = { strategy = 'k8s_pods, scope = 'cp_only, }, concerns | default = let _name = name in let _domain = domain in let _dns_zone = dns_zone in let _acme_email = acme_email in let _cluster_issuer = cluster_issuer in (_presets.tls_endpoint_with_acme { tls_secret = "%{_name}-tls", cluster_issuer = _cluster_issuer, hostnames = [_domain], 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 = "", }), }, }