@@ -145,7 +145,7 @@ func (i *Ingress) handleAnnotations(k store.K8s, h haproxy.HAProxy) {
145145 var err error
146146 var result = rules.List {}
147147 for _ , a := range i .annotations .Frontend (i .resource , & result , h .Maps ) {
148- err = a .Process (k , i .resource .Annotations )
148+ err = a .Process (k , i .resource .Annotations , k . ConfigMaps . Main . Annotations )
149149 if err != nil {
150150 logger .Errorf ("Ingress '%s/%s': annotation %s: %s" , i .resource .Namespace , i .resource .Name , a .GetName (), err )
151151 }
@@ -168,6 +168,8 @@ func HandleCfgMapAnnotations(k store.K8s, h haproxy.HAProxy, a annotations.Annot
168168
169169func addRules (list rules.List , h haproxy.HAProxy , ingressRule bool ) []rules.RuleID {
170170 ruleIDs := make ([]rules.RuleID , 0 , len (list ))
171+ // To avoid inserting twice the same rule id in destinating map file
172+ ruleIDSet := map [rules.RuleID ]struct {}{}
171173 defaultFrontends := []string {h .FrontHTTP , h .FrontHTTPS }
172174 for _ , rule := range list {
173175 frontends := defaultFrontends
@@ -185,8 +187,12 @@ func addRules(list rules.List, h haproxy.HAProxy, ingressRule bool) []rules.Rule
185187 }
186188 }
187189 for _ , frontend := range frontends {
188- logger .Error (h .AddRule (frontend , rule , ingressRule ))
189- ruleIDs = append (ruleIDs , rules .GetID (rule ))
190+ logger .Error (h .AddRule (frontend , rule , ingressRule || rule .GetType () == rules .REQ_REDIRECT ))
191+ idRule := rules .GetID (rule )
192+ if _ , ok := ruleIDSet [idRule ]; ! ok {
193+ ruleIDs = append (ruleIDs , idRule )
194+ ruleIDSet [idRule ] = struct {}{}
195+ }
190196 }
191197 }
192198 return ruleIDs
0 commit comments