diff --git a/pkg/cli/cmds/server.go b/pkg/cli/cmds/server.go index 27e62f0c20..e372162270 100644 --- a/pkg/cli/cmds/server.go +++ b/pkg/cli/cmds/server.go @@ -23,6 +23,7 @@ type Server struct { ExtraSchedulerArgs cli.StringSlice ExtraControllerArgs cli.StringSlice Rootless bool + StorageEndpoint string } var ServerConfig Server @@ -137,6 +138,12 @@ func NewServerCommand(action func(*cli.Context) error) cli.Command { Usage: "(experimental) Run rootless", Destination: &ServerConfig.Rootless, }, + cli.StringFlag{ + Name: "storage-endpoint", + Usage: "Specify Mysql, Postgres, or Sqlite (default) data source name", + Destination: &ServerConfig.StorageEndpoint, + EnvVar: "K3S_STORAGE_ENDPOINT", + }, NodeIPFlag, NodeNameFlag, DockerFlag, diff --git a/pkg/cli/server/server.go b/pkg/cli/server/server.go index 0b7b26a423..02adf5a153 100644 --- a/pkg/cli/server/server.go +++ b/pkg/cli/server/server.go @@ -24,7 +24,9 @@ import ( "k8s.io/apimachinery/pkg/util/net" "k8s.io/kubernetes/pkg/volume/csi" - _ "github.com/mattn/go-sqlite3" // ensure we have sqlite + _ "github.com/go-sql-driver/mysql" // ensure we have mysql + _ "github.com/lib/pq" // ensure we have postgres + _ "github.com/mattn/go-sqlite3" // ensure we have sqlite ) func setupLogging(app *cli.Context) { @@ -101,6 +103,7 @@ func run(app *cli.Context, cfg *cmds.Server) error { serverConfig.ControlConfig.ExtraControllerArgs = cfg.ExtraControllerArgs serverConfig.ControlConfig.ExtraSchedulerAPIArgs = cfg.ExtraSchedulerArgs serverConfig.ControlConfig.ClusterDomain = cfg.ClusterDomain + serverConfig.ControlConfig.StorageEndpoint = cfg.StorageEndpoint _, serverConfig.ControlConfig.ClusterIPRange, err = net2.ParseCIDR(cfg.ClusterCIDR) if err != nil { diff --git a/pkg/daemons/config/types.go b/pkg/daemons/config/types.go index 48829ad48e..c3b1dceaa7 100644 --- a/pkg/daemons/config/types.go +++ b/pkg/daemons/config/types.go @@ -70,10 +70,7 @@ type Control struct { KubeConfigMode string DataDir string Skips []string - ETCDEndpoints []string - ETCDKeyFile string - ETCDCertFile string - ETCDCAFile string + StorageEndpoint string NoScheduler bool ExtraAPIArgs []string ExtraControllerArgs []string diff --git a/pkg/daemons/control/server.go b/pkg/daemons/control/server.go index a3f349ec69..2e3df351a9 100644 --- a/pkg/daemons/control/server.go +++ b/pkg/daemons/control/server.go @@ -146,18 +146,8 @@ func scheduler(cfg *config.Control, runtime *config.ControlRuntime) { func apiServer(ctx context.Context, cfg *config.Control, runtime *config.ControlRuntime) (authenticator.Request, http.Handler, error) { argsMap := make(map[string]string) - if len(cfg.ETCDEndpoints) > 0 { - argsMap["storage-backend"] = "etcd3" - argsMap["etcd-servers"] = strings.Join(cfg.ETCDEndpoints, ",") - if cfg.ETCDKeyFile != "" { - argsMap["etcd-keyfile"] = cfg.ETCDKeyFile - } - if cfg.ETCDCAFile != "" { - argsMap["etcd-cafile"] = cfg.ETCDCAFile - } - if cfg.ETCDCertFile != "" { - argsMap["etcd-certfile"] = cfg.ETCDCertFile - } + if len(cfg.StorageEndpoint) > 0 { + argsMap["etcd-servers"] = cfg.StorageEndpoint } certDir := filepath.Join(cfg.DataDir, "tls/temporary-certs")