@@ -145,7 +145,7 @@ func (i *Ingress) handleAnnotations(k store.K8s, h haproxy.HAProxy) {
145
145
var err error
146
146
var result = rules.List {}
147
147
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 )
149
149
if err != nil {
150
150
logger .Errorf ("Ingress '%s/%s': annotation %s: %s" , i .resource .Namespace , i .resource .Name , a .GetName (), err )
151
151
}
@@ -168,6 +168,8 @@ func HandleCfgMapAnnotations(k store.K8s, h haproxy.HAProxy, a annotations.Annot
168
168
169
169
func addRules (list rules.List , h haproxy.HAProxy , ingressRule bool ) []rules.RuleID {
170
170
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 {}{}
171
173
defaultFrontends := []string {h .FrontHTTP , h .FrontHTTPS }
172
174
for _ , rule := range list {
173
175
frontends := defaultFrontends
@@ -185,8 +187,12 @@ func addRules(list rules.List, h haproxy.HAProxy, ingressRule bool) []rules.Rule
185
187
}
186
188
}
187
189
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
+ }
190
196
}
191
197
}
192
198
return ruleIDs
0 commit comments