1
0
mirror of https://github.com/rancher/rke.git synced 2025-09-25 14:48:06 +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", Name: "dind",
Usage: "Deploy Kubernetes cluster in docker containers (experimental)", 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{ cli.BoolFlag{
Name: "update-only", Name: "update-only",
Usage: "Skip idempotent deployment of control and etcd plane", 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 { func clusterUpDind(ctx *cli.Context) error {
// get dind config // get dind config
rkeConfig, disablePortCheck, err := getDindConfig(ctx) rkeConfig, disablePortCheck, dindStorageDriver, err := getDindConfig(ctx)
if err != nil { if err != nil {
return err return err
} }
// setup dind environment // setup dind environment
if err = createDINDEnv(context.Background(), rkeConfig); err != nil { if err = createDINDEnv(context.Background(), rkeConfig, dindStorageDriver); err != nil {
return err return err
} }
// start cluster // start cluster
@@ -235,22 +239,24 @@ func clusterUpDind(ctx *cli.Context) error {
return err 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") disablePortCheck := ctx.Bool("disable-port-check")
dindStorageDriver := ctx.String("dind-storage-driver")
clusterFile, filePath, err := resolveClusterFile(ctx) clusterFile, filePath, err := resolveClusterFile(ctx)
if err != nil { 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 clusterFilePath = filePath
rkeConfig, err := cluster.ParseConfig(clusterFile) rkeConfig, err := cluster.ParseConfig(clusterFile)
if err != nil { 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) rkeConfig, err = setOptionsFromCLI(ctx, rkeConfig)
if err != nil { if err != nil {
return nil, disablePortCheck, err return nil, disablePortCheck, "", err
} }
// Setting conntrack max for kubeproxy to 0 // Setting conntrack max for kubeproxy to 0
if rkeConfig.Services.Kubeproxy.ExtraArgs == nil { 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" 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 { 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 { if err != nil {
return err return err
} }

View File

@@ -19,7 +19,7 @@ const (
DINDSubnet = "172.18.0.0/16" 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() cli, err := client.NewEnvClient()
if err != nil { if err != nil {
return "", err return "", err
@@ -29,7 +29,11 @@ func StartUpDindContainer(ctx context.Context, dindAddress, dindNetwork string)
if err != nil { if err != nil {
return "", err return "", err
} }
storageDriver := dockerInfo.Driver storageDriver := dindStorageDriver
if len(storageDriver) == 0 {
storageDriver = dockerInfo.Driver
}
// Get dind container name // Get dind container name
containerName := fmt.Sprintf("%s-%s", DINDContainerPrefix, dindAddress) containerName := fmt.Sprintf("%s-%s", DINDContainerPrefix, dindAddress)
_, err = cli.ContainerInspect(ctx, containerName) _, err = cli.ContainerInspect(ctx, containerName)