Skip to content

Commit

Permalink
Merge pull request #102 from cuisongliu/optimization/vars
Browse files Browse the repository at this point in the history
Optimization/vars
  • Loading branch information
fanux authored Sep 17, 2019
2 parents 3aa5e63 + 6773d22 commit da0de40
Show file tree
Hide file tree
Showing 16 changed files with 90 additions and 111 deletions.
6 changes: 3 additions & 3 deletions cmd/clean.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ var cleanCmd = &cobra.Command{
Short: "Simplest way to clean your kubernets HA cluster",
Long: `sealos clean --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 --node 192.168.0.5 --user root --passwd your-server-password`,
Run: func(cmd *cobra.Command, args []string) {
install.BuildClean(masters, nodes)
install.BuildClean()
},
}

Expand All @@ -46,6 +46,6 @@ func init() {
cleanCmd.Flags().StringVar(&install.Passwd, "passwd", "", "password for ssh")
cleanCmd.Flags().StringVar(&install.PrivateKeyFile, "pk", "/root/.ssh/id_rsa", "private key for ssh")

cleanCmd.Flags().StringSliceVar(&masters, "master", []string{}, "kubernetes masters")
cleanCmd.Flags().StringSliceVar(&nodes, "node", []string{}, "kubernetes nodes")
cleanCmd.Flags().StringSliceVar(&install.Masters, "master", []string{}, "kubernetes masters")
cleanCmd.Flags().StringSliceVar(&install.Nodes, "node", []string{}, "kubernetes nodes")
}
18 changes: 5 additions & 13 deletions cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,13 @@ import (
"github.com/spf13/cobra"
)

var (
masters []string
nodes []string
vip string

pkgURL string
)

// initCmd represents the init command
var initCmd = &cobra.Command{
Use: "init",
Short: "Simplest way to init your kubernets HA cluster",
Long: `sealos init --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 --node 192.168.0.5 --user root --passwd your-server-password`,
Run: func(cmd *cobra.Command, args []string) {
install.BuildInit(masters, nodes, vip, pkgURL)
install.BuildInit()
},
}

Expand All @@ -47,10 +39,10 @@ func init() {

initCmd.Flags().StringVar(&install.KubeadmFile, "kubeadm-config", "", "kubeadm-config.yaml template file")

initCmd.Flags().StringVar(&vip, "vip", "10.103.97.2", "virtual ip")
initCmd.Flags().StringSliceVar(&masters, "master", []string{}, "kubernetes masters")
initCmd.Flags().StringSliceVar(&nodes, "node", []string{}, "kubernetes nodes")
initCmd.Flags().StringVar(&install.VIP, "vip", "10.103.97.2", "virtual ip")
initCmd.Flags().StringSliceVar(&install.Masters, "master", []string{}, "kubernetes masters")
initCmd.Flags().StringSliceVar(&install.Nodes, "node", []string{}, "kubernetes nodes")

initCmd.Flags().StringVar(&pkgURL, "pkg-url", "", "http://store.lameleg.com/kube1.14.1.tar.gz download offline package url, or file localtion ex. /root/kube1.14.1.tar.gz")
initCmd.Flags().StringVar(&install.PkgUrl, "pkg-url", "", "http://store.lameleg.com/kube1.14.1.tar.gz download offline package url, or file localtion ex. /root/kube1.14.1.tar.gz")
initCmd.Flags().StringVar(&install.Version, "version", "v1.14.1", "version is kubernetes version")
}
8 changes: 4 additions & 4 deletions cmd/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ var installCmd = &cobra.Command{
Short: "kubernetes cluster install plugin,ex dashboard",
Long: `sealos install --master 172.16.3.254 --user root --passwd admin --name dashboard --pkg-url /root/dashboard.tar.gz`,
Run: func(cmd *cobra.Command, args []string) {
install.BuildInstall(masters, nodes, pkgURL, name)
install.BuildInstall(name)
},
}
var name string
Expand All @@ -40,9 +40,9 @@ func init() {
installCmd.Flags().StringVar(&install.PrivateKeyFile, "pk", "/root/.ssh/id_rsa", "private key for ssh")
installCmd.Flags().BoolVar(&install.Kustomize, "kust", false, "kustomize type deploy")

installCmd.Flags().StringSliceVar(&masters, "master", []string{}, "kubernetes masters")
installCmd.Flags().StringSliceVar(&nodes, "node", []string{}, "kubernetes nodes")
installCmd.Flags().StringSliceVar(&install.Masters, "master", []string{}, "kubernetes masters")
installCmd.Flags().StringSliceVar(&install.Nodes, "node", []string{}, "kubernetes nodes")
installCmd.Flags().StringVar(&name, "name", "", "kubernetes plugins name")
installCmd.Flags().StringVar(&pkgURL, "pkg-url", "", "http://store.lameleg.com/prometheus.tar.gz download offline plugins package url, or file localtion ex. /root/prometheus.tar.gz")
installCmd.Flags().StringVar(&install.PkgUrl, "pkg-url", "", "http://store.lameleg.com/prometheus.tar.gz download offline plugins package url, or file localtion ex. /root/prometheus.tar.gz")

}
10 changes: 5 additions & 5 deletions cmd/join.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ var joinCmd = &cobra.Command{
Short: "Simplest way to join your kubernets HA cluster",
Long: `sealos join --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 --node 192.168.0.5 --vip 192.168.0.1 --user root --passwd your-server-password --pkg-url /root/kube1.14.1.tar.gz`,
Run: func(cmd *cobra.Command, args []string) {
install.BuildJoin(masters, nodes, vip, pkgURL)
install.BuildJoin()
},
}

