haproxy-kubernetes/README_GO.md
holzi1005 b90d855736
All checks were successful
Build Go Binary / build (push) Successful in 36s
Update README_GO.md
2025-08-06 15:22:39 +02:00

2.7 KiB

Start Go Script to create new Config

export KUBERNETES_HOST="https://10.0.20.7:6443"
export KUBERNETES_TOKEN="eyJhbGciOi..."
export KUBERNETES_VERIFYSSL="false"
export HAPROXY_TEMPLATE="./haproxy.tmpl"

./haproxy-generator > /etc/haproxy/haproxy.cfg && sudo systemctl restart haproxy

HaProxy Template

{{- range .backends }}

backend {{ .Name }}
  mode {{ .Mode }}
  balance {{ .Balance }}
  {{- if .CookieName }}
  cookie {{ .CookieName }} {{ .CookieFlags }}
  {{- end }}

  {{- range .Servers }}
  server {{ .Name }} {{ .Address }}:{{ .Port }}{{ if $.HealthCheck }} check{{ end }}{{ if $.CookieName }} cookie {{ .Cookie }}{{ end }} {{ $.ServerOptions }}
  {{- end }}

{{- end }}

{{- end }}

Systemd Service and Timer

[Unit]
Description=HAProxy Config Generator
After=network.target

[Service]
Type=oneshot
Environment=KUBERNETES_HOST=https://10.0.20.7:6443
Environment=KUBERNETES_TOKEN=eyJhbGciOi...
Environment=KUBERNETES_VERIFYSSL=false
Environment=HAPROXY_TEMPLATE=/etc/haproxy/haproxy.tmpl
ExecStart=/path/to/haproxy-generator > /etc/haproxy/haproxy.cfg
ExecStartPost=/bin/systemctl restart haproxy

Timer for Systemd

[Unit]
Description=Run HAProxy Config Generator every minute

[Timer]
OnBootSec=1min
OnUnitActiveSec=1min
Unit=haproxy-generator.service
Persistent=true

[Install]
WantedBy=timers.target

Service Annotations

Annotation-Key Beschreibung Typ Beispielwert
haproxy/enabled Aktiviert die Aufnahme des Services in die HAProxy-Konfiguration bool "true"
haproxy/mode Betriebsmodus des Backends (tcp oder http) string "tcp" / "http"
haproxy/cookie-name Name des Cookies zur Session-Persistenz string "SRVCOOKIE"
haproxy/cookie-flags Zusätzliche Cookie-Optionen für HAProxy string "insert indirect nocache"
haproxy/health-check Deaktiviert Health-Checks, wenn "false" gesetzt wird bool "false"
haproxy/server-options Zusätzliche Optionen für die einzelnen server-Zeilen in HAProxy string "ssl verify none"
haproxy/port Nutze nur diesen Port des Services, wenn mehrere Ports definiert sind int "8080"