Skip to content

Commit 95cf66d

Browse files
authored
Virtual service check if rewrite is not nil (#1283)
1 parent 17d7399 commit 95cf66d

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

pkg/lib/k8s/virtual_service.go

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func VirtualService(spec *VirtualServiceSpec) *istioclientnetworking.VirtualServ
6363
})
6464
}
6565

66-
httpRoutes := []*istionetworking.HTTPRoute{}
66+
var httpRoutes []*istionetworking.HTTPRoute
6767

6868
if spec.ExactPath != nil {
6969
httpRoutes = append(httpRoutes, &istionetworking.HTTPRoute{
@@ -77,12 +77,15 @@ func VirtualService(spec *VirtualServiceSpec) *istioclientnetworking.VirtualServ
7777
},
7878
},
7979
Route: destinations,
80-
Rewrite: &istionetworking.HTTPRewrite{
81-
Uri: urls.CanonicalizeEndpoint(*spec.Rewrite),
82-
},
8380
})
81+
82+
if spec.Rewrite != nil {
83+
httpRoutes[0].Rewrite = &istionetworking.HTTPRewrite{
84+
Uri: urls.CanonicalizeEndpoint(*spec.Rewrite),
85+
}
86+
}
8487
} else {
85-
httpRoutes = append(httpRoutes, &istionetworking.HTTPRoute{
88+
exactMatch := &istionetworking.HTTPRoute{
8689
Match: []*istionetworking.HTTPMatchRequest{
8790
{
8891
Uri: &istionetworking.StringMatch{
@@ -93,10 +96,9 @@ func VirtualService(spec *VirtualServiceSpec) *istioclientnetworking.VirtualServ
9396
},
9497
},
9598
Route: destinations,
96-
Rewrite: &istionetworking.HTTPRewrite{
97-
Uri: urls.CanonicalizeEndpoint(*spec.Rewrite),
98-
},
99-
}, &istionetworking.HTTPRoute{
99+
}
100+
101+
prefixMatch := &istionetworking.HTTPRoute{
100102
Match: []*istionetworking.HTTPMatchRequest{
101103
{
102104
Uri: &istionetworking.StringMatch{
@@ -107,10 +109,19 @@ func VirtualService(spec *VirtualServiceSpec) *istioclientnetworking.VirtualServ
107109
},
108110
},
109111
Route: destinations,
110-
Rewrite: &istionetworking.HTTPRewrite{
112+
}
113+
114+
if spec.Rewrite != nil {
115+
exactMatch.Rewrite = &istionetworking.HTTPRewrite{
116+
Uri: urls.CanonicalizeEndpoint(*spec.Rewrite),
117+
}
118+
119+
prefixMatch.Rewrite = &istionetworking.HTTPRewrite{
111120
Uri: urls.CanonicalizeEndpoint(*spec.Rewrite) + "/",
112-
},
113-
})
121+
}
122+
}
123+
124+
httpRoutes = append(httpRoutes, exactMatch, prefixMatch)
114125
}
115126

116127
virtualService := &istioclientnetworking.VirtualService{

0 commit comments

Comments
 (0)