// SetupCerts gets the generated credentials required to talk to the APIServer. func SetupCerts(d drivers.Driver) error { localPath := constants.Minipath ipStr, err := d.GetIP() if err != nil { return err } ip := net.ParseIP(ipStr) publicPath := filepath.Join(localPath, "apiserver.crt") privatePath := filepath.Join(localPath, "apiserver.key") if err := GenerateCerts(publicPath, privatePath, ip); err != nil { return err } client, err := sshutil.NewSSHClient(d) if err != nil { return err } for _, cert := range certs { p := filepath.Join(localPath, cert) data, err := ioutil.ReadFile(p) if err != nil { return err } if err := sshutil.Transfer(data, util.DefaultCertPath, cert, "0644", client); err != nil { return err } } return nil }
func UpdateCluster(h sshAble, d drivers.Driver, config KubernetesConfig) error { client, err := sshutil.NewSSHClient(d) if err != nil { return errors.Wrap(err, "Error creating new ssh client") } // transfer localkube from cache/asset to vm if localkubeURIWasSpecified(config) { lCacher := localkubeCacher{config} if err = lCacher.updateLocalkubeFromURI(client); err != nil { return errors.Wrap(err, "Error updating localkube from uri") } } else { if err = updateLocalkubeFromAsset(client); err != nil { return errors.Wrap(err, "Error updating localkube from asset") } } fileAssets := []CopyableFile{} addMinikubeAddonsDirToAssets(&fileAssets) // merge files to copy var copyableFiles []CopyableFile copyableFiles = append(copyableFiles, memoryAssets...) copyableFiles = append(copyableFiles, fileAssets...) // transfer files to vm for _, copyableFile := range copyableFiles { if err := sshutil.Transfer(copyableFile, copyableFile.GetLength(), copyableFile.GetTargetDir(), copyableFile.GetTargetName(), copyableFile.GetPermissions(), client); err != nil { return err } } return nil }
func updateLocalkubeFromAsset(client *ssh.Client) error { contents, err := Asset("out/localkube") if err != nil { return errors.Wrap(err, "Error loading asset out/localkube") } if err := sshutil.Transfer(bytes.NewReader(contents), len(contents), "/usr/local/bin", "localkube", "0777", client); err != nil { return errors.Wrap(err, "Error transferring localkube via ssh") } return nil }
func (l *localkubeCacher) transferCachedLocalkubeToVM(client *ssh.Client) error { contents, err := ioutil.ReadFile(l.getLocalkubeCacheFilepath()) if err != nil { return errors.Wrap(err, "Error reading file: localkube cache filepath") } if err = sshutil.Transfer(bytes.NewReader(contents), len(contents), "/usr/local/bin", "localkube", "0777", client); err != nil { return errors.Wrap(err, "Error transferring cached localkube to VM via ssh") } return nil }
func (l *localkubeCacher) updateLocalkubeFromFile(client *ssh.Client) error { path := strings.TrimPrefix(l.k8sConf.KubernetesVersion, "file://") path = filepath.FromSlash(path) contents, err := ioutil.ReadFile(path) if err != nil { return errors.Wrapf(err, "Error reading localkube file at %s", path) } if err := sshutil.Transfer(bytes.NewReader(contents), len(contents), "/usr/local/bin", "localkube", "0777", client); err != nil { return errors.Wrapf(err, "Error transferring specified localkube file at %s to VM via ssh", path) } return nil }
func UpdateCluster(d drivers.Driver) error { client, err := sshutil.NewSSHClient(d) if err != nil { return err } for _, a := range assets { contents, err := Asset(a.AssetName) if err != nil { glog.Infof("Error loading asset %s: %s", a.AssetName, err) return err } if err := sshutil.Transfer(contents, a.TargetDir, a.TargetName, a.Permissions, client); err != nil { return err } } return nil }
// SetupCerts gets the generated credentials required to talk to the APIServer. func SetupCerts(d drivers.Driver) error { localPath := constants.Minipath ipStr, err := d.GetIP() if err != nil { return errors.Wrap(err, "Error getting ip from driver") } glog.Infoln("Setting up certificates for IP: %s", ipStr) ip := net.ParseIP(ipStr) caCert := filepath.Join(localPath, "ca.crt") caKey := filepath.Join(localPath, "ca.key") publicPath := filepath.Join(localPath, "apiserver.crt") privatePath := filepath.Join(localPath, "apiserver.key") if err := GenerateCerts(caCert, caKey, publicPath, privatePath, ip); err != nil { return errors.Wrap(err, "Error generating certs") } client, err := sshutil.NewSSHClient(d) if err != nil { return errors.Wrap(err, "Error creating new ssh client") } for _, cert := range certs { p := filepath.Join(localPath, cert) data, err := ioutil.ReadFile(p) if err != nil { return errors.Wrapf(err, "Error reading file: %s", p) } perms := "0644" if strings.HasSuffix(cert, ".key") { perms = "0600" } if err := sshutil.Transfer(bytes.NewReader(data), len(data), util.DefaultCertPath, cert, perms, client); err != nil { return errors.Wrapf(err, "Error transferring data: %s", string(data)) } } return nil }
// SetupCerts gets the generated credentials required to talk to the APIServer. func SetupCerts(d drivers.Driver) error { localPath := constants.Minipath ipStr, err := d.GetIP() if err != nil { return err } glog.Infoln("Setting up certificates for IP: %s", ipStr) ip := net.ParseIP(ipStr) caCert := filepath.Join(localPath, "ca.crt") caKey := filepath.Join(localPath, "ca.key") publicPath := filepath.Join(localPath, "apiserver.crt") privatePath := filepath.Join(localPath, "apiserver.key") if err := GenerateCerts(caCert, caKey, publicPath, privatePath, ip); err != nil { return err } client, err := sshutil.NewSSHClient(d) if err != nil { return err } for _, cert := range certs { p := filepath.Join(localPath, cert) data, err := ioutil.ReadFile(p) if err != nil { return err } perms := "0644" if strings.HasSuffix(cert, ".key") { perms = "0600" } if err := sshutil.Transfer(data, util.DefaultCertPath, cert, perms, client); err != nil { return err } } return nil }