diff --git a/internal/store/ingress.go b/internal/store/ingress.go index 682ba46eb6..6d851c805d 100644 --- a/internal/store/ingress.go +++ b/internal/store/ingress.go @@ -104,10 +104,18 @@ var ( GenerateFunc: wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family { ms := []*metric.Metric{} for _, rule := range i.Spec.Rules { - for _, path := range rule.HTTP.Paths { + if rule.HTTP != nil { + for _, path := range rule.HTTP.Paths { + ms = append(ms, &metric.Metric{ + LabelKeys: []string{"host", "path", "service_name", "service_port"}, + LabelValues: []string{rule.Host, path.Path, path.Backend.ServiceName, path.Backend.ServicePort.String()}, + Value: 1, + }) + } + } else { ms = append(ms, &metric.Metric{ LabelKeys: []string{"host", "path", "service_name", "service_port"}, - LabelValues: []string{rule.Host, path.Path, path.Backend.ServiceName, path.Backend.ServicePort.String()}, + LabelValues: []string{rule.Host, "", "", ""}, Value: 1, }) } diff --git a/internal/store/ingress_test.go b/internal/store/ingress_test.go index 2f1d240439..c558c580ea 100644 --- a/internal/store/ingress_test.go +++ b/internal/store/ingress_test.go @@ -139,6 +139,9 @@ func TestIngressStore(t *testing.T) { }, }, }, + { + Host: "somehost2", + }, }, }, }, @@ -148,6 +151,7 @@ func TestIngressStore(t *testing.T) { kube_ingress_metadata_resource_version{namespace="ns4",resource_version="abcdef",ingress="ingress4"} 1 kube_ingress_labels{label_test_4="test-4",namespace="ns4",ingress="ingress4"} 1 kube_ingress_path{namespace="ns4",ingress="ingress4",host="somehost",path="/somepath",service_name="someservice",service_port="1234"} 1 + kube_ingress_path{namespace="ns4",ingress="ingress4",host="somehost2",path="",service_name="",service_port=""} 1 kube_ingress_annotations{namespace="ns4",ingress="ingress4",annotation_test_4="test-4"} 1 `, MetricNames: []string{"kube_ingress_info", "kube_ingress_metadata_resource_version", "kube_ingress_created", "kube_ingress_labels", "kube_ingress_path", "kube_ingress_annotations"},