haproxy-kubernetes/README_GO.md
holzi1005 8705a80ca8
All checks were successful
Build Go Binary / build (push) Successful in 43s
Update README_GO.md
2025-08-06 15:16:50 +02:00

79 lines
No EOL
2.7 KiB
Markdown

# 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 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"` |