From b15afb8c064c9ddc442f77d149c191cb88725198 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 6 Aug 2025 12:42:03 +0200 Subject: [PATCH] Update main.go --- main.go | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/main.go b/main.go index 530800e..5f3e567 100644 --- a/main.go +++ b/main.go @@ -28,9 +28,13 @@ type BackendServer struct { } type Backend struct { - Name string - Balance string - Servers []BackendServer + Name string + Balance string + Mode string + CookieName string + CookieFlags string + HealthCheck bool + Servers []BackendServer } func getEnv(key, fallback string) string { @@ -118,8 +122,8 @@ func main() { type Service struct { Metadata struct { - Name string `json:"name"` - Namespace string `json:"namespace"` + Name string `json:"name"` + Namespace string `json:"namespace"` Annotations map[string]string `json:"annotations"` } `json:"metadata"` Spec struct { @@ -180,10 +184,6 @@ func main() { backends := []Backend{} for _, svc := range services { - if svc.Spec.Type != "ClusterIP" { - continue - } - if annotationCheckEnabled { val, ok := svc.Metadata.Annotations["haproxy/enabled"] if !ok || val != "true" { @@ -197,9 +197,28 @@ func main() { continue } + ann := svc.Metadata.Annotations + b := Backend{ - Name: "SRV_" + strings.ReplaceAll(svc.Metadata.Name, " ", "-"), - Balance: "leastconn", + Name: "SRV_" + strings.ReplaceAll(svc.Metadata.Name, " ", "-"), + Balance: "leastconn", + Mode: "tcp", // default + CookieName: "", + CookieFlags: "", + HealthCheck: true, + } + + if val, ok := ann["haproxy/mode"]; ok && val != "" { + b.Mode = val + } + if val, ok := ann["haproxy/cookie-name"]; ok && val != "" { + b.CookieName = val + } + if val, ok := ann["haproxy/cookie-flags"]; ok && val != "" { + b.CookieFlags = val + } + if val, ok := ann["haproxy/health-check"]; ok && strings.ToLower(val) == "false" { + b.HealthCheck = false } servers := []BackendServer{} @@ -221,7 +240,6 @@ func main() { } } b.Servers = servers - backends = append(backends, b) }