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:
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",
|
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
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
||||||
|
Reference in New Issue
Block a user