@@ -56,7 +56,7 @@ func NewDefaultDataBuilder(
5656}
5757
5858// TODO: включать/выключать трафик в зоне - ?
59- // TODO: httpHandler -> Http2Options, AllowHttp10 ?
59+ // TODO: httpHandler -> Http2Options ?
6060func (d * DefaultEngineBuilder ) Build (ctx context.Context , g * k8s.IngressGroup , settings * v1alpha1.IngressGroupSettings ) (* IngressGroupEngine , error ) {
6161 if len (g .Items ) == 0 {
6262 return d .newIngressGroupEngine (nil ), nil
@@ -75,6 +75,10 @@ func (d *DefaultEngineBuilder) Build(ctx context.Context, g *k8s.IngressGroup, s
7575 if err != nil {
7676 return nil , fmt .Errorf ("failed to build auto scale policy: %w" , err )
7777 }
78+ allowHTTP10 , err := d .allowHTTP10 (g )
79+ if err != nil {
80+ return nil , fmt .Errorf ("failed to build allow http10: %w" , err )
81+ }
7882
7983 opts := builders.Options {
8084 BalancerOptions : builders.BalancerOptions {
@@ -86,15 +90,18 @@ func (d *DefaultEngineBuilder) Build(ctx context.Context, g *k8s.IngressGroup, s
8690 ListenerOptions : builders.ListenerOptions {
8791 Addresses : addresses ,
8892 },
93+ HandlerOptions : builders.HandlerOptions {
94+ AllowHTTP10 : allowHTTP10 ,
95+ },
8996 }
9097
9198 b := builders.Data {}
9299 b .HTTPRouter , b .TLSRouter , err = d .buildVirtualHosts (g )
93100 if err != nil {
94101 return nil , fmt .Errorf ("failed to build virtual hosts: %w" , err )
95102 }
96- b .Handler = d . buildHTTPHandler ( g )
97- b .SNIMatches , err = d .buildSNIMatches (ctx , g )
103+ b .Handler = builders . BuildHTTPHandler ( opts . HandlerOptions )
104+ b .SNIMatches , err = d .buildSNIMatches (ctx , g , opts . HandlerOptions )
98105 if err != nil {
99106 return nil , fmt .Errorf ("failed to build sni matches: %w" , err )
100107 }
@@ -149,6 +156,17 @@ func (d *DefaultEngineBuilder) autoScalePolicy(g *k8s.IngressGroup) (*apploadbal
149156 return resolver .Result (), nil
150157}
151158
159+ func (d * DefaultEngineBuilder ) allowHTTP10 (g * k8s.IngressGroup ) (bool , error ) {
160+ resolver := d .resolvers .AllowHTTP10 ()
161+ for _ , ing := range g .Items {
162+ err := resolver .Resolve (ing .GetAnnotations ()[k8s .AllowHTTP10 ])
163+ if err != nil {
164+ return false , fmt .Errorf ("failed to resolve allow http10: %w" , err )
165+ }
166+ }
167+ return resolver .Result (), nil
168+ }
169+
152170func (d * DefaultEngineBuilder ) routeOpts (ing networking.Ingress ) (builders.RouteResolveOpts , error ) {
153171 r := d .resolvers .RouteOpts ()
154172 annotations := ing .GetAnnotations ()
@@ -475,8 +493,10 @@ func (d *DefaultEngineBuilder) buildVirtualHosts(g *k8s.IngressGroup) (*builders
475493 return httpVHBuilder .Build (), tlsVHBuilder .Build (), nil
476494}
477495
478- func (d * DefaultEngineBuilder ) buildSNIMatches (ctx context.Context , g * k8s.IngressGroup ) ([]* apploadbalancer.SniMatch , error ) {
496+ func (d * DefaultEngineBuilder ) buildSNIMatches (ctx context.Context , g * k8s.IngressGroup , opts builders. HandlerOptions ) ([]* apploadbalancer.SniMatch , error ) {
479497 b := d .factory .HandlerBuilder (g .Tag )
498+ b .AddHandlerOptions (opts )
499+
480500 for _ , ing := range g .Items {
481501 for _ , tls := range ing .Spec .TLS {
482502 if strings .HasPrefix (tls .SecretName , k8s .CertIDPrefix ) {
@@ -506,10 +526,6 @@ func (d *DefaultEngineBuilder) buildSNIMatches(ctx context.Context, g *k8s.Ingre
506526 return b .Build (), nil
507527}
508528
509- func (d * DefaultEngineBuilder ) buildHTTPHandler (_ * k8s.IngressGroup ) * apploadbalancer.HttpHandler {
510- return & apploadbalancer.HttpHandler {}
511- }
512-
513529func (d * DefaultEngineBuilder ) buildBalancer (handler * apploadbalancer.HttpHandler , matches []* apploadbalancer.SniMatch , logOpts * apploadbalancer.LogOptions ,
514530 tag string , opts builders.Options ,
515531) * apploadbalancer.LoadBalancer {
0 commit comments