From b538bc0f56f3b77a4a493f50196592f8f19218ee Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Tue, 6 Oct 2020 13:34:20 +0200 Subject: [PATCH 01/11] add extra args --- pkg/drivers/kic/kic.go | 2 +- pkg/drivers/kic/types.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/drivers/kic/kic.go b/pkg/drivers/kic/kic.go index 120d64a9b646..04bf3d46a506 100644 --- a/pkg/drivers/kic/kic.go +++ b/pkg/drivers/kic/kic.go @@ -78,7 +78,7 @@ func (d *Driver) Create() error { CPUs: strconv.Itoa(d.NodeConfig.CPU), Memory: strconv.Itoa(d.NodeConfig.Memory) + "mb", Envs: d.NodeConfig.Envs, - ExtraArgs: []string{"--expose", fmt.Sprintf("%d", d.NodeConfig.APIServerPort)}, + ExtraArgs: append([]string{"--expose", fmt.Sprintf("%d", d.NodeConfig.APIServerPort)}, d.NodeConfig.ExtraArgs...), OCIBinary: d.NodeConfig.OCIBinary, APIServerPort: d.NodeConfig.APIServerPort, } diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 42ec88749a44..e1b5ee0276db 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -60,5 +60,6 @@ type Config struct { PortMappings []oci.PortMapping // container port mappings Envs map[string]string // key,value of environment variables passed to the node KubernetesVersion string // Kubernetes version to install - ContainerRuntime string // container runtime kic is running + ContainerRuntime string // container runtime kic is running, + ExtraArgs []string // a list of any extra option to pass to oci binary during creation time, for example --expose 8080... } From dcf9dd10c64bf515174c67472a6a123c8093594e Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Tue, 6 Oct 2020 13:37:03 +0200 Subject: [PATCH 02/11] add docker-ports flag --- cmd/minikube/cmd/start_flags.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 4323b69d141f..1f27efdeafee 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -107,6 +107,7 @@ const ( forceSystemd = "force-systemd" kicBaseImage = "base-image" startOutput = "output" + dockerPorts = "docker-ports" ) // initMinikubeFlags includes commandline flags for minikube. @@ -197,6 +198,9 @@ func initDriverFlags() { startCmd.Flags().String(hypervVirtualSwitch, "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)") startCmd.Flags().Bool(hypervUseExternalSwitch, false, "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)") startCmd.Flags().String(hypervExternalAdapter, "", "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)") + + // docker + startCmd.Flags().StringSlice(dockerPorts, []string{}, "List of ports that should be exposed (docker driver only)") } // initNetworkingFlags inits the commandline flags for connectivity related flags for start @@ -311,6 +315,7 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k HostOnlyNicType: viper.GetString(hostOnlyNicType), NatNicType: viper.GetString(natNicType), StartHostTimeout: viper.GetDuration(waitTimeout), + DockerPorts: viper.GetStringSlice(dockerPorts), KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: k8sVersion, ClusterName: ClusterFlagValue(), @@ -547,6 +552,10 @@ func updateExistingConfigFromFlags(cmd *cobra.Command, existing *config.ClusterC cc.KubernetesConfig.NodePort = viper.GetInt(apiServerPort) } + if cmd.Flags().Changed(vsockPorts) { + cc.DockerPorts = viper.GetStringSlice(dockerPorts) + } + // pre minikube 1.9.2 cc.KubernetesConfig.NodePort was not populated. // in minikube config there were two fields for api server port. // one in cc.KubernetesConfig.NodePort and one in cc.Nodes.Port From e500d5b840abbebe0623095c6dba4c4cebf88f54 Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Tue, 6 Oct 2020 13:38:01 +0200 Subject: [PATCH 03/11] add DockerPorts to cluster config --- pkg/minikube/config/types.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index e2f5a66438f4..e4b6185c8a04 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -71,6 +71,7 @@ type ClusterConfig struct { Addons map[string]bool VerifyComponents map[string]bool // map of components to verify and wait for after start. StartHostTimeout time.Duration + DockerPorts []string // Only used by the docker driver } // KubernetesConfig contains the parameters used to configure the VM Kubernetes. From 902ca075571d447c72bb2ec76a9b2c0b66ccd9eb Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Tue, 6 Oct 2020 13:38:58 +0200 Subject: [PATCH 04/11] add -p flag to extra args in new driver --- pkg/minikube/registry/drvs/docker/docker.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index 98d961e1d23d..67463ae7bf32 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -60,6 +60,12 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { } } + extraArgs := []string{} + + for _, port := range cc.DockerPorts { + extraArgs = append(extraArgs, "-p", port) + } + return kic.NewDriver(kic.Config{ ClusterName: cc.Name, MachineName: driver.MachineName(cc, n), @@ -72,6 +78,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { APIServerPort: cc.Nodes[0].Port, KubernetesVersion: cc.KubernetesConfig.KubernetesVersion, ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, + ExtraArgs: extraArgs, }), nil } From e7e928b6494ac5feceffa565a37668fe114fc1be Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Tue, 6 Oct 2020 13:51:23 +0200 Subject: [PATCH 05/11] update docs --- site/content/en/docs/commands/start.md | 1 + 1 file changed, 1 insertion(+) diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index 87538fb59cc8..6363ce51bce8 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -39,6 +39,7 @@ minikube start [flags] --dns-proxy Enable proxy for NAT DNS requests (virtualbox driver only) --docker-env stringArray Environment variables to pass to the Docker daemon. (format: key=value) --docker-opt stringArray Specify arbitrary flags to pass to the Docker daemon. (format: key=value) + --docker-ports strings List of ports that should be exposed (docker driver only) --download-only If true, only download and cache files for later use - don't install or start anything. --driver string Used to specify the driver to run Kubernetes in. The list of available drivers depends on operating system. --dry-run dry-run mode. Validates configuration, but does not mutate system state From 50c37577fd65387bd5bc6fcb9f63ef2ac82e5282 Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Wed, 7 Oct 2020 18:08:08 +0200 Subject: [PATCH 06/11] update flag to ports --- cmd/minikube/cmd/start_flags.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 1f27efdeafee..c04ef01cfbbb 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -107,7 +107,7 @@ const ( forceSystemd = "force-systemd" kicBaseImage = "base-image" startOutput = "output" - dockerPorts = "docker-ports" + ports = "ports" ) // initMinikubeFlags includes commandline flags for minikube. @@ -199,8 +199,8 @@ func initDriverFlags() { startCmd.Flags().Bool(hypervUseExternalSwitch, false, "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)") startCmd.Flags().String(hypervExternalAdapter, "", "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)") - // docker - startCmd.Flags().StringSlice(dockerPorts, []string{}, "List of ports that should be exposed (docker driver only)") + // docker & podman + startCmd.Flags().StringSlice(ports, []string{}, "List of ports that should be exposed (docker and podman driver only)") } // initNetworkingFlags inits the commandline flags for connectivity related flags for start @@ -315,7 +315,7 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k HostOnlyNicType: viper.GetString(hostOnlyNicType), NatNicType: viper.GetString(natNicType), StartHostTimeout: viper.GetDuration(waitTimeout), - DockerPorts: viper.GetStringSlice(dockerPorts), + ExposedPorts: viper.GetStringSlice(ports), KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: k8sVersion, ClusterName: ClusterFlagValue(), @@ -553,7 +553,7 @@ func updateExistingConfigFromFlags(cmd *cobra.Command, existing *config.ClusterC } if cmd.Flags().Changed(vsockPorts) { - cc.DockerPorts = viper.GetStringSlice(dockerPorts) + cc.ExposedPorts = viper.GetStringSlice(ports) } // pre minikube 1.9.2 cc.KubernetesConfig.NodePort was not populated. From e66101d17488deca0c6c28b6bfbc9e1c7a7d0823 Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Wed, 7 Oct 2020 18:09:11 +0200 Subject: [PATCH 07/11] change dockerPorts to exposedPorts --- pkg/minikube/config/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index e4b6185c8a04..7f3e6033e212 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -71,7 +71,7 @@ type ClusterConfig struct { Addons map[string]bool VerifyComponents map[string]bool // map of components to verify and wait for after start. StartHostTimeout time.Duration - DockerPorts []string // Only used by the docker driver + ExposedPorts []string // Only used by the docker and podman driver } // KubernetesConfig contains the parameters used to configure the VM Kubernetes. From a20a177005e1700250d02aa7300a868ecf70bf5a Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Wed, 7 Oct 2020 18:10:07 +0200 Subject: [PATCH 08/11] pass docker and podman exposed ports to driver --- pkg/minikube/registry/drvs/docker/docker.go | 2 +- pkg/minikube/registry/drvs/podman/podman.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index 67463ae7bf32..d51b9347b4ab 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -62,7 +62,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { extraArgs := []string{} - for _, port := range cc.DockerPorts { + for _, port := range cc.ExposedPorts { extraArgs = append(extraArgs, "-p", port) } diff --git a/pkg/minikube/registry/drvs/podman/podman.go b/pkg/minikube/registry/drvs/podman/podman.go index fdf912f5e237..88f09930692e 100644 --- a/pkg/minikube/registry/drvs/podman/podman.go +++ b/pkg/minikube/registry/drvs/podman/podman.go @@ -72,6 +72,12 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { } } + extraArgs := []string{} + + for _, port := range cc.ExposedPorts { + extraArgs = append(extraArgs, "-p", port) + } + return kic.NewDriver(kic.Config{ ClusterName: cc.Name, MachineName: driver.MachineName(cc, n), @@ -84,6 +90,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { APIServerPort: cc.Nodes[0].Port, KubernetesVersion: cc.KubernetesConfig.KubernetesVersion, ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, + ExtraArgs: extraArgs, }), nil } From 78a1532408c0dd221fe5ff6a1a042dbb03d782ba Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Wed, 7 Oct 2020 18:17:13 +0200 Subject: [PATCH 09/11] update docs --- site/content/en/docs/commands/start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index 6363ce51bce8..5d23ddd5e72f 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -39,7 +39,6 @@ minikube start [flags] --dns-proxy Enable proxy for NAT DNS requests (virtualbox driver only) --docker-env stringArray Environment variables to pass to the Docker daemon. (format: key=value) --docker-opt stringArray Specify arbitrary flags to pass to the Docker daemon. (format: key=value) - --docker-ports strings List of ports that should be exposed (docker driver only) --download-only If true, only download and cache files for later use - don't install or start anything. --driver string Used to specify the driver to run Kubernetes in. The list of available drivers depends on operating system. --dry-run dry-run mode. Validates configuration, but does not mutate system state @@ -84,6 +83,7 @@ minikube start [flags] --no-vtx-check Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only) -n, --nodes int The number of nodes to spin up. Defaults to 1. (default 1) -o, --output string Format to print stdout in. Options include: [text,json] (default "text") + --ports strings List of ports that should be exposed (docker and podman driver only) --preload If set, download tarball of preloaded images if available to improve start time. Defaults to true. (default true) --registry-mirror strings Registry mirrors to pass to the Docker daemon --service-cluster-ip-range string The CIDR to be used for service cluster IPs. (default "10.96.0.0/12") From 96d7fc4bc0747eb80b13ea5498cc20a252b3d56c Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Wed, 7 Oct 2020 19:40:59 +0200 Subject: [PATCH 10/11] fix lint tabs --- cmd/minikube/cmd/start_flags.go | 2 +- pkg/minikube/config/types.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index c04ef01cfbbb..b9aa10e17284 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -315,7 +315,7 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k HostOnlyNicType: viper.GetString(hostOnlyNicType), NatNicType: viper.GetString(natNicType), StartHostTimeout: viper.GetDuration(waitTimeout), - ExposedPorts: viper.GetStringSlice(ports), + ExposedPorts: viper.GetStringSlice(ports), KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: k8sVersion, ClusterName: ClusterFlagValue(), diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index 7f3e6033e212..e56086b96007 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -71,7 +71,7 @@ type ClusterConfig struct { Addons map[string]bool VerifyComponents map[string]bool // map of components to verify and wait for after start. StartHostTimeout time.Duration - ExposedPorts []string // Only used by the docker and podman driver + ExposedPorts []string // Only used by the docker and podman driver } // KubernetesConfig contains the parameters used to configure the VM Kubernetes. From 61048eedbee8f424d7be432dbb17dbf20d75ad22 Mon Sep 17 00:00:00 2001 From: ToonvanStrijp Date: Wed, 7 Oct 2020 19:41:57 +0200 Subject: [PATCH 11/11] fix typo --- pkg/drivers/kic/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index e1b5ee0276db..78518a330bc9 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -60,6 +60,6 @@ type Config struct { PortMappings []oci.PortMapping // container port mappings Envs map[string]string // key,value of environment variables passed to the node KubernetesVersion string // Kubernetes version to install - ContainerRuntime string // container runtime kic is running, + ContainerRuntime string // container runtime kic is running ExtraArgs []string // a list of any extra option to pass to oci binary during creation time, for example --expose 8080... }