Files
fn_registry/functions/infra/generate_traefik_dynamic.md
egutierrez 750b7abcd5 chore: auto-commit (97 archivos)
- .claude/CLAUDE.md
- .claude/agents/fn-recopilador/SKILL.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- bash/functions/infra/build_cpp_windows.sh
- cpp/CMakeLists.txt
- cpp/PATTERNS.md
- cpp/framework/app_base.cpp
- cpp/framework/app_base.h
- dev/issues/README.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:11:24 +02:00

2.1 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
generate_traefik_dynamic function go infra 1.0.0 pure func GenerateTraefikDynamic(cfg TraefikDynamicConfig) string Genera el texto YAML de un traefik-dynamic.yml para el file provider de Traefik (Coolify). Replica el patron de apps/registry_api/traefik-dynamic.yml con routers HTTP/HTTPS, redirect, basicAuth opcional y gzip opcional.
traefik
yaml
infra
deploy
generator
basicauth
tls
coolify
TraefikDynamicConfig_go_infra
false
fmt
strings
name desc
cfg configuracion del dynamic config: nombre (prefix), dominio, upstream URL, linea htpasswd opcional, flag de gzip y cert resolver
texto YAML completo del traefik-dynamic.yml listo para escribir a disco y recargar en Traefik true
render con auth y gzip
render sin auth
render sin gzip
certResolver custom
certResolver vacio usa letsencrypt por defecto
snapshot YAML completo replica patron registry_api
functions/infra/generate_traefik_dynamic_test.go functions/infra/generate_traefik_dynamic.go

Ejemplo

line, _ := BcryptHtpasswd("lucas", "s3cr3t", 10)
cfg := TraefikDynamicConfig{
    Name:          "kanban",
    Domain:        "kanban.organic-machine.com",
    UpstreamURL:   "http://kanban:8421",
    BasicAuthLine: line,
    EnableGzip:    true,
    CertResolver:  "letsencrypt",
}
yaml := GenerateTraefikDynamic(cfg)
os.WriteFile("apps/kanban/traefik-dynamic.yml", []byte(yaml), 0644)

Notas

Funcion pura: dado el mismo TraefikDynamicConfig siempre produce el mismo YAML. Si BasicAuthLine es vacio se omite el router middleware <name>-auth y la seccion basicAuth. Si EnableGzip es false se omite el middleware <name>-gzip. El redirect HTTP→HTTPS siempre esta presente. CertResolver por defecto es "letsencrypt". El output usa $ simple (file provider), no $$ (Docker labels). Combinar con BcryptHtpasswd para generar la linea de auth.