Skip to content

Commit a1a9d74

Browse files
committed
REORG/MAJOR: Move all HAProxy config under haproxy package
1 parent 7e1bcbb commit a1a9d74

32 files changed

+696
-680
lines changed

main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ func main() {
9090
s := store.NewK8sStore(osArgs)
9191

9292
c := controller.NewBuilder().
93+
WithHaproxyCfgFile(haproxyConf).
9394
WithEventChan(eventChan).
9495
WithIngressChan(ingressChan).
9596
WithStore(s).
@@ -103,7 +104,7 @@ func main() {
103104
)
104105

105106
go k.MonitorChanges(eventChan, ingressChan, stop)
106-
go c.Start(haproxyConf)
107+
go c.Start()
107108
if publishService != nil {
108109
go ingress.UpdateStatus(k.GetClientset(), s, osArgs.IngressClass, osArgs.EmptyIngressClass, ingressChan)
109110
}

pkg/configuration/main.go

Lines changed: 0 additions & 206 deletions
This file was deleted.

pkg/controller/builder.go

Lines changed: 30 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package controller
22

33
import (
4+
"errors"
45
"fmt"
56
"net/http"
67
"os"
7-
"path"
8-
"path/filepath"
98

109
"github.com/prometheus/client_golang/prometheus/promhttp"
1110

12-
config "github.com/haproxytech/kubernetes-ingress/pkg/configuration"
11+
"github.com/haproxytech/kubernetes-ingress/pkg/haproxy"
12+
"github.com/haproxytech/kubernetes-ingress/pkg/haproxy/config"
1313
"github.com/haproxytech/kubernetes-ingress/pkg/ingress"
1414
"github.com/haproxytech/kubernetes-ingress/pkg/k8s"
1515
"github.com/haproxytech/kubernetes-ingress/pkg/store"
@@ -18,27 +18,30 @@ import (
1818

1919
type Builder struct {
2020
osArgs utils.OSArgs
21-
cfg config.ControllerCfg
21+
haproxyEnv config.Env
2222
store store.K8s
2323
publishService *utils.NamespaceValue
24+
haproxyCfgFile []byte
2425
eventChan chan k8s.SyncDataEvent
2526
ingressChan chan ingress.Sync
2627
}
2728

28-
var defaultCfg = config.ControllerCfg{
29-
Env: config.Env{
30-
HAProxyBinary: "/usr/local/sbin/haproxy",
31-
MainCFGFile: "/etc/haproxy/haproxy.cfg",
32-
CfgDir: "/etc/haproxy/",
33-
RuntimeDir: "/var/run",
34-
StateDir: "/var/state/haproxy/",
29+
var defaultEnv = config.Env{
30+
Binary: "/usr/local/sbin/haproxy",
31+
MainCFGFile: "/etc/haproxy/haproxy.cfg",
32+
CfgDir: "/etc/haproxy/",
33+
RuntimeDir: "/var/run",
34+
StateDir: "/var/state/haproxy/",
35+
Proxies: config.Proxies{
36+
FrontHTTP: "http",
37+
FrontHTTPS: "https",
38+
FrontSSL: "ssl",
39+
BackSSL: "ssl",
3540
},
3641
}
3742

3843
func NewBuilder() *Builder {
39-
return &Builder{
40-
cfg: defaultCfg,
41-
}
44+
return &Builder{haproxyEnv: defaultEnv}
4245
}
4346

4447
func (builder *Builder) WithEventChan(eventChan chan k8s.SyncDataEvent) *Builder {
@@ -56,8 +59,13 @@ func (builder *Builder) WithStore(store store.K8s) *Builder {
5659
return builder
5760
}
5861

59-
func (builder *Builder) WithConfiguration(cfg config.ControllerCfg) *Builder {
60-
builder.cfg = cfg
62+
func (builder *Builder) WithHaproxyEnv(env config.Env) *Builder {
63+
builder.haproxyEnv = env
64+
return builder
65+
}
66+
67+
func (builder *Builder) WithHaproxyCfgFile(cfgFile []byte) *Builder {
68+
builder.haproxyCfgFile = cfgFile
6169
return builder
6270
}
6371

@@ -72,10 +80,9 @@ func (builder *Builder) WithPublishService(publishService *utils.NamespaceValue)
7280
}
7381

7482
func (builder *Builder) Build() *HAProxyController {
75-
if builder.osArgs.External {
76-
builder.cfg = setupExternalMode(builder.osArgs)
83+
if builder.haproxyCfgFile == nil {
84+
logger.Panic(errors.New("no HAProxy Config file provided"))
7785
}
78-
7986
if builder.osArgs.PromotheusPort != 0 {
8087
http.Handle("/metrics", promhttp.Handler())
8188
go func() {
@@ -90,11 +97,14 @@ func (builder *Builder) Build() *HAProxyController {
9097
}()
9198
}
9299

100+
haproxy, err := haproxy.New(builder.osArgs, builder.haproxyEnv, builder.haproxyCfgFile)
101+
logger.Panic(err)
102+
93103
prefix, errPrefix := utils.GetPodPrefix(os.Getenv("POD_NAME"))
94104
logger.Error(errPrefix)
95105
return &HAProxyController{
96-
cfg: builder.cfg,
97106
osArgs: builder.osArgs,
107+
haproxy: haproxy,
98108
podNamespace: os.Getenv("POD_NAMESPACE"),
99109
podPrefix: prefix,
100110
store: builder.store,
@@ -103,45 +113,3 @@ func (builder *Builder) Build() *HAProxyController {
103113
publishService: builder.publishService,
104114
}
105115
}
106-
107-
// When controller is not running on a containerized
108-
// environment (out of Kubernetes)
109-
func setupExternalMode(osArgs utils.OSArgs) config.ControllerCfg {
110-
logger.Print("Running Controller out of K8s cluster")
111-
logger.FileName = true
112-
cfg := config.ControllerCfg{
113-
Env: config.Env{
114-
HAProxyBinary: "/usr/local/sbin/haproxy",
115-
MainCFGFile: "/tmp/haproxy-ingress/etc/haproxy.cfg",
116-
CfgDir: "/tmp/haproxy-ingress/etc",
117-
RuntimeDir: "/tmp/haproxy-ingress/run",
118-
StateDir: "/tmp/haproxy-ingress/state",
119-
},
120-
}
121-
122-
if osArgs.CfgDir != "" {
123-
cfg.Env.CfgDir = osArgs.CfgDir
124-
cfg.Env.MainCFGFile = path.Join(cfg.Env.CfgDir, "haproxy.cfg")
125-
}
126-
if osArgs.RuntimeDir != "" {
127-
cfg.Env.RuntimeDir = osArgs.RuntimeDir
128-
}
129-
if err := os.MkdirAll(cfg.Env.CfgDir, 0755); err != nil {
130-
logger.Panic(err)
131-
}
132-
if err := os.MkdirAll(cfg.Env.RuntimeDir, 0755); err != nil {
133-
logger.Panic(err)
134-
}
135-
136-
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
137-
if err != nil {
138-
logger.Panic(err)
139-
}
140-
logger.Debug(dir)
141-
142-
if osArgs.Program != "" {
143-
cfg.Env.HAProxyBinary = osArgs.Program
144-
}
145-
146-
return cfg
147-
}

0 commit comments

Comments
 (0)