@@ -473,63 +473,37 @@ func (vsc *virtualServerConfigurator) GenerateVirtualServerConfig(
473
473
474
474
// generate upstreams for VirtualServer
475
475
for _ , u := range vsEx .VirtualServer .Spec .Upstreams {
476
-
477
- if (sslConfig == nil || ! vsc .cfgParams .HTTP2 ) && isGRPC (u .Type ) {
478
- vsc .addWarningf (vsEx .VirtualServer , "gRPC cannot be configured for upstream %s. gRPC requires enabled HTTP/2 and TLS termination." , u .Name )
479
- }
480
-
481
- upstreamName := virtualServerUpstreamNamer .GetNameForUpstream (u .Name )
482
- upstreamNamespace := vsEx .VirtualServer .Namespace
483
- endpoints := vsc .generateEndpointsForUpstream (vsEx .VirtualServer , upstreamNamespace , u , vsEx )
484
- backupEndpoints := vsc .generateBackupEndpointsForUpstream (vsEx .VirtualServer , upstreamNamespace , u , vsEx )
485
-
486
- // isExternalNameSvc is always false for OSS
487
- _ , isExternalNameSvc := vsEx .ExternalNameSvcs [GenerateExternalNameSvcKey (upstreamNamespace , u .Service )]
488
- ups := vsc .generateUpstream (vsEx .VirtualServer , upstreamName , u , isExternalNameSvc , endpoints , backupEndpoints )
489
- upstreams = append (upstreams , ups )
490
-
491
- u .TLS .Enable = isTLSEnabled (u , vsc .spiffeCerts , vsEx .VirtualServer .Spec .InternalRoute )
492
- crUpstreams [upstreamName ] = u
493
-
494
- if hc := generateHealthCheck (u , upstreamName , vsc .cfgParams ); hc != nil {
495
- healthChecks = append (healthChecks , * hc )
496
- if u .HealthCheck .StatusMatch != "" {
497
- statusMatches = append (
498
- statusMatches ,
499
- generateUpstreamStatusMatch (upstreamName , u .HealthCheck .StatusMatch ),
500
- )
501
- }
502
- }
476
+ upstreams , healthChecks , statusMatches = generateUpstreams (
477
+ sslConfig ,
478
+ vsc ,
479
+ u ,
480
+ vsEx .VirtualServer ,
481
+ vsEx .VirtualServer .Namespace ,
482
+ virtualServerUpstreamNamer ,
483
+ vsEx ,
484
+ upstreams ,
485
+ crUpstreams ,
486
+ healthChecks ,
487
+ statusMatches ,
488
+ )
503
489
}
504
490
// generate upstreams for each VirtualServerRoute
505
491
for _ , vsr := range vsEx .VirtualServerRoutes {
506
492
upstreamNamer := NewUpstreamNamerForVirtualServerRoute (vsEx .VirtualServer , vsr )
507
493
for _ , u := range vsr .Spec .Upstreams {
508
- if (sslConfig == nil || ! vsc .cfgParams .HTTP2 ) && isGRPC (u .Type ) {
509
- vsc .addWarningf (vsr , "gRPC cannot be configured for upstream %s. gRPC requires enabled HTTP/2 and TLS termination" , u .Name )
510
- }
511
-
512
- upstreamName := upstreamNamer .GetNameForUpstream (u .Name )
513
- upstreamNamespace := vsr .Namespace
514
- endpoints := vsc .generateEndpointsForUpstream (vsr , upstreamNamespace , u , vsEx )
515
- backup := vsc .generateBackupEndpointsForUpstream (vsEx .VirtualServer , upstreamNamespace , u , vsEx )
516
-
517
- // isExternalNameSvc is always false for OSS
518
- _ , isExternalNameSvc := vsEx .ExternalNameSvcs [GenerateExternalNameSvcKey (upstreamNamespace , u .Service )]
519
- ups := vsc .generateUpstream (vsr , upstreamName , u , isExternalNameSvc , endpoints , backup )
520
- upstreams = append (upstreams , ups )
521
- u .TLS .Enable = isTLSEnabled (u , vsc .spiffeCerts , vsEx .VirtualServer .Spec .InternalRoute )
522
- crUpstreams [upstreamName ] = u
523
-
524
- if hc := generateHealthCheck (u , upstreamName , vsc .cfgParams ); hc != nil {
525
- healthChecks = append (healthChecks , * hc )
526
- if u .HealthCheck .StatusMatch != "" {
527
- statusMatches = append (
528
- statusMatches ,
529
- generateUpstreamStatusMatch (upstreamName , u .HealthCheck .StatusMatch ),
530
- )
531
- }
532
- }
494
+ upstreams , healthChecks , statusMatches = generateUpstreams (
495
+ sslConfig ,
496
+ vsc ,
497
+ u ,
498
+ vsr ,
499
+ vsr .Namespace ,
500
+ upstreamNamer ,
501
+ vsEx ,
502
+ upstreams ,
503
+ crUpstreams ,
504
+ healthChecks ,
505
+ statusMatches ,
506
+ )
533
507
}
534
508
}
535
509
@@ -552,11 +526,7 @@ func (vsc *virtualServerConfigurator) GenerateVirtualServerConfig(
552
526
553
527
// generates config for VirtualServer routes
554
528
for _ , r := range vsEx .VirtualServer .Spec .Routes {
555
- errorPages := errorPageDetails {
556
- pages : r .ErrorPages ,
557
- index : len (errorPageLocations ),
558
- owner : vsEx .VirtualServer ,
559
- }
529
+ errorPages := generateErrorPageDetails (r .ErrorPages , errorPageLocations , vsEx .VirtualServer )
560
530
errorPageLocations = append (errorPageLocations , generateErrorPageLocations (errorPages .index , errorPages .pages )... )
561
531
562
532
// ignore routes that reference VirtualServerRoute
@@ -700,11 +670,7 @@ func (vsc *virtualServerConfigurator) GenerateVirtualServerConfig(
700
670
isVSR := true
701
671
upstreamNamer := NewUpstreamNamerForVirtualServerRoute (vsEx .VirtualServer , vsr )
702
672
for _ , r := range vsr .Spec .Subroutes {
703
- errorPages := errorPageDetails {
704
- pages : r .ErrorPages ,
705
- index : len (errorPageLocations ),
706
- owner : vsr ,
707
- }
673
+ errorPages := generateErrorPageDetails (r .ErrorPages , errorPageLocations , vsr )
708
674
errorPageLocations = append (errorPageLocations , generateErrorPageLocations (errorPages .index , errorPages .pages )... )
709
675
vsrNamespaceName := fmt .Sprintf ("%v/%v" , vsr .Namespace , vsr .Name )
710
676
// use the VirtualServer error pages if the route does not define any
@@ -930,6 +896,46 @@ func (vsc *virtualServerConfigurator) GenerateVirtualServerConfig(
930
896
return vsCfg , vsc .warnings
931
897
}
932
898
899
+ func generateUpstreams (
900
+ sslConfig * version2.SSL ,
901
+ vsc * virtualServerConfigurator ,
902
+ u conf_v1.Upstream ,
903
+ owner runtime.Object ,
904
+ ownerNamespace string ,
905
+ upstreamNamer * upstreamNamer ,
906
+ vsEx * VirtualServerEx ,
907
+ upstreams []version2.Upstream ,
908
+ crUpstreams map [string ]conf_v1.Upstream ,
909
+ healthChecks []version2.HealthCheck ,
910
+ statusMatches []version2.StatusMatch ,
911
+ ) ([]version2.Upstream , []version2.HealthCheck , []version2.StatusMatch ) {
912
+ if (sslConfig == nil || ! vsc .cfgParams .HTTP2 ) && isGRPC (u .Type ) {
913
+ vsc .addWarningf (owner , "gRPC cannot be configured for upstream %s. gRPC requires enabled HTTP/2 and TLS termination" , u .Name )
914
+ }
915
+
916
+ upstreamName := upstreamNamer .GetNameForUpstream (u .Name )
917
+ endpoints := vsc .generateEndpointsForUpstream (owner , ownerNamespace , u , vsEx )
918
+ backup := vsc .generateBackupEndpointsForUpstream (vsEx .VirtualServer , ownerNamespace , u , vsEx )
919
+
920
+ // isExternalNameSvc is always false for OSS
921
+ _ , isExternalNameSvc := vsEx .ExternalNameSvcs [GenerateExternalNameSvcKey (ownerNamespace , u .Service )]
922
+ ups := vsc .generateUpstream (owner , upstreamName , u , isExternalNameSvc , endpoints , backup )
923
+ upstreams = append (upstreams , ups )
924
+ u .TLS .Enable = isTLSEnabled (u , vsc .spiffeCerts , vsEx .VirtualServer .Spec .InternalRoute )
925
+ crUpstreams [upstreamName ] = u
926
+
927
+ if hc := generateHealthCheck (u , upstreamName , vsc .cfgParams ); hc != nil {
928
+ healthChecks = append (healthChecks , * hc )
929
+ if u .HealthCheck .StatusMatch != "" {
930
+ statusMatches = append (
931
+ statusMatches ,
932
+ generateUpstreamStatusMatch (upstreamName , u .HealthCheck .StatusMatch ),
933
+ )
934
+ }
935
+ }
936
+ return upstreams , healthChecks , statusMatches
937
+ }
938
+
933
939
// rateLimit hold the configuration for the ratelimiting Policy
934
940
type rateLimit struct {
935
941
Reqs []version2.LimitReq
@@ -3267,6 +3273,14 @@ func generateErrorPages(errPageIndex int, errorPages []conf_v1.ErrorPage) []vers
3267
3273
return ePages
3268
3274
}
3269
3275
3276
+ func generateErrorPageDetails (errorPages []conf_v1.ErrorPage , errorPageLocations []version2.ErrorPageLocation , owner runtime.Object ) errorPageDetails {
3277
+ return errorPageDetails {
3278
+ pages : errorPages ,
3279
+ index : len (errorPageLocations ),
3280
+ owner : owner ,
3281
+ }
3282
+ }
3283
+
3270
3284
func generateErrorPageLocations (errPageIndex int , errorPages []conf_v1.ErrorPage ) []version2.ErrorPageLocation {
3271
3285
var errorPageLocations []version2.ErrorPageLocation
3272
3286
for i , e := range errorPages {
0 commit comments