Skip to content

Commit e1f2299

Browse files
ivanmatmatioktalz
authored andcommitted
BUG: fix ssl-redirect precedence order with configmap and ingress
1 parent 7fe7393 commit e1f2299

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

pkg/haproxy/rules/main.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,15 @@ func (r SectionRules) AddRule(frontend string, rule Rule, ingressRule bool) erro
8686
// Update frontend ruleSet
8787
ruleType := rule.GetType()
8888
ruleID := GetID(rule)
89-
_, ok = ftRuleSet.meta[ruleID]
90-
if ok {
91-
// rule already created
92-
ftRuleSet.meta[ruleID].state = CREATED
93-
} else {
94-
// rule to be created at next refresh
89+
ruleInf, ok := ftRuleSet.meta[ruleID]
90+
if ok && ruleInf.state == TO_DELETE {
91+
// rule already created and planned to be deleted
92+
ruleInf.state = CREATED
93+
} else if !ok {
9594
ftRuleSet.rules[ruleType] = append(ftRuleSet.rules[ruleType], rule)
9695
ftRuleSet.meta[ruleID] = &ruleInfo{state: TO_CREATE}
9796
}
97+
9898
if ingressRule {
9999
ftRuleSet.meta[ruleID].ingress = true
100100
}

pkg/ingress/ingress.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -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

169169
func 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

Comments
 (0)