Skip to content

Commit a49fc87

Browse files
authored
fix(argocd): Fix oms install deps command and argocd deploy to use environment kubeconfig (#508)
With the integration into the dedicated commands, the argo install got broken due to missing kubeconfigs. When the `oms install codesphere deps` command is run on its own it requires the installer package to be already extracted. This change now extracts it when argo is deployed.
1 parent 3ac527f commit a49fc87

4 files changed

Lines changed: 43 additions & 21 deletions

File tree

cli/cmd/install_codesphere_dependencies.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,14 @@ func installCodesphereDepencies(opts *InstallCodesphereOpts, env env.Env) error
4040
pm := installer.NewPackage(workdir, opts.Package)
4141
stlog := bootstrap.NewStepLogger(false)
4242
cm := installer.NewConfig()
43+
im := system.NewImage(context.Background())
4344

4445
cfg, cleanup, err := parseInstallConfig(opts, cm)
4546
if err != nil {
4647
return fmt.Errorf("failed to extract config.yaml: %w", err)
4748
}
4849
defer cleanup()
4950

50-
if !installer.IsStepSkipped(cfg, opts.SkipSteps, installer.ArgoCDStep) {
51-
if err := stlog.Step("Install ArgoCD pre-step", func() error {
52-
return installArgoCDAndApps(opts, pm, stlog)
53-
}); err != nil {
54-
return err
55-
}
56-
}
57-
im := system.NewImage(context.Background())
58-
5951
ci := &installer.CodesphereInstaller{
6052
ConfigPath: opts.Config,
6153
VaultPath: opts.Vault,
@@ -66,6 +58,18 @@ func installCodesphereDepencies(opts *InstallCodesphereOpts, env env.Env) error
6658
DirectConnection: opts.DirectConnection,
6759
AutoApprove: opts.AutoApprove,
6860
}
61+
62+
if !installer.IsStepSkipped(cfg, opts.SkipSteps, installer.ArgoCDStep) {
63+
if err := ci.ExtractAndValidatePackage(pm); err != nil {
64+
return fmt.Errorf("failed to extract and validate package: %w", err)
65+
}
66+
if err := stlog.Step("Install ArgoCD pre-step", func() error {
67+
return installArgoCDAndApps(opts, pm, stlog)
68+
}); err != nil {
69+
return err
70+
}
71+
}
72+
6973
if err := ci.Install(pm, cm, im, runtime.GOOS, runtime.GOARCH); err != nil {
7074
return fmt.Errorf("failed to install dependencies: %w", err)
7175
}

internal/installer/argocd/argocd_resources.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
k8s "github.com/codesphere-cloud/oms/internal/util"
1414
"k8s.io/client-go/dynamic"
1515
"k8s.io/client-go/kubernetes"
16-
"k8s.io/client-go/rest"
1716
)
1817

1918
//mockery:generate: true
@@ -31,12 +30,7 @@ type argoCDResources struct {
3130
GitPassword string
3231
}
3332

34-
func NewArgoCDResourcesWithRESTConfig(dataCenterId string, ociPassword string, ociRegistryURL string, gitPassword string, restConfig *rest.Config) (ArgoCDResources, error) {
35-
clientset, dynClient, err := k8s.NewClientsFromRESTConfig(restConfig)
36-
if err != nil {
37-
return nil, fmt.Errorf("creating kubernetes clients: %w", err)
38-
}
39-
33+
func NewArgoCDResources(clientset kubernetes.Interface, dynClient dynamic.Interface, dataCenterId string, ociPassword string, ociRegistryURL string, gitPassword string) (ArgoCDResources, error) {
4034
return &argoCDResources{
4135
clientset: clientset,
4236
dynClient: dynClient,

internal/installer/argocd/installer.go

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"github.com/Masterminds/semver/v3"
1313
"github.com/codesphere-cloud/oms/internal/installer"
14+
k8s "github.com/codesphere-cloud/oms/internal/util"
1415
"helm.sh/helm/v4/pkg/chart/common/util"
1516
"helm.sh/helm/v4/pkg/cli/values"
1617
"helm.sh/helm/v4/pkg/getter"
@@ -45,12 +46,35 @@ type Installer struct {
4546
}
4647

4748
func NewInstaller(cfg InstallerConfig) (*Installer, error) {
48-
helm, err := installer.NewHelmClientWithRESTConfig("argocd", cfg.RESTConfig)
49+
if cfg.RESTConfig != nil {
50+
helm, err := installer.NewHelmClientWithRESTConfig(DefaultNamespace, cfg.RESTConfig)
51+
if err != nil {
52+
return nil, fmt.Errorf("init helm client failed: %w", err)
53+
}
54+
55+
clientset, dynClient, err := k8s.NewClientsFromRESTConfig(cfg.RESTConfig)
56+
if err != nil {
57+
return nil, fmt.Errorf("creating kubernetes clients: %w", err)
58+
}
59+
resources, err := NewArgoCDResources(clientset, dynClient, cfg.DatacenterId, cfg.OciPassword, cfg.OciRegistryURL, cfg.GitPassword)
60+
if err != nil {
61+
return nil, fmt.Errorf("init argocd resources client failed: %w", err)
62+
}
63+
return &Installer{
64+
InstallerConfig: cfg,
65+
Helm: helm,
66+
Resources: resources,
67+
}, nil
68+
}
69+
helm, err := installer.NewHelmClient(DefaultNamespace)
4970
if err != nil {
5071
return nil, fmt.Errorf("init helm client failed: %w", err)
5172
}
52-
53-
resources, err := NewArgoCDResourcesWithRESTConfig(cfg.DatacenterId, cfg.OciPassword, cfg.OciRegistryURL, cfg.GitPassword, cfg.RESTConfig)
73+
clientset, dynClient, err := k8s.NewClients()
74+
if err != nil {
75+
return nil, fmt.Errorf("creating kubernetes clients: %w", err)
76+
}
77+
resources, err := NewArgoCDResources(clientset, dynClient, cfg.DatacenterId, cfg.OciPassword, cfg.OciRegistryURL, cfg.GitPassword)
5478
if err != nil {
5579
return nil, fmt.Errorf("init argocd resources client failed: %w", err)
5680
}

internal/installer/codesphere.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func (ci *CodesphereInstaller) Install(pm PackageManager, cm ConfigManager, im s
9898
return err
9999
}
100100

101-
if err := ci.extractAndValidatePackage(pm); err != nil {
101+
if err := ci.ExtractAndValidatePackage(pm); err != nil {
102102
return err
103103
}
104104

@@ -191,7 +191,7 @@ func (ci *CodesphereInstaller) warnIfVaultDirDiffersFromSecretsDir(config files.
191191
}
192192
}
193193

194-
func (ci *CodesphereInstaller) extractAndValidatePackage(pm PackageManager) error {
194+
func (ci *CodesphereInstaller) ExtractAndValidatePackage(pm PackageManager) error {
195195
if err := pm.Extract(ci.Force); err != nil {
196196
return fmt.Errorf("failed to extract package to workdir: %w", err)
197197
}

0 commit comments

Comments
 (0)