@@ -473,62 +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
- backup := 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 , backup )
489
- upstreams = append (upstreams , ups )
490
- u .TLS .Enable = isTLSEnabled (u , vsc .spiffeCerts , vsEx .VirtualServer .Spec .InternalRoute )
491
- crUpstreams [upstreamName ] = u
492
-
493
- if hc := generateHealthCheck (u , upstreamName , vsc .cfgParams ); hc != nil {
494
- healthChecks = append (healthChecks , * hc )
495
- if u .HealthCheck .StatusMatch != "" {
496
- statusMatches = append (
497
- statusMatches ,
498
- generateUpstreamStatusMatch (upstreamName , u .HealthCheck .StatusMatch ),
499
- )
500
- }
501
- }
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
+ )
502
489
}
503
490
// generate upstreams for each VirtualServerRoute
504
491
for _ , vsr := range vsEx .VirtualServerRoutes {
505
492
upstreamNamer := NewUpstreamNamerForVirtualServerRoute (vsEx .VirtualServer , vsr )
506
493
for _ , u := range vsr .Spec .Upstreams {
507
- if (sslConfig == nil || ! vsc .cfgParams .HTTP2 ) && isGRPC (u .Type ) {
508
- vsc .addWarningf (vsr , "gRPC cannot be configured for upstream %s. gRPC requires enabled HTTP/2 and TLS termination" , u .Name )
509
- }
510
-
511
- upstreamName := upstreamNamer .GetNameForUpstream (u .Name )
512
- upstreamNamespace := vsr .Namespace
513
- endpoints := vsc .generateEndpointsForUpstream (vsr , upstreamNamespace , u , vsEx )
514
- backup := vsc .generateBackupEndpointsForUpstream (vsEx .VirtualServer , upstreamNamespace , u , vsEx )
515
-
516
- // isExternalNameSvc is always false for OSS
517
- _ , isExternalNameSvc := vsEx .ExternalNameSvcs [GenerateExternalNameSvcKey (upstreamNamespace , u .Service )]
518
- ups := vsc .generateUpstream (vsr , upstreamName , u , isExternalNameSvc , endpoints , backup )
519
- upstreams = append (upstreams , ups )
520
- u .TLS .Enable = isTLSEnabled (u , vsc .spiffeCerts , vsEx .VirtualServer .Spec .InternalRoute )
521
- crUpstreams [upstreamName ] = u
522
-
523
- if hc := generateHealthCheck (u , upstreamName , vsc .cfgParams ); hc != nil {
524
- healthChecks = append (healthChecks , * hc )
525
- if u .HealthCheck .StatusMatch != "" {
526
- statusMatches = append (
527
- statusMatches ,
528
- generateUpstreamStatusMatch (upstreamName , u .HealthCheck .StatusMatch ),
529
- )
530
- }
531
- }
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
+ )
532
507
}
533
508
}
534
509
@@ -921,6 +896,46 @@ func (vsc *virtualServerConfigurator) GenerateVirtualServerConfig(
921
896
return vsCfg , vsc .warnings
922
897
}
923
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 (owner , 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
+
924
939
// rateLimit hold the configuration for the ratelimiting Policy
925
940
type rateLimit struct {
926
941
Reqs []version2.LimitReq
0 commit comments