Expand All @@ -36,9 +36,9 @@ func init() {
joinCmd.Flags().StringVar(&install.Passwd, "passwd", "", "password for ssh")
joinCmd.Flags().StringVar(&install.PrivateKeyFile, "pk", "/root/.ssh/id_rsa", "private key for ssh")

joinCmd.Flags().StringVar(&vip, "vip", "10.103.97.2", "virtual ip")
joinCmd.Flags().StringSliceVar(&masters, "master", []string{}, "kubernetes masters")
joinCmd.Flags().StringSliceVar(&nodes, "node", []string{}, "kubernetes nodes")
joinCmd.Flags().StringVar(&install.VIP, "vip", "10.103.97.2", "virtual ip")
joinCmd.Flags().StringSliceVar(&install.Masters, "master", []string{}, "kubernetes masters")
joinCmd.Flags().StringSliceVar(&install.Nodes, "node", []string{}, "kubernetes nodes")

joinCmd.Flags().StringVar(&pkgURL, "pkg-url", "", "http://store.lameleg.com/kube1.14.1.tar.gz download offline pakage url, or file localtion ex. /root/kube1.14.1.tar.gz")
joinCmd.Flags().StringVar(&install.PkgUrl, "pkg-url", "", "http://store.lameleg.com/kube1.14.1.tar.gz download offline pakage url, or file localtion ex. /root/kube1.14.1.tar.gz")
}
2 changes: 1 addition & 1 deletion install/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (

//CheckValid is
func (s *SealosInstaller) CheckValid() {
hosts := append(s.Masters, s.Nodes...)
hosts := append(Masters, Nodes...)
var session *ssh.Session
for _, h := range hosts {
session, err := Connect(User, Passwd, PrivateKeyFile, h)
Expand Down
4 changes: 2 additions & 2 deletions install/clean.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package install
import "sync"

//BuildClean is
func BuildClean(masters []string, nodes []string) {
hosts := append(masters, nodes...)
func BuildClean() {
hosts := append(Masters, Nodes...)
i := &SealosInstaller{
Hosts: hosts,
}
Expand Down
14 changes: 9 additions & 5 deletions install/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ func printlnKubeadmConfig() {
}

//Template is
func Template(masters []string, vip string, version string) []byte {
return TemplateFromTemplateContent(masters, vip, version, kubeadmConfig())
func Template() []byte {
return TemplateFromTemplateContent(kubeadmConfig())
}

func TemplateFromTemplateContent(masters []string, vip, version, templateContent string) []byte {
func TemplateFromTemplateContent(templateContent string) []byte {
tmpl, err := template.New("text").Parse(templateContent)
defer func() {
if r := recover(); r != nil {
Expand All @@ -66,10 +66,14 @@ func TemplateFromTemplateContent(masters []string, vip, version, templateContent
if err != nil {
panic(1)
}
var masters []string
for _, h := range Masters {
masters = append(masters, IpFormat(h))
}
var envMap = make(map[string]interface{})
envMap["VIP"] = vip
envMap["VIP"] = VIP
envMap["Masters"] = masters
envMap["Version"] = version
envMap["Version"] = Version
var buffer bytes.Buffer
_ = tmpl.Execute(&buffer, envMap)
return buffer.Bytes()
Expand Down
6 changes: 4 additions & 2 deletions install/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ func TestTemplate(t *testing.T) {
var vip = "10.103.97.1"
User = "cuisongliu"
Passwd = "admin"
Cmd("127.0.0.1", "echo \""+string(Template(masters, vip, "v1.14.1"))+"\" > ~/aa")
t.Log(string(Template(masters, vip, "v1.14.0")))
Masters = masters
VIP = vip
Cmd("127.0.0.1", "echo \""+string(Template())+"\" > ~/aa")
t.Log(string(Template()))
}
34 changes: 13 additions & 21 deletions install/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,10 @@ import (
)

//BuildInit is
func BuildInit(masters []string, nodes []string, vip, pkgUrl string) {
hosts := append(masters, nodes...)
func BuildInit() {
hosts := append(Masters, Nodes...)
i := &SealosInstaller{
Masters: masters,
Nodes: nodes,
VIP: vip,
PkgUrl: pkgUrl,
Hosts: hosts,
Hosts: hosts,
}
i.CheckValid()
i.Print()
Expand All @@ -24,25 +20,21 @@ func BuildInit(masters []string, nodes []string, vip, pkgUrl string) {
i.Print("SendPackage", "KubeadmConfigInstall")
i.InstallMaster0()
i.Print("SendPackage", "KubeadmConfigInstall", "InstallMaster0")
if len(i.Masters) > 1 {
if len(Masters) > 1 {
i.JoinMasters()
i.Print("SendPackage", "KubeadmConfigInstall", "InstallMaster0", "JoinMasters")
}
if len(i.Nodes) > 0 {
if len(Nodes) > 0 {
i.JoinNodes()
i.Print("SendPackage", "KubeadmConfigInstall", "InstallMaster0", "JoinMasters", "JoinNodes")
}
}

//KubeadmConfigInstall is
func (s *SealosInstaller) KubeadmConfigInstall() {
var masters []string
for _, h := range s.Masters {
masters = append(masters, IpFormat(h))
}
var templateData string
if KubeadmFile == "" {
templateData = string(Template(masters, s.VIP, Version))
templateData = string(Template())
} else {
fileData, err := ioutil.ReadFile(KubeadmFile)
defer func() {
Expand All @@ -53,24 +45,24 @@ func (s *SealosInstaller) KubeadmConfigInstall() {
if err != nil {
panic(1)
}
templateData = string(TemplateFromTemplateContent(masters, s.VIP, Version, string(fileData)))
templateData = string(TemplateFromTemplateContent(string(fileData)))
}
cmd := "echo \"" + templateData + "\" > /root/kubeadm-config.yaml"
Cmd(s.Masters[0], cmd)
Cmd(Masters[0], cmd)
}

//InstallMaster0 is
func (s *SealosInstaller) InstallMaster0() {
cmd := fmt.Sprintf("echo %s apiserver.cluster.local >> /etc/hosts", IpFormat(s.Masters[0]))
Cmd(s.Masters[0], cmd)
cmd := fmt.Sprintf("echo %s apiserver.cluster.local >> /etc/hosts", IpFormat(Masters[0]))
Cmd(Masters[0], cmd)

cmd = `kubeadm init --config=/root/kubeadm-config.yaml --experimental-upload-certs`
output := Cmd(s.Masters[0], cmd)
output := Cmd(Masters[0], cmd)
decodeOutput(output)

cmd = `mkdir -p /root/.kube && cp /etc/kubernetes/admin.conf /root/.kube/config`
output = Cmd(s.Masters[0], cmd)
output = Cmd(Masters[0], cmd)

cmd = `kubectl apply -f /root/kube/conf/net/calico.yaml || true`
output = Cmd(s.Masters[0], cmd)
output = Cmd(Masters[0], cmd)
}
11 changes: 4 additions & 7 deletions install/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,10 @@ package install
import "fmt"

//BuildJoin is
func BuildInstall(masters []string, nodes []string, pkgUrl, name string) {
hosts := append(masters, nodes...)
func BuildInstall(name string) {
hosts := append(Masters, Nodes...)
i := &SealosInstaller{
Masters: masters,
Nodes: nodes,
PkgUrl: pkgUrl,
Hosts: hosts,
Hosts: hosts,
}
i.CheckValid()
i.SendPackage(name)
Expand All @@ -22,5 +19,5 @@ func (s *SealosInstaller) KubeApply(name string) {
args = "-k"
}
kubeCmd := fmt.Sprintf("cd /root/%s/conf && kubectl apply %s .", name, args)
Cmd(s.Masters[0], kubeCmd)
Cmd(Masters[0], kubeCmd)
}
26 changes: 11 additions & 15 deletions install/join.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,9 @@ import (
)

//BuildJoin is
func BuildJoin(masters []string, nodes []string, vip, pkgUrl string) {
func BuildJoin() {
i := &SealosInstaller{
Masters: masters,
Nodes: nodes,
VIP: vip,
PkgUrl: pkgUrl,
Hosts: nodes,
Hosts: Nodes,
}
i.CheckValid()
i.SendPackage("kube")
Expand All @@ -23,19 +19,19 @@ func BuildJoin(masters []string, nodes []string, vip, pkgUrl string) {
//GeneratorToken is
func (s *SealosInstaller) GeneratorToken() {
cmd := `kubeadm token create --print-join-command`
output := Cmd(s.Masters[0], cmd)
output := Cmd(Masters[0], cmd)
decodeOutput(output)
}

//JoinMasters is
func (s *SealosInstaller) JoinMasters() {
cmd := fmt.Sprintf("kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s --experimental-control-plane --certificate-key %s", IpFormat(s.Masters[0]), JoinToken, TokenCaCertHash, CertificateKey)
cmd := fmt.Sprintf("kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s --experimental-control-plane --certificate-key %s", IpFormat(Masters[0]), JoinToken, TokenCaCertHash, CertificateKey)

for _, master := range s.Masters[1:] {
cmdHosts := fmt.Sprintf("echo %s apiserver.cluster.local >> /etc/hosts", IpFormat(s.Masters[0]))
for _, master := range Masters[1:] {
cmdHosts := fmt.Sprintf("echo %s apiserver.cluster.local >> /etc/hosts", IpFormat(Masters[0]))
Cmd(master, cmdHosts)
Cmd(master, cmd)
cmdHosts = fmt.Sprintf(`sed "s/%s/%s/g" -i /etc/hosts`, IpFormat(s.Masters[0]), IpFormat(master))
cmdHosts = fmt.Sprintf(`sed "s/%s/%s/g" -i /etc/hosts`, IpFormat(Masters[0]), IpFormat(master))
Cmd(master, cmdHosts)
}
}
Expand All @@ -44,17 +40,17 @@ func (s *SealosInstaller) JoinMasters() {
func (s *SealosInstaller) JoinNodes() {
var masters string
var wg sync.WaitGroup
for _, master := range s.Masters {
for _, master := range Masters {
masters += fmt.Sprintf(" --master %s:6443", IpFormat(master))
}

for _, node := range s.Nodes {
for _, node := range Nodes {
wg.Add(1)
go func(node string) {
defer wg.Done()
cmdHosts := fmt.Sprintf("echo %s apiserver.cluster.local >> /etc/hosts", s.VIP)
cmdHosts := fmt.Sprintf("echo %s apiserver.cluster.local >> /etc/hosts", VIP)
Cmd(node, cmdHosts)
cmd := fmt.Sprintf("kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s", s.VIP, JoinToken, TokenCaCertHash)
cmd := fmt.Sprintf("kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s", VIP, JoinToken, TokenCaCertHash)
cmd += masters
Cmd(node, cmd)
}(node)
Expand Down
8 changes: 2 additions & 6 deletions install/sealos.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,7 @@ var (

//SealosInstaller is
type SealosInstaller struct {
Masters []string
Nodes []string
VIP string
PkgUrl string
Hosts []string
Hosts []string
}

const (
Expand All @@ -59,7 +55,7 @@ func (s *SealosInstaller) getCommand(name string) (cmd string) {
cmds := make(map[string]string)
cmds = map[string]string{
initMaster0: `kubeadm init --config=/root/kubeadm-config.yaml --experimental-upload-certs`,
initMasters: fmt.Sprintf("kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s --experimental-control-plane --certificate-key %s", IpFormat(s.Masters[0]), JoinToken, TokenCaCertHash, CertificateKey),
initMasters: fmt.Sprintf("kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s --experimental-control-plane --certificate-key %s", IpFormat(Masters[0]), JoinToken, TokenCaCertHash, CertificateKey),
}

if strings.HasPrefix(Version, "v1.15") {
Expand Down
2 changes: 1 addition & 1 deletion install/send.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ package install

//SendPackage is
func (s *SealosInstaller) SendPackage(packName string) {
SendPackage(s.PkgUrl, s.Hosts, packName)
SendPackage(PkgUrl, s.Hosts, packName)
}
10 changes: 0 additions & 10 deletions install/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,6 @@ import (
"golang.org/x/crypto/ssh"
)

//username
var (
User string
Passwd string
PrivateKeyFile string
KubeadmFile string
Version string
Kustomize bool
)

const oneMBByte = 1024 * 1024

func IpFormat(host string) string {
Expand Down
Loading

0 comments on commit da0de40

Please sign in to comment.