1
0
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:
galal-hussein
2018-09-11 01:17:45 +02:00
committed by Alena Prokharchyk
parent 22a339ea33
commit a55b9a6ae0
2 changed files with 21 additions and 11 deletions

View File

@@ -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
}

View File

@@ -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)