Skip to content

Commit

Permalink
MEDIUM: remove restart of HAProxy
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanmatmati committed Oct 24, 2024
1 parent ea3ffa0 commit 3577793
Show file tree
Hide file tree
Showing 7 changed files with 9 additions and 85 deletions.
9 changes: 1 addition & 8 deletions pkg/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,14 +183,7 @@ func (c *HAProxyController) updateHAProxy() {
c.setToReady()
}

switch {
case instance.NeedRestart():
if err = c.haproxy.Service("restart"); err != nil {
logger.Error(err)
} else {
logger.Info("HAProxy restarted")
}
case instance.NeedReload():
if instance.NeedReload() {
if err = c.haproxy.Service("reload"); err != nil {
logger.Error(err)
} else {
Expand Down
6 changes: 3 additions & 3 deletions pkg/controller/global.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,13 @@ func (c *HAProxyController) globalCfg() {
diff := newGlobal.Diff(*global)
if len(diff) != 0 {
logger.Error(c.haproxy.GlobalPushConfiguration(*newGlobal))
instance.Restart("Global config updated: %s", strings.Join(updated, "\n"))
instance.Reload("Global config updated: %s", strings.Join(updated, "\n"))
}
diff = newLg.Diff(lg)
// updated = deep.Equal(newLg, lg)
if len(diff) != 0 {
logger.Error(c.haproxy.GlobalPushLogTargets(newLg))
instance.Restart("Global log targets updated: %s", strings.Join(updated, "\n"))
instance.Reload("Global log targets updated: %s", strings.Join(updated, "\n"))
}
c.globalCfgSnipp()
}
Expand All @@ -112,7 +112,7 @@ func (c *HAProxyController) globalCfgSnipp() {
}
updatedSnipp, errSnipp := annotations.UpdateGlobalCfgSnippet(c.haproxy)
logger.Error(errSnipp)
instance.RestartIf(len(updatedSnipp) != 0,
instance.ReloadIf(len(updatedSnipp) != 0,
"Global config-snippet updated: %s", strings.Join(updatedSnipp, "\n"))

updatedSnipp, errSnipp = annotations.UpdateFrontendCfgSnippet(c.haproxy, "http", "https", "stats")
Expand Down
7 changes: 3 additions & 4 deletions pkg/controller/monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func (c *HAProxyController) SyncData() {
case k8s.COMMAND:
c.auxCfgManager()
// create a NeedAction function.
if hadChanges || instance.NeedAction() {
if hadChanges || instance.NeedReload() {
c.updateHAProxy()
hadChanges = false
continue
Expand Down Expand Up @@ -91,7 +91,6 @@ func (c *HAProxyController) SyncData() {
}
}

// auxCfgManager returns restart or reload requirement based on state and transition of auxiliary configuration file.
func (c *HAProxyController) auxCfgManager() {
info, errStat := os.Stat(c.haproxy.AuxCFGFile)
var (
Expand All @@ -109,7 +108,7 @@ func (c *HAProxyController) auxCfgManager() {
c.haproxy.SetAuxCfgFile(auxCfgFile)
c.haproxy.UseAuxFile(useAuxFile)
// The file exists now (modifTime !=0 otherwise nothing changed case).
instance.RestartIf(c.auxCfgModTime == 0, "auxiliary configuration file created")
instance.ReloadIf(c.auxCfgModTime == 0, "auxiliary configuration file created")
instance.ReloadIf(c.auxCfgModTime != 0, "auxiliary configuration file modified")
c.auxCfgModTime = modifTime
if c.auxCfgModTime != 0 {
Expand All @@ -125,7 +124,7 @@ func (c *HAProxyController) auxCfgManager() {
// never existed before
return
}
instance.Restart("Auxiliary HAProxy config '%s' removed", c.haproxy.AuxCFGFile)
instance.Reload("Auxiliary HAProxy config '%s' removed", c.haproxy.AuxCFGFile)
return
}
// File exists
Expand Down
48 changes: 2 additions & 46 deletions pkg/haproxy/instance/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,37 +13,21 @@ func Reload(reason string, args ...any) {
DefaultConfigurationManager.SetReload(reason, args...)
}

func Restart(reason string, args ...any) {
DefaultConfigurationManager.SetRestart(reason, args...)
}

func ReloadIf(reload bool, reason string, args ...any) {
DefaultConfigurationManager.SetReloadIf(reload, reason, args...)
}

func RestartIf(restart bool, reason string, args ...any) {
DefaultConfigurationManager.SetRestartIf(restart, reason, args...)
}

func NeedReload() bool {
return DefaultConfigurationManager.NeedReload()
}

func NeedRestart() bool {
return DefaultConfigurationManager.NeedRestart()
}

func Reset() {
DefaultConfigurationManager.Reset()
}

func NeedAction() bool {
return DefaultConfigurationManager.NeedAction()
}

type configurationManagerImpl struct {
logger utils.Logger
reload, restart bool
logger utils.Logger
reload bool
}

func NewConfigurationManager() *configurationManagerImpl {
Expand All @@ -60,27 +44,14 @@ func (cmi *configurationManagerImpl) SetReload(reason string, args ...any) {
cmi.logger.InfoSkipCallerf("reload required : "+reason, args...)
}

func (cmi *configurationManagerImpl) SetRestart(reason string, args ...any) {
cmi.restart = true
if !cmi.validReason(reason) {
return
}
cmi.logger.InfoSkipCallerf("restart required : "+reason, args...)
}

func (cmi *configurationManagerImpl) Reset() {
cmi.reload = false
cmi.restart = false
}

func (cmi *configurationManagerImpl) NeedReload() bool {
return cmi.reload
}

func (cmi *configurationManagerImpl) NeedRestart() bool {
return cmi.restart
}

func (cmi *configurationManagerImpl) SetReloadIf(reload bool, reason string, args ...any) {
if !reload {
return
Expand All @@ -92,21 +63,6 @@ func (cmi *configurationManagerImpl) SetReloadIf(reload bool, reason string, arg
cmi.logger.InfoSkipCallerf("reload required : "+reason, args...)
}

func (cmi *configurationManagerImpl) SetRestartIf(restart bool, reason string, args ...any) {
if !restart {
return
}
cmi.restart = true
if !cmi.validReason(reason) {
return
}
cmi.logger.InfoSkipCallerf("restart required : "+reason, args...)
}

func (cmi *configurationManagerImpl) NeedAction() bool {
return cmi.NeedReload() || cmi.NeedRestart()
}

func (cmi *configurationManagerImpl) validReason(reason string) bool {
if reason == "" {
errMsg := "empty reason for reload"
Expand Down
14 changes: 0 additions & 14 deletions pkg/haproxy/process/direct-control.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"
"os"
"os/exec"
"strconv"
"syscall"

"github.com/haproxytech/kubernetes-ingress/pkg/haproxy/api"
Expand Down Expand Up @@ -61,19 +60,6 @@ func (d *directControl) Service(action string) (err error) {
return d.Service("start")
}
return process.Signal(syscall.SIGUSR2)
case "restart":
if processErr != nil {
logger.Errorf("haproxy is not running, trying to start it")
return d.Service("start")
}
pid := strconv.Itoa(process.Pid)
cmd = exec.Command(d.Env.Binary, "-S", masterSocketArg, "-f", d.Env.MainCFGFile, "-sf", pid)
if d.useAuxFile {
cmd = exec.Command(d.Env.Binary, "-S", masterSocketArg, "-f", d.Env.MainCFGFile, "-f", d.Env.AuxCFGFile, "-sf", pid)
}
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
return cmd.Run()
default:
return fmt.Errorf("unknown command '%s'", action)
}
Expand Down
5 changes: 0 additions & 5 deletions pkg/haproxy/process/pebble.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,6 @@ func (d *pebbleControl) Service(action string) error {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
return cmd.Run()
case "restart":
cmd = exec.Command("pebble", "restart", "haproxy")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
return cmd.Run()
default:
return fmt.Errorf("unknown command '%s'", action)
}
Expand Down
5 changes: 0 additions & 5 deletions pkg/haproxy/process/s6-overlay.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,6 @@ func (d *s6Control) Service(action string) error {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
return cmd.Run()
case "restart":
cmd = exec.Command("s6-svc", "-t", "/run/service/haproxy")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
return cmd.Run()
default:
return fmt.Errorf("unknown command '%s'", action)
}
Expand Down

0 comments on commit 3577793

Please sign in to comment.