Skip to content

Commit ff36238

Browse files
committed
MEDIUM: backend: move server options to default-server
1 parent 85dbcc1 commit ff36238

File tree

13 files changed

+169
-204
lines changed

13 files changed

+169
-204
lines changed

controller/annotations/annotations.go

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,22 @@ func Frontend(i store.Ingress, r *haproxy.Rules, m haproxy.Maps) []Annotation {
9090
}
9191
}
9292

93-
func Backend(b *models.Backend) []Annotation {
93+
func Backend(b *models.Backend, s store.K8s, certs *haproxy.Certificates) []Annotation {
9494
annotations := []Annotation{
9595
NewBackendCfgSnippet("backend-config-snippet", b.Name),
9696
service.NewAbortOnClose("abortonclose", b),
9797
service.NewTimeoutCheck("timeout-check", b),
9898
service.NewLoadBalance("load-balance", b),
99+
service.NewCheck("check", b),
100+
service.NewCheckInter("check-interval", b),
101+
service.NewCookie("cookie-persistence", b),
102+
service.NewMaxconn("pod-maxconn", b),
103+
service.NewSendProxy("send-proxy-protocol", b),
104+
// Order is important for ssl annotations so they don't conflict
105+
service.NewSSL("server-ssl", b),
106+
service.NewCrt("server-crt", certs, b),
107+
service.NewCA("server-ca", certs, b),
108+
service.NewProto("server-proto", b),
99109
}
100110
if b.Mode == "http" {
101111
annotations = append(annotations,
@@ -106,21 +116,6 @@ func Backend(b *models.Backend) []Annotation {
106116
return annotations
107117
}
108118

109-
func Server(s *models.Server, certs *haproxy.Certificates) []Annotation {
110-
return []Annotation{
111-
service.NewCheck("check", s),
112-
service.NewCheckInter("check-interval", s),
113-
service.NewCookie("cookie-persistence", nil, s),
114-
service.NewMaxconn("pod-maxconn", s),
115-
service.NewSendProxy("send-proxy-protocol", s),
116-
// Order is important for ssl annotations so they don't conflict
117-
service.NewSSL("server-ssl", s),
118-
service.NewCrt("server-crt", certs, s),
119-
service.NewCA("server-ca", certs, s),
120-
service.NewProto("server-proto", s),
121-
}
122-
}
123-
124119
func SetDefaultValue(annotation, value string) {
125120
common.DefaultValues[annotation] = value
126121
}

controller/annotations/service/ca.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ import (
1111
type CA struct {
1212
name string
1313
haproxyCerts *haproxy.Certificates
14-
server *models.Server
14+
backend *models.Backend
1515
}
1616

17-
func NewCA(n string, c *haproxy.Certificates, s *models.Server) *CA {
17+
func NewCA(n string, c *haproxy.Certificates, b *models.Backend) *CA {
1818
return &CA{
1919
name: n,
2020
haproxyCerts: c,
21-
server: s,
21+
backend: b,
2222
}
2323
}
2424

@@ -35,17 +35,17 @@ func (a *CA) Process(k store.K8s, annotations ...map[string]string) error {
3535
}
3636
secret, _ = k.GetSecret(ns, name)
3737
if secret == nil {
38-
a.server.SslCafile = ""
38+
a.backend.DefaultServer.CaFile = ""
3939
// Other values from serverSSL annotation are kept
4040
return nil
4141
}
4242
caFile, err = a.haproxyCerts.HandleTLSSecret(secret, haproxy.CA_CERT)
4343
if err != nil {
4444
return err
4545
}
46-
a.server.Ssl = "enabled"
47-
a.server.Alpn = "h2,http/1.1"
48-
a.server.Verify = "required"
49-
a.server.SslCafile = caFile
46+
a.backend.DefaultServer.Ssl = "enabled"
47+
a.backend.DefaultServer.Alpn = "h2,http/1.1"
48+
a.backend.DefaultServer.Verify = "required"
49+
a.backend.DefaultServer.CaFile = caFile
5050
return nil
5151
}

controller/annotations/service/check.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import (
99
)
1010

1111
type Check struct {
12-
name string
13-
server *models.Server
12+
name string
13+
backend *models.Backend
1414
}
1515

16-
func NewCheck(n string, s *models.Server) *Check {
17-
return &Check{name: n, server: s}
16+
func NewCheck(n string, b *models.Backend) *Check {
17+
return &Check{name: n, backend: b}
1818
}
1919

2020
func (a *Check) GetName() string {
@@ -24,17 +24,17 @@ func (a *Check) GetName() string {
2424
func (a *Check) Process(k store.K8s, annotations ...map[string]string) error {
2525
input := common.GetValue(a.GetName(), annotations...)
2626
if input == "" {
27-
a.server.Check = ""
27+
a.backend.DefaultServer.Check = ""
2828
return nil
2929
}
3030
enabled, err := utils.GetBoolValue(input, "check")
3131
if err != nil {
3232
return err
3333
}
3434
if enabled {
35-
a.server.Check = "enabled"
35+
a.backend.DefaultServer.Check = "enabled"
3636
} else {
37-
a.server.Check = "disabled"
37+
a.backend.DefaultServer.Check = "disabled"
3838
}
3939
return nil
4040
}

controller/annotations/service/checkInter.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import (
99
)
1010

1111
type CheckInter struct {
12-
name string
13-
server *models.Server
12+
name string
13+
backend *models.Backend
1414
}
1515

16-
func NewCheckInter(n string, s *models.Server) *CheckInter {
17-
return &CheckInter{name: n, server: s}
16+
func NewCheckInter(n string, b *models.Backend) *CheckInter {
17+
return &CheckInter{name: n, backend: b}
1818
}
1919

2020
func (a *CheckInter) GetName() string {
@@ -24,13 +24,13 @@ func (a *CheckInter) GetName() string {
2424
func (a *CheckInter) Process(k store.K8s, annotations ...map[string]string) error {
2525
input := common.GetValue(a.GetName(), annotations...)
2626
if input == "" {
27-
a.server.Inter = nil
27+
a.backend.DefaultServer.Inter = nil
2828
return nil
2929
}
3030
value, err := utils.ParseTime(input)
3131
if err != nil {
3232
return err
3333
}
34-
a.server.Inter = value
34+
a.backend.DefaultServer.Inter = value
3535
return nil
3636
}

controller/annotations/service/cookie.go

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ import (
1212
type Cookie struct {
1313
name string
1414
backend *models.Backend
15-
server *models.Server
1615
}
1716

18-
func NewCookie(n string, b *models.Backend, s *models.Server) *Cookie {
19-
return &Cookie{name: n, backend: b, server: s}
17+
func NewCookie(n string, b *models.Backend) *Cookie {
18+
return &Cookie{name: n, backend: b}
2019
}
2120

2221
func (a *Cookie) GetName() string {
@@ -27,26 +26,15 @@ func (a *Cookie) Process(k store.K8s, annotations ...map[string]string) error {
2726
input := common.GetValue(a.GetName(), annotations...)
2827
params := strings.Fields(input)
2928
if len(params) == 0 {
30-
switch {
31-
case a.backend != nil:
32-
a.backend.Cookie = nil
33-
case a.server != nil:
34-
a.server.Cookie = ""
35-
}
29+
a.backend.Cookie = nil
3630
return nil
3731
}
38-
switch {
39-
case a.backend != nil:
40-
cookieName := params[0]
41-
cookie := models.Cookie{
42-
Name: &cookieName,
43-
Type: "insert",
44-
Nocache: true,
45-
Indirect: true,
46-
}
47-
a.backend.Cookie = &cookie
48-
case a.server != nil:
49-
a.server.Cookie = a.server.Name
32+
cookieName := params[0]
33+
a.backend.Cookie = &models.Cookie{
34+
Name: &cookieName,
35+
Type: "insert",
36+
Nocache: true,
37+
Indirect: true,
5038
}
5139
return nil
5240
}

controller/annotations/service/crt.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ import (
1111
type Crt struct {
1212
name string
1313
haproxyCerts *haproxy.Certificates
14-
server *models.Server
14+
backend *models.Backend
1515
}
1616

17-
func NewCrt(n string, c *haproxy.Certificates, s *models.Server) *Crt {
17+
func NewCrt(n string, c *haproxy.Certificates, b *models.Backend) *Crt {
1818
return &Crt{
1919
name: n,
2020
haproxyCerts: c,
21-
server: s,
21+
backend: b,
2222
}
2323
}
2424

@@ -35,17 +35,17 @@ func (a *Crt) Process(k store.K8s, annotations ...map[string]string) error {
3535
}
3636
secret, _ = k.GetSecret(ns, name)
3737
if secret == nil {
38-
a.server.SslCertificate = ""
38+
a.backend.DefaultServer.SslCertificate = ""
3939
// Other values from serverSSL annotation are kept
4040
return nil
4141
}
4242
crtFile, err = a.haproxyCerts.HandleTLSSecret(secret, haproxy.BD_CERT)
4343
if err != nil {
4444
return err
4545
}
46-
a.server.Ssl = "enabled"
47-
a.server.Alpn = "h2,http/1.1"
48-
a.server.Verify = "none"
49-
a.server.SslCertificate = crtFile
46+
a.backend.DefaultServer.Ssl = "enabled"
47+
a.backend.DefaultServer.Alpn = "h2,http/1.1"
48+
a.backend.DefaultServer.Verify = "none"
49+
a.backend.DefaultServer.SslCertificate = crtFile
5050
return nil
5151
}

controller/annotations/service/maxconn.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import (
1010
)
1111

1212
type Maxconn struct {
13-
name string
14-
server *models.Server
13+
name string
14+
backend *models.Backend
1515
}
1616

17-
func NewMaxconn(n string, s *models.Server) *Maxconn {
18-
return &Maxconn{name: n, server: s}
17+
func NewMaxconn(n string, b *models.Backend) *Maxconn {
18+
return &Maxconn{name: n, backend: b}
1919
}
2020

2121
func (a *Maxconn) GetName() string {
@@ -25,7 +25,7 @@ func (a *Maxconn) GetName() string {
2525
func (a *Maxconn) Process(k store.K8s, annotations ...map[string]string) error {
2626
input := common.GetValue(a.GetName(), annotations...)
2727
if input == "" {
28-
a.server.Maxconn = nil
28+
a.backend.DefaultServer.Maxconn = nil
2929
return nil
3030
}
3131
v, err := strconv.ParseInt(input, 10, 64)
@@ -36,6 +36,6 @@ func (a *Maxconn) Process(k store.K8s, annotations ...map[string]string) error {
3636
if k.NbrHAProxyInst != 0 {
3737
v /= k.NbrHAProxyInst
3838
}
39-
a.server.Maxconn = &v
39+
a.backend.DefaultServer.Maxconn = &v
4040
return nil
4141
}

controller/annotations/service/proto.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import (
1010
)
1111

1212
type Proto struct {
13-
name string
14-
server *models.Server
13+
name string
14+
backend *models.Backend
1515
}
1616

17-
func NewProto(n string, s *models.Server) *Proto {
18-
return &Proto{name: n, server: s}
17+
func NewProto(n string, b *models.Backend) *Proto {
18+
return &Proto{name: n, backend: b}
1919
}
2020

2121
func (a *Proto) GetName() string {
@@ -26,13 +26,13 @@ func (a *Proto) Process(k store.K8s, annotations ...map[string]string) error {
2626
input := common.GetValue(a.GetName(), annotations...)
2727
switch input {
2828
case "":
29-
a.server.Proto = ""
29+
a.backend.DefaultServer.Proto = ""
3030
case "h1":
3131
// Forces H1 even when SSL is enabled
32-
a.server.Alpn = ""
33-
a.server.Proto = ""
32+
a.backend.DefaultServer.Alpn = ""
33+
a.backend.DefaultServer.Proto = ""
3434
case "h2":
35-
a.server.Proto = "h2"
35+
a.backend.DefaultServer.Proto = "h2"
3636
default:
3737
return fmt.Errorf("unknown proto %s", input)
3838
}

controller/annotations/service/sendProxy.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import (
1111
)
1212

1313
type SendProxy struct {
14-
name string
15-
server *models.Server
14+
name string
15+
backend *models.Backend
1616
}
1717

18-
func NewSendProxy(n string, s *models.Server) *SendProxy {
19-
return &SendProxy{name: n, server: s}
18+
func NewSendProxy(n string, b *models.Backend) *SendProxy {
19+
return &SendProxy{name: n, backend: b}
2020
}
2121

2222
func (a *SendProxy) GetName() string {
@@ -29,20 +29,20 @@ func (a *SendProxy) Process(k store.K8s, annotations ...map[string]string) error
2929
v := strings.ToLower(input)
3030
switch v {
3131
case "proxy":
32-
a.server.SendProxy = "enabled"
32+
a.backend.DefaultServer.SendProxy = "enabled"
3333
case "proxy-v1":
34-
a.server.SendProxy = "enabled"
34+
a.backend.DefaultServer.SendProxy = "enabled"
3535
case "proxy-v2":
36-
a.server.SendProxyV2 = "enabled"
36+
a.backend.DefaultServer.SendProxyV2 = "enabled"
3737
case "proxy-v2-ssl":
38-
a.server.SendProxyV2Ssl = "enabled"
38+
a.backend.DefaultServer.SendProxyV2Ssl = "enabled"
3939
case "proxy-v2-ssl-cn":
40-
a.server.SendProxyV2SslCn = "enabled"
40+
a.backend.DefaultServer.SendProxyV2SslCn = "enabled"
4141
case "":
42-
a.server.SendProxy = ""
43-
a.server.SendProxyV2 = ""
44-
a.server.SendProxyV2Ssl = ""
45-
a.server.SendProxyV2SslCn = ""
42+
a.backend.DefaultServer.SendProxy = ""
43+
a.backend.DefaultServer.SendProxyV2 = ""
44+
a.backend.DefaultServer.SendProxyV2Ssl = ""
45+
a.backend.DefaultServer.SendProxyV2SslCn = ""
4646
default:
4747
return fmt.Errorf("%s is an unknown enum", proxyPorto)
4848
}

controller/annotations/service/ssl.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import (
99
)
1010

1111
type SSL struct {
12-
name string
13-
server *models.Server
12+
name string
13+
backend *models.Backend
1414
}
1515

16-
func NewSSL(n string, s *models.Server) *SSL {
17-
return &SSL{name: n, server: s}
16+
func NewSSL(n string, b *models.Backend) *SSL {
17+
return &SSL{name: n, backend: b}
1818
}
1919

2020
func (a *SSL) GetName() string {
@@ -32,13 +32,13 @@ func (a *SSL) Process(k store.K8s, annotations ...map[string]string) error {
3232
}
3333
}
3434
if enabled {
35-
a.server.Ssl = "enabled"
36-
a.server.Alpn = "h2,http/1.1"
37-
a.server.Verify = "none"
35+
a.backend.DefaultServer.Ssl = "enabled"
36+
a.backend.DefaultServer.Alpn = "h2,http/1.1"
37+
a.backend.DefaultServer.Verify = "none"
3838
} else {
39-
a.server.Ssl = ""
40-
a.server.Alpn = ""
41-
a.server.Verify = ""
39+
a.backend.DefaultServer.Ssl = ""
40+
a.backend.DefaultServer.Alpn = ""
41+
a.backend.DefaultServer.Verify = ""
4242
}
4343
return nil
4444
}

0 commit comments

Comments
 (0)