2.7 KiB
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" |