From 852778c2203ea9aff247dcf6b79a187b8233f520 Mon Sep 17 00:00:00 2001 From: Moemen MHEDHBI Date: Fri, 5 Nov 2021 10:14:54 +0100 Subject: [PATCH] BUG/MINOR: Fix configuration of backend model Setting the backend mode should be done before processing annotations because some of them depend on the backend mode. --- controller/service/service.go | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/controller/service/service.go b/controller/service/service.go index 4ee24090..7b0dd0da 100644 --- a/controller/service/service.go +++ b/controller/service/service.go @@ -32,6 +32,8 @@ import ( var logger = utils.GetLogger() +const cookieKey = "ohph7OoGhong" + type Service struct { path *store.IngressPath resource *store.Service @@ -139,25 +141,16 @@ func (s *Service) HandleBackend(client api.HAProxyClient, store store.K8s) (relo } // getBackendModel checks for a corresponding custom resource before falling back to annoations -func (s *Service) getBackendModel(store store.K8s) (*models.Backend, error) { - var backend *models.Backend - var err error - var cookieKey = "ohph7OoGhong" - crInuse := true +func (s *Service) getBackendModel(store store.K8s) (backend *models.Backend, err error) { + var crInUse = true + // get/create backend Model backend, err = annotations.ModelBackend("cr-backend", s.resource.Namespace, store, s.annotations...) logger.Warning(err) if backend == nil { backend = &models.Backend{DefaultServer: &models.DefaultServer{}} - crInuse = false - } - if !crInuse { - for _, a := range annotations.Backend(backend, store, s.certs) { - err = a.Process(store, s.annotations...) - if err != nil { - logger.Errorf("service '%s/%s': annotation '%s': %s", s.resource.Namespace, s.resource.Name, a.GetName(), err) - } - } + crInUse = false } + // configure backend model if s.modeTCP { backend.Mode = "tcp" } else { @@ -169,6 +162,14 @@ func (s *Service) getBackendModel(store store.K8s) (*models.Backend, error) { if s.resource.DNS != "" { backend.DefaultServer = &models.DefaultServer{InitAddr: "last,libc,none"} } + if !crInUse { + for _, a := range annotations.Backend(backend, store, s.certs) { + err = a.Process(store, s.annotations...) + if err != nil { + logger.Errorf("service '%s/%s': annotation '%s': %s", s.resource.Namespace, s.resource.Name, a.GetName(), err) + } + } + } if backend.Cookie != nil && backend.Cookie.Dynamic && backend.DynamicCookieKey == "" { backend.DynamicCookieKey = cookieKey }