79 lines
No EOL
2.7 KiB
Markdown
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` | 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"` | |