mirror of
https://github.com/rancher/rke.git
synced 2025-09-25 06:33:56 +00:00
Add option for dind storage driver
This commit is contained in:
committed by
Alena Prokharchyk
parent
22a339ea33
commit
a55b9a6ae0
24
cmd/up.go
24
cmd/up.go
@@ -37,6 +37,10 @@ func UpCommand() cli.Command {
|
||||
Name: "dind",
|
||||
Usage: "Deploy Kubernetes cluster in docker containers (experimental)",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "dind-storage-driver",
|
||||
Usage: "Storage driver for the docker in docker containers (experimental)",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "update-only",
|
||||
Usage: "Skip idempotent deployment of control and etcd plane",
|
||||
@@ -222,12 +226,12 @@ func clusterUpLocal(ctx *cli.Context) error {
|
||||
|
||||
func clusterUpDind(ctx *cli.Context) error {
|
||||
// get dind config
|
||||
rkeConfig, disablePortCheck, err := getDindConfig(ctx)
|
||||
rkeConfig, disablePortCheck, dindStorageDriver, err := getDindConfig(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// setup dind environment
|
||||
if err = createDINDEnv(context.Background(), rkeConfig); err != nil {
|
||||
if err = createDINDEnv(context.Background(), rkeConfig, dindStorageDriver); err != nil {
|
||||
return err
|
||||
}
|
||||
// start cluster
|
||||
@@ -235,22 +239,24 @@ func clusterUpDind(ctx *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func getDindConfig(ctx *cli.Context) (*v3.RancherKubernetesEngineConfig, bool, error) {
|
||||
func getDindConfig(ctx *cli.Context) (*v3.RancherKubernetesEngineConfig, bool, string, error) {
|
||||
disablePortCheck := ctx.Bool("disable-port-check")
|
||||
dindStorageDriver := ctx.String("dind-storage-driver")
|
||||
|
||||
clusterFile, filePath, err := resolveClusterFile(ctx)
|
||||
if err != nil {
|
||||
return nil, disablePortCheck, fmt.Errorf("Failed to resolve cluster file: %v", err)
|
||||
return nil, disablePortCheck, "", fmt.Errorf("Failed to resolve cluster file: %v", err)
|
||||
}
|
||||
clusterFilePath = filePath
|
||||
|
||||
rkeConfig, err := cluster.ParseConfig(clusterFile)
|
||||
if err != nil {
|
||||
return nil, disablePortCheck, fmt.Errorf("Failed to parse cluster file: %v", err)
|
||||
return nil, disablePortCheck, "", fmt.Errorf("Failed to parse cluster file: %v", err)
|
||||
}
|
||||
|
||||
rkeConfig, err = setOptionsFromCLI(ctx, rkeConfig)
|
||||
if err != nil {
|
||||
return nil, disablePortCheck, err
|
||||
return nil, disablePortCheck, "", err
|
||||
}
|
||||
// Setting conntrack max for kubeproxy to 0
|
||||
if rkeConfig.Services.Kubeproxy.ExtraArgs == nil {
|
||||
@@ -258,12 +264,12 @@ func getDindConfig(ctx *cli.Context) (*v3.RancherKubernetesEngineConfig, bool, e
|
||||
}
|
||||
rkeConfig.Services.Kubeproxy.ExtraArgs["conntrack-max-per-core"] = "0"
|
||||
|
||||
return rkeConfig, disablePortCheck, nil
|
||||
return rkeConfig, disablePortCheck, dindStorageDriver, nil
|
||||
}
|
||||
|
||||
func createDINDEnv(ctx context.Context, rkeConfig *v3.RancherKubernetesEngineConfig) error {
|
||||
func createDINDEnv(ctx context.Context, rkeConfig *v3.RancherKubernetesEngineConfig, dindStorageDriver string) error {
|
||||
for i := range rkeConfig.Nodes {
|
||||
address, err := dind.StartUpDindContainer(ctx, rkeConfig.Nodes[i].Address, dind.DINDNetwork)
|
||||
address, err := dind.StartUpDindContainer(ctx, rkeConfig.Nodes[i].Address, dind.DINDNetwork, dindStorageDriver)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ const (
|
||||
DINDSubnet = "172.18.0.0/16"
|
||||
)
|
||||
|
||||
func StartUpDindContainer(ctx context.Context, dindAddress, dindNetwork string) (string, error) {
|
||||
func StartUpDindContainer(ctx context.Context, dindAddress, dindNetwork, dindStorageDriver string) (string, error) {
|
||||
cli, err := client.NewEnvClient()
|
||||
if err != nil {
|
||||
return "", err
|
||||
@@ -29,7 +29,11 @@ func StartUpDindContainer(ctx context.Context, dindAddress, dindNetwork string)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
storageDriver := dockerInfo.Driver
|
||||
storageDriver := dindStorageDriver
|
||||
if len(storageDriver) == 0 {
|
||||
storageDriver = dockerInfo.Driver
|
||||
}
|
||||
|
||||
// Get dind container name
|
||||
containerName := fmt.Sprintf("%s-%s", DINDContainerPrefix, dindAddress)
|
||||
_, err = cli.ContainerInspect(ctx, containerName)
|
||||
|
Reference in New Issue
Block a user