From 5de98614da2aeae3781e74d231d8516376ca0631 Mon Sep 17 00:00:00 2001 From: ston1th Date: Sat, 10 Apr 2021 02:42:55 +0200 Subject: [PATCH] added proxyprotocol options --- TODO | 10 ++++------ pkg/api/v1/schema/schema.go | 8 +++++--- pkg/haproxy/config.go | 8 +++++--- pkg/haproxy/template.go | 16 +++++++++------- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/TODO b/TODO index 55fca48..c7b2220 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,5 @@ -test etcd -* user/password -* multi node +VIP for haproxy-lb +* take from pool? +* extra config? -usr arp lib https://godoc.org/github.com/mdlayher/arp ? -* https://github.com/metallb/metallb/blob/main/internal/layer2/arp.go#L50 -add google copyright to arp ocde? +test api in followers diff --git a/pkg/api/v1/schema/schema.go b/pkg/api/v1/schema/schema.go index 89d43d8..f7a1b6d 100644 --- a/pkg/api/v1/schema/schema.go +++ b/pkg/api/v1/schema/schema.go @@ -21,9 +21,11 @@ type LoadBalancer struct { } type Options struct { - Frontend []string `json:"frontend,omitempty"` - Backend []string `json:"backend,omitempty"` - DefaultServer string `json:"defaultServer,omitempty` + Frontend []string `json:"frontend,omitempty"` + Backend []string `json:"backend,omitempty"` + ProxyProtocol string `json:"proxyProtocol,omitempty"` + CheckProxyProtocol bool `json:"checkProxyProtocol,omitempty"` + DefaultServer string `json:"defaultServer,omitempty` } type Port struct { diff --git a/pkg/haproxy/config.go b/pkg/haproxy/config.go index dd2f2d7..8215565 100644 --- a/pkg/haproxy/config.go +++ b/pkg/haproxy/config.go @@ -26,9 +26,11 @@ type LoadBalancer struct { } type Options struct { - Frontend []string `json:"frontend"` - Backend []string `json:"backend"` - DefaultServer string `json:"defaultServer"` + Frontend []string `json:"frontend"` + Backend []string `json:"backend"` + ProxyProtocol string `json:"proxyProtocol"` + CheckProxyProtocol bool `json:"checkProxyProtocol"` + DefaultServer string `json:"defaultServer"` } type Port struct { diff --git a/pkg/haproxy/template.go b/pkg/haproxy/template.go index 6df1eeb..b01c53c 100644 --- a/pkg/haproxy/template.go +++ b/pkg/haproxy/template.go @@ -2,6 +2,7 @@ package haproxy const haproxyConfigTemplate = `global daemon + # TODO #chroot /var/lib/haproxy chroot /usr/share/haproxy pidfile /run/haproxy.pid @@ -31,20 +32,21 @@ frontend fr_{{ $item.Name }}_{{ $port.Port }} {{- range $opt := $item.Options.Frontend }} option {{ $opt }} {{- end }} - # option tcplog - # option splice-request default_backend ba_{{ $item.Name }}_{{ $port.Port }} backend ba_{{ $item.Name }}_{{ $port.Port }} balance roundrobin {{- range $opt := $item.Options.Backend }} option {{ $opt }} {{- end }} - # option splice-response - # option httpchk GET / default-server inter 3s downinter 10s fall 2 rise 2 on-marked-down shutdown-sessions {{ $item.Options.DefaultServer }} - # send-proxy-v2 - # check-send-proxy - # port +{{- if eq $item.Options.ProxyProtocol "v1" }} + send-proxy +{{- else if eq $item.Options.ProxyProtocol "v2" }} + send-proxy-v2 +{{- end }} +{{- if $item.Options.CheckProxyProtocol }} + check-send-proxy +{{- end }} {{- range $srv := $port.Servers }} server {{ $srv.Name }} {{ $srv.IP }}:{{ $srv.Port }} check {{- end }}