mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-26 01:22:51 +00:00
96 lines
3.7 KiB
Go
96 lines
3.7 KiB
Go
package preinstall
|
|
|
|
import (
|
|
"fmt"
|
|
kubekeyapi "github.com/pixiake/kubekey/pkg/apis/kubekey/v1alpha1"
|
|
"github.com/pixiake/kubekey/pkg/util"
|
|
"github.com/pkg/errors"
|
|
log "github.com/sirupsen/logrus"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
)
|
|
|
|
func FilesDownloadHttp(cfg *kubekeyapi.K2ClusterSpec, filepath string, logger *log.Logger) error {
|
|
kubeVersion := cfg.KubeVersion
|
|
|
|
kubeadmUrl := fmt.Sprintf("https://kubernetes-release.pek3b.qingstor.com/release/%s/bin/linux/%s/kubeadm", kubeVersion, kubekeyapi.DefaultArch)
|
|
kubeletUrl := fmt.Sprintf("https://kubernetes-release.pek3b.qingstor.com/release/%s/bin/linux/%s/kubelet", kubeVersion, kubekeyapi.DefaultArch)
|
|
kubectlUrl := fmt.Sprintf("https://kubernetes-release.pek3b.qingstor.com/release/%s/bin/linux/%s/kubectl", kubeVersion, kubekeyapi.DefaultArch)
|
|
kubeCniUrl := fmt.Sprintf("https://containernetworking.pek3b.qingstor.com/plugins/releases/download/%s/cni-plugins-linux-%s-%s.tgz", kubekeyapi.DefaultCniVersion, kubekeyapi.DefaultArch, kubekeyapi.DefaultCniVersion)
|
|
HelmUrl := fmt.Sprintf("https://kubernetes-helm.pek3b.qingstor.com/linux-amd64/%s/helm", kubekeyapi.DefaultHelmVersion)
|
|
|
|
kubeadm := fmt.Sprintf("%s/kubeadm-%s", filepath, kubeVersion)
|
|
kubelet := fmt.Sprintf("%s/kubelet-%s", filepath, kubeVersion)
|
|
kubectl := fmt.Sprintf("%s/kubectl-%s", filepath, kubeVersion)
|
|
kubeCni := fmt.Sprintf("%s/cni-plugins-linux-%s-%s.tgz", filepath, kubekeyapi.DefaultArch, kubekeyapi.DefaultCniVersion)
|
|
helm := fmt.Sprintf("%s/helm-%s", filepath, kubekeyapi.DefaultHelmVersion)
|
|
|
|
getKubeadmCmd := fmt.Sprintf("curl -o %s %s", kubeadm, kubeadmUrl)
|
|
getKubeletCmd := fmt.Sprintf("curl -o %s %s", kubelet, kubeletUrl)
|
|
getKubectlCmd := fmt.Sprintf("curl -o %s %s", kubectl, kubectlUrl)
|
|
getKubeCniCmd := fmt.Sprintf("curl -o %s %s", kubeCni, kubeCniUrl)
|
|
getHelmCmd := fmt.Sprintf("curl -o %s %s", helm, HelmUrl)
|
|
|
|
logger.Info("Kubeadm being download ...")
|
|
if util.IsExist(kubeadm) == false {
|
|
if out, err := exec.Command("/bin/sh", "-c", getKubeadmCmd).CombinedOutput(); err != nil {
|
|
fmt.Println(string(out))
|
|
return errors.Wrap(err, "faild download kubeadm binary")
|
|
}
|
|
}
|
|
|
|
logger.Info("Kubelet being download ...")
|
|
if util.IsExist(kubelet) == false {
|
|
if out, err := exec.Command("/bin/sh", "-c", getKubeletCmd).CombinedOutput(); err != nil {
|
|
fmt.Println(string(out))
|
|
return errors.Wrap(err, "faild download kubelet binary")
|
|
}
|
|
}
|
|
|
|
logger.Info("Kubectl being download ...")
|
|
if util.IsExist(kubectl) == false {
|
|
if out, err := exec.Command("/bin/sh", "-c", getKubectlCmd).CombinedOutput(); err != nil {
|
|
fmt.Println(string(out))
|
|
return errors.Wrap(err, "faild download kubectl binary")
|
|
}
|
|
}
|
|
|
|
logger.Info("KubeCni being download ...")
|
|
if util.IsExist(kubeCni) == false {
|
|
if out, err := exec.Command("/bin/sh", "-c", getKubeCniCmd).CombinedOutput(); err != nil {
|
|
fmt.Println(string(out))
|
|
return errors.Wrap(err, "faild download kubecni")
|
|
}
|
|
}
|
|
|
|
logger.Info("Helm being download ...")
|
|
if util.IsExist(helm) == false {
|
|
if out, err := exec.Command("/bin/sh", "-c", getHelmCmd).CombinedOutput(); err != nil {
|
|
fmt.Println(string(out))
|
|
return errors.Wrap(err, "faild download helm binary")
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func Prepare(cfg *kubekeyapi.K2ClusterSpec, logger *log.Logger) error {
|
|
logger.Info("Install Files Download")
|
|
|
|
currentDir, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
|
if err != nil {
|
|
return errors.Wrap(err, "faild get current dir")
|
|
}
|
|
|
|
filepath := fmt.Sprintf("%s/%s", currentDir, kubekeyapi.DefaultPreDir)
|
|
if err := util.CreateDir(filepath); err != nil {
|
|
return errors.Wrap(err, "faild create download target dir")
|
|
}
|
|
|
|
if err := FilesDownloadHttp(cfg, filepath, logger); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|