mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-27 02:42:48 +00:00
68 lines
2.2 KiB
Go
Executable File
68 lines
2.2 KiB
Go
Executable File
package binary
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
kubekeyapiv1alpha2 "github.com/kubesphere/kubekey/cmd/kk/apis/kubekey/v1alpha2"
|
|
"github.com/kubesphere/kubekey/cmd/kk/pkg/common"
|
|
"github.com/kubesphere/kubekey/cmd/kk/pkg/core/cache"
|
|
"github.com/kubesphere/kubekey/cmd/kk/pkg/core/connector"
|
|
"github.com/kubesphere/kubekey/cmd/kk/pkg/files"
|
|
)
|
|
|
|
type GetBinaryPath struct {
|
|
common.KubeAction
|
|
Binaries []string
|
|
}
|
|
|
|
func (g *GetBinaryPath) Execute(runtime connector.Runtime) error {
|
|
cfg := g.KubeConf.Cluster
|
|
|
|
archMap := make(map[string]bool)
|
|
for _, host := range cfg.Hosts {
|
|
switch host.Arch {
|
|
case "amd64":
|
|
archMap["amd64"] = true
|
|
case "arm64":
|
|
archMap["arm64"] = true
|
|
default:
|
|
return errors.New(fmt.Sprintf("Unsupported architecture: %s", host.Arch))
|
|
}
|
|
}
|
|
|
|
for arch := range archMap {
|
|
if err := setBinaryPath(g.KubeConf, runtime.GetWorkDir(), arch, g.Binaries, g.PipelineCache); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func setBinaryPath(kubeConf *common.KubeConf, path, arch string, binaries []string, pipelineCache *cache.Cache) error {
|
|
binariesMap := make(map[string]*files.KubeBinary)
|
|
var kubeBinary *files.KubeBinary
|
|
for _, binary := range binaries {
|
|
switch binary {
|
|
case "etcd":
|
|
kubeBinary = files.NewKubeBinary(binary, arch, kubekeyapiv1alpha2.DefaultEtcdVersion, path, kubeConf.Arg.DownloadCommand)
|
|
case "docker":
|
|
kubeBinary = files.NewKubeBinary(binary, arch, kubekeyapiv1alpha2.DefaultDockerVersion, path, kubeConf.Arg.DownloadCommand)
|
|
case "containerd":
|
|
kubeBinary = files.NewKubeBinary(binary, arch, kubekeyapiv1alpha2.DefaultContainerdVersion, path, kubeConf.Arg.DownloadCommand)
|
|
case "helm":
|
|
kubeBinary = files.NewKubeBinary(binary, arch, kubekeyapiv1alpha2.DefaultHelmVersion, path, kubeConf.Arg.DownloadCommand)
|
|
case "crictl":
|
|
kubeBinary = files.NewKubeBinary("crictl", arch, kubekeyapiv1alpha2.DefaultCrictlVersion, path, kubeConf.Arg.DownloadCommand)
|
|
case "runc":
|
|
kubeBinary = files.NewKubeBinary("runc", arch, kubekeyapiv1alpha2.DefaultRuncVersion, path, kubeConf.Arg.DownloadCommand)
|
|
default:
|
|
return errors.New(fmt.Sprintf("Unsupported binary name: %s", binary))
|
|
}
|
|
binariesMap[kubeBinary.ID] = kubeBinary
|
|
}
|
|
pipelineCache.Set(common.KubeBinaries+"-"+arch, binariesMap)
|
|
return nil
|
|
}
|