mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-26 01:22:51 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
e5c6b07411
|
|
@ -9,7 +9,6 @@ import (
|
|||
func NewCmdCreateCluster() *cobra.Command {
|
||||
var (
|
||||
clusterCfgFile string
|
||||
//addons string
|
||||
//pkgDir string
|
||||
verbose bool
|
||||
all bool
|
||||
|
|
|
|||
|
|
@ -8,41 +8,64 @@ import (
|
|||
log "github.com/sirupsen/logrus"
|
||||
"gopkg.in/yaml.v2"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func ParseClusterCfg(clusterCfgPath string, all bool, logger *log.Logger) (*kubekeyapi.Cluster, error) {
|
||||
clusterCfg := kubekeyapi.Cluster{}
|
||||
|
||||
if len(clusterCfgPath) == 0 {
|
||||
user, _ := user.Current()
|
||||
if user.Name != "root" {
|
||||
return nil, errors.New(fmt.Sprintf("Current user is %s. Please use root!", user.Name))
|
||||
}
|
||||
clusterCfg = AllinoneCfg(user, all)
|
||||
} else {
|
||||
fp, err := filepath.Abs(clusterCfgPath)
|
||||
currentDir, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Failed to look up current directory")
|
||||
}
|
||||
content, err := ioutil.ReadFile(fp)
|
||||
cfgFile := fmt.Sprintf("%s/config.yaml", currentDir)
|
||||
if util.IsExist(cfgFile) {
|
||||
clusterCfg, err := ParseCfg(cfgFile)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return clusterCfg, nil
|
||||
} else {
|
||||
user, _ := user.Current()
|
||||
if user.Name != "root" {
|
||||
return nil, errors.New(fmt.Sprintf("Current user is %s. Please use root!", user.Name))
|
||||
}
|
||||
clusterCfg := AllinoneCfg(user, all)
|
||||
return clusterCfg, nil
|
||||
}
|
||||
} else {
|
||||
clusterCfg, err := ParseCfg(clusterCfgPath)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Unable to read the given cluster configuration file")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := yaml.Unmarshal(content, &clusterCfg); err != nil {
|
||||
return nil, errors.Wrap(err, "Unable to convert file to yaml")
|
||||
}
|
||||
//output, _ := json.MarshalIndent(&clusterCfg, "", " ")
|
||||
//fmt.Println(string(output))
|
||||
return clusterCfg, nil
|
||||
}
|
||||
}
|
||||
|
||||
func ParseCfg(clusterCfgPath string) (*kubekeyapi.Cluster, error) {
|
||||
clusterCfg := kubekeyapi.Cluster{}
|
||||
fp, err := filepath.Abs(clusterCfgPath)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Failed to look up current directory")
|
||||
}
|
||||
content, err := ioutil.ReadFile(fp)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Unable to read the given cluster configuration file")
|
||||
}
|
||||
|
||||
//output, _ := json.MarshalIndent(&clusterCfg, "", " ")
|
||||
//fmt.Println(string(output))
|
||||
if err := yaml.Unmarshal(content, &clusterCfg); err != nil {
|
||||
return nil, errors.Wrap(err, "Unable to convert file to yaml")
|
||||
}
|
||||
return &clusterCfg, nil
|
||||
}
|
||||
|
||||
func AllinoneCfg(user *user.User, all bool) kubekeyapi.Cluster {
|
||||
func AllinoneCfg(user *user.User, all bool) *kubekeyapi.Cluster {
|
||||
allinoneCfg := kubekeyapi.Cluster{}
|
||||
if err := exec.Command("/bin/sh", "-c", "if [ ! -f \"$HOME/.ssh/id_rsa\" ]; then ssh-keygen -t rsa -P \"\" -f $HOME/.ssh/id_rsa && ls $HOME/.ssh;fi;").Run(); err != nil {
|
||||
log.Fatalf("Failed to generate public key: %v", err)
|
||||
|
|
@ -122,5 +145,5 @@ func AllinoneCfg(user *user.User, all bool) kubekeyapi.Cluster {
|
|||
}
|
||||
|
||||
}
|
||||
return allinoneCfg
|
||||
return &allinoneCfg
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package images
|
|||
|
||||
import (
|
||||
kubekeyapi "github.com/kubesphere/kubekey/pkg/apis/kubekey/v1alpha1"
|
||||
"github.com/kubesphere/kubekey/pkg/util"
|
||||
"github.com/kubesphere/kubekey/pkg/util/manager"
|
||||
"strings"
|
||||
)
|
||||
|
|
@ -15,8 +16,17 @@ const (
|
|||
|
||||
func GetImage(mgr *manager.Manager, name string) *Image {
|
||||
var image Image
|
||||
var pauseTag string
|
||||
|
||||
result := util.CompareVersion(strings.TrimSpace(mgr.Cluster.Kubernetes.Version), "v1.18.0")
|
||||
if result == 0 || result == 1 {
|
||||
pauseTag = "3.2"
|
||||
} else {
|
||||
pauseTag = "3.1"
|
||||
}
|
||||
|
||||
ImageList := map[string]Image{
|
||||
"pause": {RepoAddr: "", Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "pause", Tag: "3.1", Group: K8s, Enable: true},
|
||||
"pause": {RepoAddr: "", Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "pause", Tag: pauseTag, Group: K8s, Enable: true},
|
||||
"kube-apiserver": {RepoAddr: "", Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "kube-apiserver", Tag: mgr.Cluster.Kubernetes.Version, Group: Master, Enable: true},
|
||||
"kube-controller-manager": {RepoAddr: "", Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "kube-controller-manager", Tag: mgr.Cluster.Kubernetes.Version, Group: Master, Enable: true},
|
||||
"kube-scheduler": {RepoAddr: "", Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "kube-scheduler", Tag: mgr.Cluster.Kubernetes.Version, Group: Master, Enable: true},
|
||||
|
|
@ -41,7 +51,7 @@ func GetImage(mgr *manager.Manager, name string) *Image {
|
|||
}
|
||||
|
||||
if mgr.Cluster.Registry.PrivateRegistry != "" {
|
||||
ImageList["pause"] = Image{RepoAddr: mgr.Cluster.Registry.PrivateRegistry, Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "pause", Tag: "3.1", Group: K8s, Enable: true}
|
||||
ImageList["pause"] = Image{RepoAddr: mgr.Cluster.Registry.PrivateRegistry, Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "pause", Tag: pauseTag, Group: K8s, Enable: true}
|
||||
ImageList["kube-apiserver"] = Image{RepoAddr: mgr.Cluster.Registry.PrivateRegistry, Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "kube-apiserver", Tag: mgr.Cluster.Kubernetes.Version, Group: Master, Enable: true}
|
||||
ImageList["kube-controller-manager"] = Image{RepoAddr: mgr.Cluster.Registry.PrivateRegistry, Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "kube-controller-manager", Tag: mgr.Cluster.Kubernetes.Version, Group: Master, Enable: true}
|
||||
ImageList["kube-scheduler"] = Image{RepoAddr: mgr.Cluster.Registry.PrivateRegistry, Namespace: mgr.Cluster.Kubernetes.ImageRepo, Repo: "kube-scheduler", Tag: mgr.Cluster.Kubernetes.Version, Group: Master, Enable: true}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ import (
|
|||
|
||||
const (
|
||||
VERSION = "KubeKey Version v1.0.0-dev\nKubernetes Version v1.17.6\nKubeSphere Version 3.0.0"
|
||||
VersionBig = 1
|
||||
VersionSmall = 2
|
||||
VersionEqual = 0
|
||||
)
|
||||
|
||||
func InitLogger(verbose bool) *log.Logger {
|
||||
|
|
@ -219,3 +222,74 @@ func LocalIP() string {
|
|||
}
|
||||
return localIp
|
||||
}
|
||||
|
||||
// Compare Version Numbers
|
||||
func CompareVersion(versionA, versionB string) int {
|
||||
return compareStrVer(versionA, versionB)
|
||||
}
|
||||
|
||||
func compareStrVer(verA, verB string) int {
|
||||
|
||||
verStrArrA := spliteStrByNet(verA)
|
||||
verStrArrB := spliteStrByNet(verB)
|
||||
|
||||
lenStrA := len(verStrArrA)
|
||||
lenStrB := len(verStrArrB)
|
||||
|
||||
if lenStrA != lenStrB {
|
||||
panic("Inconsistent version number format!")
|
||||
|
||||
}
|
||||
|
||||
return compareArrStrVers(verStrArrA, verStrArrB)
|
||||
}
|
||||
|
||||
func spliteStrByNet(strV string) []string {
|
||||
return strings.Split(strV, ".")
|
||||
}
|
||||
|
||||
func compareArrStrVers(verA, verB []string) int {
|
||||
|
||||
for index, _ := range verA {
|
||||
|
||||
littleResult := compareLittleVer(verA[index], verB[index])
|
||||
|
||||
if littleResult != VersionEqual {
|
||||
return littleResult
|
||||
}
|
||||
}
|
||||
|
||||
return VersionEqual
|
||||
}
|
||||
|
||||
func compareLittleVer(verA, verB string) int {
|
||||
|
||||
bytesA := []byte(verA)
|
||||
bytesB := []byte(verB)
|
||||
|
||||
lenA := len(bytesA)
|
||||
lenB := len(bytesB)
|
||||
if lenA > lenB {
|
||||
return VersionBig
|
||||
}
|
||||
|
||||
if lenA < lenB {
|
||||
return VersionSmall
|
||||
}
|
||||
|
||||
return compareByBytes(bytesA, bytesB)
|
||||
}
|
||||
|
||||
func compareByBytes(verA, verB []byte) int {
|
||||
|
||||
for index, _ := range verA {
|
||||
if verA[index] > verB[index] {
|
||||
return VersionBig
|
||||
}
|
||||
if verA[index] < verB[index] {
|
||||
return VersionSmall
|
||||
}
|
||||
}
|
||||
|
||||
return VersionEqual
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue