MCPcopy
hub / github.com/zegl/kube-score / ingressTargetsServiceCommon

Function ingressTargetsServiceCommon

score/ingress/ingress.go:21–76  ·  view source on GitHub ↗
(ingress ks.Ingress, allServices []ks.Service)

Source from the content-addressed store, hash-verified

19}
20
21func ingressTargetsServiceCommon(ingress ks.Ingress, allServices []ks.Service) (score scorecard.TestScore, err error) {
22 allRulesHaveMatches := true
23
24 for _, rule := range ingress.Rules() {
25 if rule.IngressRuleValue.HTTP == nil {
26 continue
27 }
28
29 for _, path := range rule.IngressRuleValue.HTTP.Paths {
30
31 pathHasMatch := false
32
33 for _, srv := range allServices {
34 service := srv.Service()
35
36 if service.Namespace != ingress.GetObjectMeta().Namespace {
37 continue
38 }
39 if path.Backend.Service == nil {
40 continue
41 }
42
43 if service.Name == path.Backend.Service.Name {
44 for _, servicePort := range service.Spec.Ports {
45 if path.Backend.Service.Port.Number > 0 && servicePort.Port == path.Backend.Service.Port.Number {
46 pathHasMatch = true
47 } else if servicePort.Name == path.Backend.Service.Port.Name {
48 pathHasMatch = true
49 }
50 }
51 }
52 }
53
54 if !pathHasMatch {
55 allRulesHaveMatches = false
56 if path.Backend.Service != nil {
57 if path.Backend.Service.Port.Number > 0 {
58 score.AddComment(path.Path, "No service match was found", fmt.Sprintf("No service with name %s and port number %d was found", path.Backend.Service.Name, path.Backend.Service.Port.Number))
59 } else {
60 score.AddComment(path.Path, "No service match was found", fmt.Sprintf("No service with name %s and port named %s was found", path.Backend.Service.Name, path.Backend.Service.Port.Name))
61 }
62 } else {
63 score.AddComment(path.Path, "No service match was found", "")
64 }
65 }
66 }
67 }
68
69 if allRulesHaveMatches {
70 score.Grade = scorecard.GradeAllOK
71 } else {
72 score.Grade = scorecard.GradeCritical
73 }
74
75 return
76}

Callers 1

ingressTargetsServiceFunction · 0.85

Calls 4

AddCommentMethod · 0.80
RulesMethod · 0.65
ServiceMethod · 0.65
GetObjectMetaMethod · 0.65

Tested by

no test coverage detected