mirror of https://github.com/k3s-io/k3s
Fix etcd-snapshot commands by making setup more consistent.
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
(cherry picked from commit a7878db17f
)
pull/5273/head
parent
cbf8cadb92
commit
ad40da3271
|
@ -15,12 +15,12 @@ import (
|
|||
func main() {
|
||||
app := cmds.NewApp()
|
||||
app.Commands = []cli.Command{
|
||||
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Run,
|
||||
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Save,
|
||||
cmds.NewEtcdSnapshotSubcommands(
|
||||
etcdsnapshot.Delete,
|
||||
etcdsnapshot.List,
|
||||
etcdsnapshot.Prune,
|
||||
etcdsnapshot.Run),
|
||||
etcdsnapshot.Save),
|
||||
),
|
||||
}
|
||||
|
||||
|
|
|
@ -47,12 +47,12 @@ func main() {
|
|||
cmds.NewKubectlCommand(kubectl.Run),
|
||||
cmds.NewCRICTL(crictl.Run),
|
||||
cmds.NewCtrCommand(ctr.Run),
|
||||
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Run,
|
||||
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Save,
|
||||
cmds.NewEtcdSnapshotSubcommands(
|
||||
etcdsnapshot.Delete,
|
||||
etcdsnapshot.List,
|
||||
etcdsnapshot.Prune,
|
||||
etcdsnapshot.Run),
|
||||
etcdsnapshot.Save),
|
||||
),
|
||||
cmds.NewSecretsEncryptCommand(cli.ShowAppHelp,
|
||||
cmds.NewSecretsEncryptSubcommands(
|
||||
|
|
4
main.go
4
main.go
|
@ -31,12 +31,12 @@ func main() {
|
|||
cmds.NewAgentCommand(agent.Run),
|
||||
cmds.NewKubectlCommand(kubectl.Run),
|
||||
cmds.NewCRICTL(crictl.Run),
|
||||
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Run,
|
||||
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Save,
|
||||
cmds.NewEtcdSnapshotSubcommands(
|
||||
etcdsnapshot.Delete,
|
||||
etcdsnapshot.List,
|
||||
etcdsnapshot.Prune,
|
||||
etcdsnapshot.Run),
|
||||
etcdsnapshot.Save),
|
||||
),
|
||||
cmds.NewSecretsEncryptCommand(cli.ShowAppHelp,
|
||||
cmds.NewSecretsEncryptSubcommands(
|
||||
|
|
|
@ -24,22 +24,27 @@ import (
|
|||
|
||||
// commandSetup setups up common things needed
|
||||
// for each etcd command.
|
||||
func commandSetup(app *cli.Context, cfg *cmds.Server, sc *server.Config) (string, error) {
|
||||
func commandSetup(app *cli.Context, cfg *cmds.Server, sc *server.Config) error {
|
||||
gspt.SetProcTitle(os.Args[0])
|
||||
|
||||
nodeName := app.String("node-name")
|
||||
if nodeName == "" {
|
||||
h, err := os.Hostname()
|
||||
if err != nil {
|
||||
return "", err
|
||||
return err
|
||||
}
|
||||
nodeName = h
|
||||
}
|
||||
|
||||
os.Setenv("NODE_NAME", nodeName)
|
||||
|
||||
dataDir, err := server.ResolveDataDir(cfg.DataDir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sc.DisableAgent = true
|
||||
sc.ControlConfig.DataDir = cfg.DataDir
|
||||
sc.ControlConfig.DataDir = dataDir
|
||||
sc.ControlConfig.EtcdSnapshotName = cfg.EtcdSnapshotName
|
||||
sc.ControlConfig.EtcdSnapshotDir = cfg.EtcdSnapshotDir
|
||||
sc.ControlConfig.EtcdSnapshotCompress = cfg.EtcdSnapshotCompress
|
||||
|
@ -56,22 +61,31 @@ func commandSetup(app *cli.Context, cfg *cmds.Server, sc *server.Config) (string
|
|||
sc.ControlConfig.EtcdS3Insecure = cfg.EtcdS3Insecure
|
||||
sc.ControlConfig.EtcdS3Timeout = cfg.EtcdS3Timeout
|
||||
sc.ControlConfig.Runtime = &config.ControlRuntime{}
|
||||
sc.ControlConfig.Runtime.ETCDServerCA = filepath.Join(dataDir, "tls", "etcd", "server-ca.crt")
|
||||
sc.ControlConfig.Runtime.ClientETCDCert = filepath.Join(dataDir, "tls", "etcd", "client.crt")
|
||||
sc.ControlConfig.Runtime.ClientETCDKey = filepath.Join(dataDir, "tls", "etcd", "client.key")
|
||||
sc.ControlConfig.Runtime.KubeConfigAdmin = filepath.Join(dataDir, "cred", "admin.kubeconfig")
|
||||
|
||||
return server.ResolveDataDir(cfg.DataDir)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Run is an alias for Save, retained for compatibility reasons.
|
||||
func Run(app *cli.Context) error {
|
||||
return Save(app)
|
||||
}
|
||||
|
||||
// Save triggers an on-demand etcd snapshot operation
|
||||
func Save(app *cli.Context) error {
|
||||
if err := cmds.InitLogging(); err != nil {
|
||||
return err
|
||||
}
|
||||
return run(app, &cmds.ServerConfig)
|
||||
return save(app, &cmds.ServerConfig)
|
||||
}
|
||||
|
||||
func run(app *cli.Context, cfg *cmds.Server) error {
|
||||
func save(app *cli.Context, cfg *cmds.Server) error {
|
||||
var serverConfig server.Config
|
||||
|
||||
dataDir, err := commandSetup(app, cfg, &serverConfig)
|
||||
if err != nil {
|
||||
if err := commandSetup(app, cfg, &serverConfig); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -79,12 +93,7 @@ func run(app *cli.Context, cfg *cmds.Server) error {
|
|||
return util2.ErrCommandNoArgs
|
||||
}
|
||||
|
||||
serverConfig.ControlConfig.DataDir = dataDir
|
||||
serverConfig.ControlConfig.EtcdSnapshotRetention = 0 // disable retention check
|
||||
serverConfig.ControlConfig.Runtime.ETCDServerCA = filepath.Join(dataDir, "tls", "etcd", "server-ca.crt")
|
||||
serverConfig.ControlConfig.Runtime.ClientETCDCert = filepath.Join(dataDir, "tls", "etcd", "client.crt")
|
||||
serverConfig.ControlConfig.Runtime.ClientETCDKey = filepath.Join(dataDir, "tls", "etcd", "client.key")
|
||||
serverConfig.ControlConfig.Runtime.KubeConfigAdmin = filepath.Join(dataDir, "cred", "admin.kubeconfig")
|
||||
|
||||
ctx := signals.SetupSignalContext()
|
||||
e := etcd.NewETCD()
|
||||
|
@ -97,7 +106,7 @@ func run(app *cli.Context, cfg *cmds.Server) error {
|
|||
return err
|
||||
}
|
||||
if !initialized {
|
||||
return fmt.Errorf("etcd database not found in %s", dataDir)
|
||||
return fmt.Errorf("etcd database not found in %s", serverConfig.ControlConfig.DataDir)
|
||||
}
|
||||
|
||||
cluster := cluster.New(&serverConfig.ControlConfig)
|
||||
|
@ -125,8 +134,7 @@ func Delete(app *cli.Context) error {
|
|||
func delete(app *cli.Context, cfg *cmds.Server) error {
|
||||
var serverConfig server.Config
|
||||
|
||||
dataDir, err := commandSetup(app, cfg, &serverConfig)
|
||||
if err != nil {
|
||||
if err := commandSetup(app, cfg, &serverConfig); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -135,9 +143,6 @@ func delete(app *cli.Context, cfg *cmds.Server) error {
|
|||
return errors.New("no snapshots given for removal")
|
||||
}
|
||||
|
||||
serverConfig.ControlConfig.DataDir = dataDir
|
||||
serverConfig.ControlConfig.Runtime.KubeConfigAdmin = filepath.Join(dataDir, "cred", "admin.kubeconfig")
|
||||
|
||||
ctx := signals.SetupSignalContext()
|
||||
e := etcd.NewETCD()
|
||||
if err := e.SetControlConfig(ctx, &serverConfig.ControlConfig); err != nil {
|
||||
|
@ -174,13 +179,10 @@ func validEtcdListFormat(format string) bool {
|
|||
func list(app *cli.Context, cfg *cmds.Server) error {
|
||||
var serverConfig server.Config
|
||||
|
||||
dataDir, err := commandSetup(app, cfg, &serverConfig)
|
||||
if err != nil {
|
||||
if err := commandSetup(app, cfg, &serverConfig); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
serverConfig.ControlConfig.DataDir = dataDir
|
||||
|
||||
ctx := signals.SetupSignalContext()
|
||||
e := etcd.NewETCD()
|
||||
if err := e.SetControlConfig(ctx, &serverConfig.ControlConfig); err != nil {
|
||||
|
@ -241,14 +243,11 @@ func Prune(app *cli.Context) error {
|
|||
func prune(app *cli.Context, cfg *cmds.Server) error {
|
||||
var serverConfig server.Config
|
||||
|
||||
dataDir, err := commandSetup(app, cfg, &serverConfig)
|
||||
if err != nil {
|
||||
if err := commandSetup(app, cfg, &serverConfig); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
serverConfig.ControlConfig.DataDir = dataDir
|
||||
serverConfig.ControlConfig.EtcdSnapshotRetention = cfg.EtcdSnapshotRetention
|
||||
serverConfig.ControlConfig.Runtime.KubeConfigAdmin = filepath.Join(dataDir, "cred", "admin.kubeconfig")
|
||||
|
||||
ctx := signals.SetupSignalContext()
|
||||
e := etcd.NewETCD()
|
||||
|
|
Loading…
Reference in New Issue