From 5ae1c8c7bbf8f5d8f002108d5a2e688d2c8ce3ab Mon Sep 17 00:00:00 2001 From: liyang Date: Sat, 30 Sep 2023 19:13:40 +0800 Subject: [PATCH] fix: etcd install fail (#156) * fix: etcd install fail * refactor: change kubeversion name * style: sort package * refactor: add default kube version v1.20.0 --- pkg/helm/helm.go | 12 ++++++++++++ pkg/kube/client.go | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/pkg/helm/helm.go b/pkg/helm/helm.go index ad6734e2..7d557a2d 100644 --- a/pkg/helm/helm.go +++ b/pkg/helm/helm.go @@ -31,6 +31,7 @@ import ( "helm.sh/helm/v3/pkg/action" "helm.sh/helm/v3/pkg/chart" "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v3/pkg/chartutil" "helm.sh/helm/v3/pkg/cli" "helm.sh/helm/v3/pkg/registry" . "helm.sh/helm/v3/pkg/repo" @@ -45,6 +46,11 @@ const ( helmFieldTag = "helm" ) +var ( + // KubeVersion is the target version of the kubernetes. + KubeVersion string = "v1.20.0" +) + // Manager is the Helm charts manager. The implementation is based on Helm SDK. // The main purpose of Manager is: // 1. Load the chart from remote charts and save them in cache directory. @@ -318,6 +324,11 @@ func (r *Manager) isInChartsCache(packageName string) bool { } func (r *Manager) newHelmClient(releaseName, namespace string) (*action.Install, error) { + kubeVersion, err := chartutil.ParseKubeVersion(KubeVersion) + if err != nil { + return nil, fmt.Errorf("invalid kube version '%s': %s", kubeVersion, err) + } + helmClient := action.NewInstall(new(action.Configuration)) helmClient.DryRun = true helmClient.ReleaseName = releaseName @@ -325,6 +336,7 @@ func (r *Manager) newHelmClient(releaseName, namespace string) (*action.Install, helmClient.ClientOnly = true helmClient.IncludeCRDs = true helmClient.Namespace = namespace + helmClient.KubeVersion = kubeVersion return helmClient, nil } diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 8678c818..fe9e7339 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -42,6 +42,8 @@ import ( "k8s.io/client-go/util/homedir" greptimev1alpha1 "github.com/GreptimeTeam/greptimedb-operator/apis/v1alpha1" + + "github.com/GreptimeTeam/gtctl/pkg/helm" ) type Client struct { @@ -103,6 +105,12 @@ func NewClient(kubeconfig string) (*Client, error) { } }) + kubeVersion, err := kubeClient.ServerVersion() + if err != nil { + return nil, fmt.Errorf("failed to get kubernetes server version: %v\n", err) + } + helm.KubeVersion = kubeVersion.String() + return &Client{ kubeClient: kubeClient, dynamicKubeClient: dynamicKubeClient,