84
84
HostName string
85
85
IngressHost string
86
86
IngressClass string
87
- IngressController string
88
- IngressControllerType ingressControllerType
87
+ IngressController ingressutil.IngressController
89
88
Insecure bool
90
89
InstallDemoResources bool
91
90
SkipClusterChecks bool
@@ -141,25 +140,12 @@ type (
141
140
message string
142
141
level summaryLogLevels
143
142
}
144
-
145
- ingressControllerType string
146
-
147
- ingressController struct {
148
- Name string
149
- Type ingressControllerType
150
- }
151
143
)
152
144
153
145
const (
154
146
Success summaryLogLevels = "Success"
155
147
Failed summaryLogLevels = "Failed"
156
148
Info summaryLogLevels = "Info"
157
-
158
- IngressControllerNginxCommunity ingressControllerType = "k8s.io/ingress-nginx"
159
- IngressControllerNginxEnterprise ingressControllerType = "nginx.org/ingress-controller"
160
- IngressControllerIstio ingressControllerType = "istio.io/ingress-controller"
161
- IngressControllerTraefik ingressControllerType = "traefik.io/ingress-controller"
162
- IngressControllerAmbassador ingressControllerType = "getambassador.io/ingress-controller"
163
149
)
164
150
165
151
var summaryArr []summaryLog
@@ -475,6 +461,7 @@ func ensureIngressHost(cmd *cobra.Command, opts *RuntimeInstallOptions) error {
475
461
476
462
func ensureIngressClass (ctx context.Context , opts * RuntimeInstallOptions ) error {
477
463
if store .Get ().BypassIngressClassCheck || store .Get ().SkipIngress {
464
+ opts .IngressController = ingressutil .GetController ("" )
478
465
return nil
479
466
}
480
467
@@ -486,19 +473,15 @@ func ensureIngressClass(ctx context.Context, opts *RuntimeInstallOptions) error
486
473
return fmt .Errorf ("failed to get ingress class list from your cluster: %w" , err )
487
474
}
488
475
489
- supportedControllers := []ingressControllerType {IngressControllerNginxCommunity , IngressControllerNginxEnterprise , IngressControllerIstio , IngressControllerTraefik , IngressControllerAmbassador }
490
476
var ingressClassNames []string
491
- ingressClassNameToController := make (map [string ]ingressController )
477
+ ingressClassNameToController := make (map [string ]ingressutil. IngressController )
492
478
var isValidClass bool
493
479
494
480
for _ , ic := range ingressClassList .Items {
495
- for _ , controller := range supportedControllers {
481
+ for _ , controller := range ingressutil . SupportedControllers {
496
482
if ic .Spec .Controller == string (controller ) {
497
483
ingressClassNames = append (ingressClassNames , ic .Name )
498
- ingressClassNameToController [ic .Name ] = ingressController {
499
- Name : getIngressControllerName (controller , ic .Name ),
500
- Type : controller ,
501
- }
484
+ ingressClassNameToController [ic .Name ] = ingressutil .GetController (string (controller ))
502
485
503
486
if opts .IngressClass == ic .Name { //if ingress class provided via flag
504
487
isValidClass = true
@@ -528,31 +511,15 @@ func ensureIngressClass(ctx context.Context, opts *RuntimeInstallOptions) error
528
511
}
529
512
}
530
513
531
- opts .IngressController = ingressClassNameToController [opts .IngressClass ].Name
532
- opts .IngressControllerType = ingressClassNameToController [opts .IngressClass ].Type
514
+ opts .IngressController = ingressClassNameToController [opts .IngressClass ]
533
515
534
- if opts .IngressControllerType == IngressControllerNginxEnterprise {
516
+ if opts .IngressController . Name () == string ( ingressutil . IngressControllerNginxEnterprise ) {
535
517
log .G (ctx ).Warn ("You are using the NGINX enterprise edition (nginx.org/ingress-controller) as your ingress controller. To successfully install the runtime, configure all required settings, as described in : " , store .Get ().RequirementsLink )
536
518
}
537
519
538
520
return nil
539
521
}
540
522
541
- func getIngressControllerName (controllerType ingressControllerType , className string ) string {
542
- switch controllerType {
543
- case IngressControllerNginxCommunity :
544
- return "ingress-nginx-controller"
545
- case IngressControllerNginxEnterprise :
546
- return fmt .Sprintf ("%s-ingress-controller" , className )
547
- case IngressControllerTraefik :
548
- return "traefik"
549
- case IngressControllerIstio :
550
- return "istio-ingressgateway"
551
- default :
552
- return ""
553
- }
554
- }
555
-
556
523
func getComponents (rt * runtime.Runtime , opts * RuntimeInstallOptions ) []string {
557
524
var componentNames []string
558
525
for _ , component := range rt .Spec .Components {
@@ -613,14 +580,17 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
613
580
postInstallationHandler (ctx , opts , err , & disableRollback )
614
581
}()
615
582
583
+ ingressControllerName := opts .IngressController .Name ()
584
+
616
585
token , iv , err := createRuntimeOnPlatform (ctx , & model.RuntimeInstallationArgs {
617
- RuntimeName : opts .RuntimeName ,
618
- Cluster : server ,
619
- RuntimeVersion : runtimeVersion ,
620
- IngressHost : & opts .IngressHost ,
621
- ComponentNames : componentNames ,
622
- Repo : & opts .InsCloneOpts .Repo ,
623
- IngressClass : & opts .IngressClass ,
586
+ RuntimeName : opts .RuntimeName ,
587
+ Cluster : server ,
588
+ RuntimeVersion : runtimeVersion ,
589
+ IngressHost : & opts .IngressHost ,
590
+ IngressClass : & opts .IngressClass ,
591
+ IngressController : & ingressControllerName ,
592
+ ComponentNames : componentNames ,
593
+ Repo : & opts .InsCloneOpts .Repo ,
624
594
})
625
595
handleCliStep (reporter .InstallStepCreateRuntimeOnPlatform , "Creating runtime on platform" , err , false , true )
626
596
if err != nil {
@@ -632,6 +602,7 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
632
602
rt .Spec .Cluster = server
633
603
rt .Spec .IngressHost = opts .IngressHost
634
604
rt .Spec .IngressClass = opts .IngressClass
605
+ rt .Spec .IngressController = string (opts .IngressController .Name ())
635
606
rt .Spec .Repo = opts .InsCloneOpts .Repo
636
607
637
608
log .G (ctx ).WithField ("version" , rt .Spec .Version ).Infof ("Installing runtime \" %s\" " , opts .RuntimeName )
@@ -772,7 +743,7 @@ func createRuntimeComponents(ctx context.Context, opts *RuntimeInstallOptions, r
772
743
return err
773
744
}
774
745
775
- if opts .IngressControllerType == IngressControllerNginxEnterprise {
746
+ if opts .IngressController . Name () == string ( ingressutil . IngressControllerNginxEnterprise ) {
776
747
err := createMasterIngressResource (ctx , opts )
777
748
if err != nil {
778
749
return fmt .Errorf ("failed to create master ingress resource: %w" , err )
@@ -820,15 +791,15 @@ func createMasterIngressResource(ctx context.Context, opts *RuntimeInstallOption
820
791
func createGitSources (ctx context.Context , opts * RuntimeInstallOptions ) error {
821
792
gitSrcMessage := fmt .Sprintf ("Creating git source \" %s\" " , store .Get ().GitSourceName )
822
793
err := RunGitSourceCreate (ctx , & GitSourceCreateOptions {
823
- InsCloneOpts : opts .InsCloneOpts ,
824
- GsCloneOpts : opts .GsCloneOpts ,
825
- GsName : store .Get ().GitSourceName ,
826
- RuntimeName : opts .RuntimeName ,
827
- CreateDemoResources : opts .InstallDemoResources ,
828
- HostName : opts .HostName ,
829
- IngressHost : opts .IngressHost ,
830
- IngressClass : opts .IngressClass ,
831
- IngressControllerType : opts .IngressControllerType ,
794
+ InsCloneOpts : opts .InsCloneOpts ,
795
+ GsCloneOpts : opts .GsCloneOpts ,
796
+ GsName : store .Get ().GitSourceName ,
797
+ RuntimeName : opts .RuntimeName ,
798
+ CreateDemoResources : opts .InstallDemoResources ,
799
+ HostName : opts .HostName ,
800
+ IngressHost : opts .IngressHost ,
801
+ IngressClass : opts .IngressClass ,
802
+ IngressController : opts .IngressController ,
832
803
})
833
804
handleCliStep (reporter .InstallStepCreateGitsource , gitSrcMessage , err , false , true )
834
805
if err != nil {
@@ -950,7 +921,7 @@ you can try to create it manually by running:
950
921
func installComponents (ctx context.Context , opts * RuntimeInstallOptions , rt * runtime.Runtime ) error {
951
922
var err error
952
923
953
- if ! store .Get ().SkipIngress {
924
+ if ! store .Get ().SkipIngress && rt . Spec . IngressController != string ( ingressutil . IngressControllerALB ) {
954
925
if err = createWorkflowsIngress (ctx , opts , rt ); err != nil {
955
926
return fmt .Errorf ("failed to patch Argo-Workflows ingress: %w" , err )
956
927
}
@@ -1802,11 +1773,8 @@ func createWorkflowsIngress(ctx context.Context, opts *RuntimeInstallOptions, rt
1802
1773
},
1803
1774
}
1804
1775
1805
- if opts .IngressControllerType == IngressControllerNginxEnterprise {
1806
- ingressOptions .Annotations ["nginx.org/mergeable-ingress-type" ] = "minion"
1807
- }
1808
-
1809
1776
ingress := ingressutil .CreateIngress (& ingressOptions )
1777
+ opts .IngressController .Decorate (ingress )
1810
1778
1811
1779
if err = fs .WriteYamls (fs .Join (overlaysDir , "ingress.yaml" ), ingress ); err != nil {
1812
1780
return err
@@ -1891,13 +1859,8 @@ func configureAppProxy(ctx context.Context, opts *RuntimeInstallOptions, rt *run
1891
1859
},
1892
1860
}
1893
1861
1894
- if opts .IngressControllerType == IngressControllerNginxEnterprise {
1895
- ingressOptions .Annotations = map [string ]string {
1896
- "nginx.org/mergeable-ingress-type" : "minion" ,
1897
- }
1898
- }
1899
-
1900
1862
ingress := ingressutil .CreateIngress (& ingressOptions )
1863
+ opts .IngressController .Decorate (ingress )
1901
1864
1902
1865
if err = fs .WriteYamls (fs .Join (overlaysDir , "ingress.yaml" ), ingress ); err != nil {
1903
1866
return err
0 commit comments