@@ -34,6 +34,7 @@ import (
34
34
"github.com/replicatedhq/embedded-cluster/pkg/extensions"
35
35
"github.com/replicatedhq/embedded-cluster/pkg/helm"
36
36
"github.com/replicatedhq/embedded-cluster/pkg/helpers"
37
+ "github.com/replicatedhq/embedded-cluster/pkg/kubernetesinstallation"
37
38
"github.com/replicatedhq/embedded-cluster/pkg/kubeutils"
38
39
"github.com/replicatedhq/embedded-cluster/pkg/metrics"
39
40
"github.com/replicatedhq/embedded-cluster/pkg/netutils"
@@ -102,7 +103,9 @@ func InstallCmd(ctx context.Context, name string) *cobra.Command {
102
103
var flags InstallCmdFlags
103
104
104
105
ctx , cancel := context .WithCancel (ctx )
106
+
105
107
rc := runtimeconfig .New (nil )
108
+ ki := kubernetesinstallation .New (nil )
106
109
107
110
short := fmt .Sprintf ("Install %s" , name )
108
111
if os .Getenv ("ENABLE_V3" ) == "1" {
@@ -121,7 +124,7 @@ func InstallCmd(ctx context.Context, name string) *cobra.Command {
121
124
if err := verifyAndPrompt (ctx , name , flags , prompts .New ()); err != nil {
122
125
return err
123
126
}
124
- if err := preRunInstall (cmd , & flags , rc ); err != nil {
127
+ if err := preRunInstall (cmd , & flags , rc , ki ); err != nil {
125
128
return err
126
129
}
127
130
@@ -133,7 +136,7 @@ func InstallCmd(ctx context.Context, name string) *cobra.Command {
133
136
installReporter .ReportInstallationStarted (ctx )
134
137
135
138
if flags .enableManagerExperience {
136
- return runManagerExperienceInstall (ctx , flags , rc , installReporter )
139
+ return runManagerExperienceInstall (ctx , flags , rc , ki , installReporter )
137
140
}
138
141
139
142
_ = rc .SetEnv ()
@@ -366,26 +369,26 @@ func addManagerExperienceFlags(cmd *cobra.Command, flags *InstallCmdFlags) error
366
369
return nil
367
370
}
368
371
369
- func preRunInstall (cmd * cobra.Command , flags * InstallCmdFlags , rc runtimeconfig.RuntimeConfig ) error {
372
+ func preRunInstall (cmd * cobra.Command , flags * InstallCmdFlags , rc runtimeconfig.RuntimeConfig , ki kubernetesinstallation. Installation ) error {
370
373
if ! slices .Contains ([]string {"linux" , "kubernetes" }, flags .target ) {
371
374
return fmt .Errorf (`invalid target (must be one of: "linux", "kubernetes")` )
372
375
}
373
376
374
- if err := preRunInstallCommon (cmd , flags , rc ); err != nil {
377
+ if err := preRunInstallCommon (cmd , flags , rc , ki ); err != nil {
375
378
return err
376
379
}
377
380
378
381
switch flags .target {
379
382
case "linux" :
380
383
return preRunInstallLinux (cmd , flags , rc )
381
384
case "kubernetes" :
382
- return preRunInstallKubernetes (cmd , flags )
385
+ return preRunInstallKubernetes (cmd , flags , ki )
383
386
}
384
387
385
388
return nil
386
389
}
387
390
388
- func preRunInstallCommon (cmd * cobra.Command , flags * InstallCmdFlags , rc runtimeconfig.RuntimeConfig ) error {
391
+ func preRunInstallCommon (cmd * cobra.Command , flags * InstallCmdFlags , rc runtimeconfig.RuntimeConfig , ki kubernetesinstallation. Installation ) error {
389
392
// license file can be empty for restore
390
393
if flags .licenseFile != "" {
391
394
b , err := os .ReadFile (flags .licenseFile )
@@ -415,6 +418,12 @@ func preRunInstallCommon(cmd *cobra.Command, flags *InstallCmdFlags, rc runtimec
415
418
416
419
flags .isAirgap = flags .airgapBundle != ""
417
420
421
+ if flags .managerPort != 0 && flags .adminConsolePort != 0 {
422
+ if flags .managerPort == flags .adminConsolePort {
423
+ return fmt .Errorf ("manager port cannot be the same as admin console port" )
424
+ }
425
+ }
426
+
418
427
proxy , err := proxyConfigFromCmd (cmd , flags .assumeYes )
419
428
if err != nil {
420
429
return err
@@ -427,8 +436,14 @@ func preRunInstallCommon(cmd *cobra.Command, flags *InstallCmdFlags, rc runtimec
427
436
}
428
437
}
429
438
430
- // TODO: runtimeconfig is only relevant for linux installs
439
+ rc .SetAdminConsolePort (flags .adminConsolePort )
440
+ ki .SetAdminConsolePort (flags .adminConsolePort )
441
+
442
+ rc .SetManagerPort (flags .managerPort )
443
+ ki .SetManagerPort (flags .managerPort )
444
+
431
445
rc .SetProxySpec (proxy )
446
+ ki .SetProxySpec (proxy )
432
447
433
448
return nil
434
449
}
@@ -485,14 +500,13 @@ func preRunInstallLinux(cmd *cobra.Command, flags *InstallCmdFlags, rc runtimeco
485
500
// TODO: validate that a single port isn't used for multiple services
486
501
rc .SetDataDir (flags .dataDir )
487
502
rc .SetLocalArtifactMirrorPort (flags .localArtifactMirrorPort )
488
- rc .SetAdminConsolePort (flags .adminConsolePort )
489
503
rc .SetHostCABundlePath (hostCABundlePath )
490
504
rc .SetNetworkSpec (networkSpec )
491
505
492
506
return nil
493
507
}
494
508
495
- func preRunInstallKubernetes (_ * cobra.Command , flags * InstallCmdFlags ) error {
509
+ func preRunInstallKubernetes (_ * cobra.Command , flags * InstallCmdFlags , _ kubernetesinstallation. Installation ) error {
496
510
// If set, validate that the kubeconfig file exists and can be read
497
511
if flags .kubernetesEnvSettings .KubeConfig != "" {
498
512
if _ , err := os .Stat (flags .kubernetesEnvSettings .KubeConfig ); os .IsNotExist (err ) {
@@ -545,7 +559,7 @@ func cidrConfigFromCmd(cmd *cobra.Command) (*newconfig.CIDRConfig, error) {
545
559
return cidrCfg , nil
546
560
}
547
561
548
- func runManagerExperienceInstall (ctx context.Context , flags InstallCmdFlags , rc runtimeconfig.RuntimeConfig , installReporter * InstallReporter ) (finalErr error ) {
562
+ func runManagerExperienceInstall (ctx context.Context , flags InstallCmdFlags , rc runtimeconfig.RuntimeConfig , ki kubernetesinstallation. Installation , installReporter * InstallReporter ) (finalErr error ) {
549
563
// this is necessary because the api listens on all interfaces,
550
564
// and we only know the interface to use when the user selects it in the ui
551
565
ipAddresses , err := netutils .ListAllValidIPAddresses ()
@@ -602,30 +616,44 @@ func runManagerExperienceInstall(ctx context.Context, flags InstallCmdFlags, rc
602
616
}
603
617
604
618
apiConfig := apiOptions {
619
+ APIConfig : apitypes.APIConfig {
620
+ Password : flags .adminConsolePassword ,
621
+ TLSConfig : apitypes.TLSConfig {
622
+ CertBytes : flags .tlsCertBytes ,
623
+ KeyBytes : flags .tlsKeyBytes ,
624
+ Hostname : flags .hostname ,
625
+ },
626
+ License : flags .licenseBytes ,
627
+ AirgapBundle : flags .airgapBundle ,
628
+ ConfigValues : flags .configValues ,
629
+ ReleaseData : release .GetReleaseData (),
630
+ EndUserConfig : eucfg ,
631
+
632
+ LinuxConfig : apitypes.LinuxConfig {
633
+ RuntimeConfig : rc ,
634
+ AllowIgnoreHostPreflights : flags .ignoreHostPreflights ,
635
+ },
636
+ KubernetesConfig : apitypes.KubernetesConfig {
637
+ RESTConfig : flags .installConfig .kubernetesRestConfig ,
638
+ Installation : ki ,
639
+ },
640
+ },
641
+
642
+ ManagerPort : flags .managerPort ,
605
643
InstallTarget : flags .target ,
606
- RuntimeConfig : rc ,
607
644
MetricsReporter : installReporter .reporter ,
608
- Password : flags .adminConsolePassword ,
609
- TLSConfig : apitypes.TLSConfig {
610
- CertBytes : flags .tlsCertBytes ,
611
- KeyBytes : flags .tlsKeyBytes ,
612
- Hostname : flags .hostname ,
613
- },
614
- ManagerPort : flags .managerPort ,
615
- License : flags .licenseBytes ,
616
- AirgapBundle : flags .airgapBundle ,
617
- ConfigValues : flags .configValues ,
618
- ReleaseData : release .GetReleaseData (),
619
- EndUserConfig : eucfg ,
620
- AllowIgnoreHostPreflights : flags .ignoreHostPreflights ,
621
645
}
622
646
623
- if err := startAPI (ctx , flags .tlsCert , apiConfig ); err != nil {
647
+ ctx , cancel := context .WithCancel (ctx )
648
+ defer cancel ()
649
+
650
+ if err := startAPI (ctx , flags .tlsCert , apiConfig , cancel ); err != nil {
624
651
return fmt .Errorf ("unable to start api: %w" , err )
625
652
}
626
653
627
- // TODO: add app name to this message (e.g., App Name manager)
628
- logrus .Infof ("\n Visit the manager to continue: %s\n " , getManagerURL (flags .hostname , flags .managerPort ))
654
+ logrus .Infof ("\n Visit the %s manager to continue: %s\n " ,
655
+ runtimeconfig .BinaryName (),
656
+ getManagerURL (flags .hostname , flags .managerPort ))
629
657
<- ctx .Done ()
630
658
631
659
return nil
0 commit comments