Merge pull request #57 from pixiake/dev

support custom calico and flannel
This commit is contained in:
KubeSphere CI Bot 2020-06-02 00:47:36 +08:00 committed by GitHub
commit 9550d2c9e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 18 deletions

View File

@ -65,17 +65,12 @@ func FilesDownloadHttp(mgr *manager.Manager, filepath, version string) error {
return errors.Wrap(err, "Failed to download kubeadm binary")
}
output, err := exec.Command("/bin/sh", "-c", fmt.Sprintf("sha256sum %s", binary.Path)).CombinedOutput()
if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to check SHA256 of %s", binary.Path))
if err := SHA256Check(binary, version); err != nil {
return err
}
if strings.TrimSpace(binary.GetSha256()) == "" {
return errors.New(fmt.Sprintf("No SHA256 found for %s. %s is not supported.", version, version))
} else {
if !strings.Contains(strings.TrimSpace(string(output)), binary.GetSha256()) {
return errors.New(fmt.Sprintf("SHA256 no match. %s not in %s", binary.GetSha256(), strings.TrimSpace(string(output))))
}
} else {
if err := SHA256Check(binary, version); err != nil {
return err
}
}
}
@ -108,3 +103,19 @@ func Prepare(mgr *manager.Manager) error {
}
return nil
}
func SHA256Check(binary files.KubeBinary, version string) error {
output, err := exec.Command("/bin/sh", "-c", fmt.Sprintf("sha256sum %s", binary.Path)).CombinedOutput()
if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to check SHA256 of %s", binary.Path))
}
if strings.TrimSpace(binary.GetSha256()) == "" {
return errors.New(fmt.Sprintf("No SHA256 found for %s. %s is not supported.", version, version))
} else {
if !strings.Contains(strings.TrimSpace(string(output)), binary.GetSha256()) {
return errors.New(fmt.Sprintf("SHA256 no match. %s not in %s", binary.GetSha256(), strings.TrimSpace(string(output))))
}
}
return nil
}

View File

@ -22,9 +22,12 @@ import (
kubekeyapi "github.com/kubesphere/kubekey/pkg/apis/kubekey/v1alpha1"
"github.com/kubesphere/kubekey/pkg/plugins/network/calico"
"github.com/kubesphere/kubekey/pkg/plugins/network/flannel"
"github.com/kubesphere/kubekey/pkg/util"
"github.com/kubesphere/kubekey/pkg/util/manager"
"github.com/kubesphere/kubekey/pkg/util/ssh"
"github.com/pkg/errors"
"os/exec"
"strings"
)
func DeployNetworkPlugin(mgr *manager.Manager) error {
@ -56,11 +59,22 @@ func deployNetworkPlugin(mgr *manager.Manager, node *kubekeyapi.HostCfg, conn ss
}
func deployCalico(mgr *manager.Manager, node *kubekeyapi.HostCfg) error {
calicoFile, err := calico.GenerateCalicoFiles(mgr.Cluster)
if err != nil {
return err
var calicoFileBase64 string
if util.IsExist(fmt.Sprintf("%s/calico.yaml", mgr.WorkDir)) {
output, err := exec.Command("/bin/sh", "-c", fmt.Sprintf("cat %s/calico.yaml | base64 --wrap=0", mgr.WorkDir)).CombinedOutput()
if err != nil {
fmt.Println(string(output))
return errors.Wrap(errors.WithStack(err), fmt.Sprintf("Failed to read custom calico manifests: %s/calico.yaml", mgr.WorkDir))
}
calicoFileBase64 = strings.TrimSpace(string(output))
} else {
calicoFile, err := calico.GenerateCalicoFiles(mgr.Cluster)
if err != nil {
return err
}
calicoFileBase64 = base64.StdEncoding.EncodeToString([]byte(calicoFile))
}
calicoFileBase64 := base64.StdEncoding.EncodeToString([]byte(calicoFile))
_, err1 := mgr.Runner.RunCmd(fmt.Sprintf("sudo -E /bin/sh -c \"echo %s | base64 -d > /etc/kubernetes/calico.yaml\"", calicoFileBase64))
if err1 != nil {
return errors.Wrap(errors.WithStack(err1), "Failed to generate calico file")
@ -74,11 +88,22 @@ func deployCalico(mgr *manager.Manager, node *kubekeyapi.HostCfg) error {
}
func deployFlannel(mgr *manager.Manager) error {
flannelFile, err := flannel.GenerateFlannelFiles(mgr.Cluster)
if err != nil {
return err
var flannelFileBase64 string
if util.IsExist(fmt.Sprintf("%s/flannel.yaml", mgr.WorkDir)) {
output, err := exec.Command("/bin/sh", "-c", fmt.Sprintf("cat %s/flannel.yaml | base64 --wrap=0", mgr.WorkDir)).CombinedOutput()
if err != nil {
fmt.Println(string(output))
return errors.Wrap(errors.WithStack(err), fmt.Sprintf("Failed to read custom flannel manifests: %s/flannel.yaml", mgr.WorkDir))
}
flannelFileBase64 = strings.TrimSpace(string(output))
} else {
flannelFile, err := flannel.GenerateFlannelFiles(mgr.Cluster)
if err != nil {
return err
}
flannelFileBase64 = base64.StdEncoding.EncodeToString([]byte(flannelFile))
}
flannelFileBase64 := base64.StdEncoding.EncodeToString([]byte(flannelFile))
_, err1 := mgr.Runner.RunCmd(fmt.Sprintf("sudo -E /bin/sh -c \"echo %s | base64 -d > /etc/kubernetes/flannel.yaml\"", flannelFileBase64))
if err1 != nil {
return errors.Wrap(errors.WithStack(err1), "Failed to generate flannel file")