Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,7 @@ Bugs:
* Fix starting kvm2 clusters using Linux on arm64 Mac [#18239](https://github.com/kubernetes/minikube/pull/18239)
* Fix displaying error when deleting non-existing cluster [#17713](https://github.com/kubernetes/minikube/pull/17713)
* Fix no-limit not being respected on restart [#17598](https://github.com/kubernetes/minikube/pull/17598)
* Fix not applying `kubeadm.applyNodeLabels` label to nodes added after inital start [#16416](https://github.com/kubernetes/minikube/pull/16416)
* Fix not applying `kubeadm.applyNodeLabels` label to nodes added after initial start [#16416](https://github.com/kubernetes/minikube/pull/16416)
* Fix logs delimiter output [#17734](https://github.com/kubernetes/minikube/pull/17734)

Version Upgrades:
Expand Down Expand Up @@ -1268,7 +1268,7 @@ Features (Experimental):
* QEMU Driver: Add support for dedicated network on macOS (socket_vmnet) [#14989](https://github.com/kubernetes/minikube/pull/14989)
* QEMU Driver: Add support minikube service and tunnel on macOS [#14989](https://github.com/kubernetes/minikube/pull/14989)

Minor Imprevements:
Minor Improvements:
* Check if context is invalid during update-context command [#15032](https://github.com/kubernetes/minikube/pull/15032)
* Use SSH tunnel if user specifies bindAddress [#14951](https://github.com/kubernetes/minikube/pull/14951)
* Warn QEMU users if DNS issue detected [#15073](https://github.com/kubernetes/minikube/pull/15073)
Expand Down Expand Up @@ -1582,7 +1582,7 @@ Thank you to our triage members for this release!

## Version 1.26.0-beta.0 - 2022-05-13

Featues:
Features:
* Add support for the QEMU driver [#13639](https://github.com/kubernetes/minikube/pull/13639)
* Add support for building aarch64 ISO [#13762](https://github.com/kubernetes/minikube/pull/13762)
* Support rootless Podman driver (Usage: `minikube config set rootless true`) [#13829](https://github.com/kubernetes/minikube/pull/13829)
Expand Down Expand Up @@ -2348,7 +2348,7 @@ Bugs:

Version Upgrades:
* bump default k8s version to v1.20.7 and newest to v1.22.0-alpha.2 [#11525](https://github.com/kubernetes/minikube/pull/11525)
* containerd: upgrade `io.containerd.runtime.v1.linux` to `io.containerd.runc.v2` (suppot cgroup v2) [#11325](https://github.com/kubernetes/minikube/pull/11325)
* containerd: upgrade `io.containerd.runtime.v1.linux` to `io.containerd.runc.v2` (support cgroup v2) [#11325](https://github.com/kubernetes/minikube/pull/11325)
* metallb-addon: Update metallb from 0.8.2 to 0.9.6 [#11410](https://github.com/kubernetes/minikube/pull/11410)

For a more detailed changelog, including changes occurring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md).
Expand Down Expand Up @@ -2662,7 +2662,7 @@ Minor Improvements:
* disable minikube-scheduled-stop.service until a user schedules a stop [#10548](https://github.com/kubernetes/minikube/pull/10548)
* docker/podman: add crun for running on cgroups v2 [#10426](https://github.com/kubernetes/minikube/pull/10426)
* Specify mount point for cri-o config [#10528](https://github.com/kubernetes/minikube/pull/10528)
* Esnure addon integrity by adding Image SHA [#10527](https://github.com/kubernetes/minikube/pull/10527)
* Ensure addon integrity by adding Image SHA [#10527](https://github.com/kubernetes/minikube/pull/10527)
* improve kvm network delete/cleanup [#10479](https://github.com/kubernetes/minikube/pull/10479)
* docker/podman: avoid creating overlapping networks with other tools (KVM,...) [#10439](https://github.com/kubernetes/minikube/pull/10439)
* Improve insecure registry validation [#10493](https://github.com/kubernetes/minikube/pull/10493)
Expand Down Expand Up @@ -4976,7 +4976,7 @@ Thank you to the folks who contributed to this bugfix release:
* Include pod output in 'logs' command & display detected problems during start [#3673](https://github.com/kubernetes/minikube/pull/3673)
* Upgrade Docker, from 18.06.1-ce to 18.06.2-ce [#3666](https://github.com/kubernetes/minikube/pull/3666)
* Upgrade opencontainers/runc to 0a012df [#3669](https://github.com/kubernetes/minikube/pull/3669)
* Clearer output when re-using VM's so that users know what they are waiting on [#3659](https://github.com/kubernetes/minikube/pull/3659)
* Clearer output when reusing VM's so that users know what they are waiting on [#3659](https://github.com/kubernetes/minikube/pull/3659)
* Disable kubelet disk eviction by default [#3671](https://github.com/kubernetes/minikube/pull/3671)
* Run poweroff before delete, only call uninstall if driver is None [#3665](https://github.com/kubernetes/minikube/pull/3665)
* Add DeleteCluster to bootstrapper [#3656](https://github.com/kubernetes/minikube/pull/3656)
Expand Down
2 changes: 1 addition & 1 deletion cmd/minikube/cmd/dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ var dashboardCmd = &cobra.Command{
enabled := addon.IsEnabled(co.Config)

if !enabled {
// Send status messages to stderr for folks re-using this output.
// Send status messages to stderr for folks reusing this output.
out.ErrT(style.Enabling, "Enabling dashboard ...")
// Enable the dashboard add-on
err = addons.SetAndSave(cname, "dashboard", "true")
Expand Down
2 changes: 1 addition & 1 deletion cmd/minikube/cmd/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -647,7 +647,7 @@ func killProcess(path string) error {
return errors.New("multiple errors encountered while closing mount processes")
}

// if no errors were encoutered, it's safe to delete pidFile
// if no errors were encountered, it's safe to delete pidFile
if err := os.Remove(pidPath); err != nil {
return errors.Wrap(err, "while closing mount-pids file")
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/minikube/cmd/start_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -853,7 +853,7 @@ func TestValidateAutoPause(t *testing.T) {
t.Errorf("interval of %q failed validation; expected it to pass: %v", input, err)
}
if err == nil && tc.shouldError {
t.Errorf("interval of %q passed validataion; expected it to fail: %v", input, err)
t.Errorf("interval of %q passed validation; expected it to fail: %v", input, err)
}
}
}
2 changes: 1 addition & 1 deletion deploy/addons/inspektor-gadget/ig-deployment.yaml.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ rules:
- apiGroups: [""]
resources: ["services"]
# list is needed by network-policy gadget
# watch is needed by operators enriching with service informations
# watch is needed by operators enriching with service information
verbs: ["list", "watch"]
- apiGroups: ["gadget.kinvolk.io"]
resources: ["traces", "traces/status"]
Expand Down
2 changes: 1 addition & 1 deletion deploy/iso/minikube-iso/package/sysdig/sysdig.mk
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SYSDIG_DEPENDENCIES = \
zlib

# sysdig creates the module Makefile from a template, which contains a
# single place-holder, KBUILD_FLAGS, wich is only replaced with two
# single place-holder, KBUILD_FLAGS, which is only replaced with two
# things:
# - debug flags, which we don't care about here,
# - 'sysdig-feature' flags, which are never set, so always empty
Expand Down
4 changes: 2 additions & 2 deletions deploy/kicbase/entrypoint
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ validate_userns() {

overlayfs_preferrable() {
if [[ -z "$userns" ]]; then
# If we are outside userns, we can always assume overlayfs is preferrable
# If we are outside userns, we can always assume overlayfs is preferable
return 0
fi

Expand Down Expand Up @@ -107,7 +107,7 @@ configure_containerd() {
if [[ -n "$userns" ]]; then
# enable restrict_oom_score_adj
sed -i 's/restrict_oom_score_adj = false/restrict_oom_score_adj = true/' /etc/containerd/config.toml
# Use fuse-overlayfs if overlayfs is not preferrable: https://github.com/kubernetes-sigs/kind/issues/2275
# Use fuse-overlayfs if overlayfs is not preferable: https://github.com/kubernetes-sigs/kind/issues/2275
if [[ -z "$snapshotter" ]] && ! overlayfs_preferrable; then
snapshotter="fuse-overlayfs"
fi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Until now minikube has always been a local single node Kubernetes cluster. Havin

## Design Details

Since minikube was designed with only a single node cluster in mind, we need to make some fairly significant refactors, the biggest of which is the introduction of the Node object. Each cluster config will be able to have an abitrary number of Node objects, each of which will have attributes that can define it, similar to what [tstromberg proposed](https://github.com/kubernetes/minikube/pull/5874) but with better backwards compatibility with current config.
Since minikube was designed with only a single node cluster in mind, we need to make some fairly significant refactors, the biggest of which is the introduction of the Node object. Each cluster config will be able to have an arbitrary number of Node objects, each of which will have attributes that can define it, similar to what [tstromberg proposed](https://github.com/kubernetes/minikube/pull/5874) but with better backwards compatibility with current config.

Each node will correspond to one VM (or container) and will connect back to the primary control plane via `kubeadm join`.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ As a `keep-alive` implementation, tools will repeat the command to reset the clo

Advantages:

* Able to re-use all of the existing `pause` and `stop` implementation within minikube.
* Able to reuse all of the existing `pause` and `stop` implementation within minikube.
* Built-in handling for multiple architectures
* Does not consume memory reserved for the VM

Expand Down
2 changes: 1 addition & 1 deletion hack/jenkins/minikube_cross_build_and_upload.sh
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ cp -r test/integration/testdata out/
rm -rf out/buildroot

# At this point, the out directory contains the jenkins scripts (populated by jenkins),
# testdata, and our build output. Push the changes to GCS so that worker nodes can re-use them.
# testdata, and our build output. Push the changes to GCS so that worker nodes can reuse them.

# -d: delete remote files that don't exist (removed test files, for instance)
# -J: gzip compression
Expand Down
4 changes: 2 additions & 2 deletions hack/jenkins/release_build_and_upload.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ grep -E "^VERSION_MAJOR \\?=" Makefile | grep "${VERSION_MAJOR}"
grep -E "^VERSION_MINOR \\?=" Makefile | grep "${VERSION_MINOR}"
grep -E "^VERSION_BUILD \\?=" Makefile | grep "${VERSION_BUILD}"

# Force go packages to the Jekins home directory
# Force go packages to the Jenkins home directory
# export GOPATH=$HOME/go
./hack/jenkins/installers/check_install_golang.sh "/usr/local"

Expand Down Expand Up @@ -120,7 +120,7 @@ cp "out/minikube-${RPM_VERSION}-0.s390x.rpm" out/minikube-latest.s390x.rpm
echo "Generating tarballs for kicbase images"
# first get the correct tag of the kic base image
KIC_VERSION=$(grep -E "Version =" pkg/drivers/kic/types.go | cut -d \" -f 2 | cut -d "-" -f 1)
# then generate tarballs for all achitectures
# then generate tarballs for all architectures
for ARCH in "amd64" "arm64" "arm/v7" "ppc64le" "s390x"
do
SUFFIX=$(echo $ARCH | sed 's/\///g')
Expand Down
2 changes: 1 addition & 1 deletion hack/update/get_version/get_version.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ func main() {
os.Stdout.Write(submatches[1])
}

// some components have _ or - in their names vs their make folders, standarizing for automation such as as update-all
// some components have _ or - in their names vs their make folders, standardizing for automation such as as update-all
func standrizeComponentName(name string) string {
// Convert the component name to lowercase and replace underscores with hyphens
name = strings.ToLower(name)
Expand Down
2 changes: 1 addition & 1 deletion pkg/drivers/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ func parseDHCPdLeasesFile(file io.Reader) ([]DHCPEntry, error) {
return dhcpEntries, scanner.Err()
}

// parseMAC parse both standard fixeed size MAC address "%02x:..." and the
// parseMAC parse both standard fixed size MAC address "%02x:..." and the
// variable size MAC address on drawin "%x:...".
func parseMAC(mac string) (net.HardwareAddr, error) {
hw := make(net.HardwareAddr, 6)
Expand Down
4 changes: 2 additions & 2 deletions pkg/drivers/common/vmnet/vmnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func ValidateHelper() error {
out.ErrT(style.Indent, "To configure vment-helper to run without a password, please check the documentation:")
out.ErrT(style.Indent, "https://github.com/nirs/vmnet-helper/#granting-permission-to-run-vmnet-helper")

// Authenticate the user, updateing the user's cached credentials.
// Authenticate the user, updating the user's cached credentials.
cmd = exec.Command("sudo", executablePath, "--version")
stdout, err = cmd.Output()
if err != nil {
Expand All @@ -117,7 +117,7 @@ func ValidateHelper() error {
}

// Start the vmnet-helper child process, creating the vmnet interface for the
// machine. The helper will create a unix datagram socket at the specfied path.
// machine. The helper will create a unix datagram socket at the specified path.
// The client (e.g. vfkit) will connect to this socket.
func (h *Helper) Start(socketPath string) error {
args := []string{
Expand Down
2 changes: 1 addition & 1 deletion pkg/drivers/kic/kic.go
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,7 @@ func (d *Driver) Stop() error {

crMgr, err := cruntime.New(cruntime.Config{Type: d.NodeConfig.ContainerRuntime, Runner: d.exec})
if err != nil { // won't return error because:
// even though we can't stop the cotainers inside, we still wanna stop the minikube container itself
// even though we can't stop the containers inside, we still wanna stop the minikube container itself
klog.Errorf("unable to get container runtime: %v", err)
} else {
containers, err := crMgr.ListContainers(cruntime.ListContainersOptions{Namespaces: constants.DefaultNamespaces})
Expand Down
2 changes: 1 addition & 1 deletion pkg/drivers/kic/oci/oci.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ func CreateContainerNode(p CreateParams) error { //nolint to suppress cyclomatic
"--label", p.ClusterLabel,
// label the node with the role ID
"--label", fmt.Sprintf("%s=%s", nodeRoleLabelKey, p.Role),
// label th enode wuth the node ID
// label th enode with the node ID
"--label", p.NodeLabel,
}
// to provide a static IP
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/assets/addons_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func mapsEqual(a, b map[string]string) bool {

func TestParseMapString(t *testing.T) {
cases := map[string]map[string]string{
"Ardvark=1,B=2,Cantaloupe=3": {"Ardvark": "1", "B": "2", "Cantaloupe": "3"},
"Aardvark=1,B=2,Cantaloupe=3": {"Aardvark": "1", "B": "2", "Cantaloupe": "3"},
"A=,B=2,C=": {"A": "", "B": "2", "C": ""},
"": {},
"malformed,good=howdy,manyequals==,": {"good": "howdy"},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ func (e *ErrNetworkNotReady) Error() string {
return fmt.Sprintf(errTextFormat, e.Type, e.Reason, e.Message)
}

// NodePressure verfies that node is not under disk, memory, pid or network pressure.
// NodePressure verifies that node is not under disk, memory, pid or network pressure.
func NodePressure(cs *kubernetes.Clientset) error {
klog.Info("verifying NodePressure condition ...")
start := time.Now()
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/bootstrapper/kubeadm/kubeadm.go
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ func (k *Bootstrapper) WaitForNode(cfg config.ClusterConfig, n config.Node, time
return nil
}

// if extra waiting for system pods to be ready is required, we need node to be ready beforehands
// if extra waiting for system pods to be ready is required, we need node to be ready beforehand
if cfg.VerifyComponents[kverify.NodeReadyKey] || cfg.VerifyComponents[kverify.ExtraKey] {
name := bsutil.KubeNodeName(cfg, n)
if err := kverify.WaitNodeCondition(client, name, core.NodeReady, timeout); err != nil {
Expand Down
4 changes: 2 additions & 2 deletions pkg/minikube/command/command_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ type StartedCmd struct {
// Runner represents an interface to run commands.
type Runner interface {
// RunCmd runs a cmd of exec.Cmd type. allowing user to set cmd.Stdin, cmd.Stdout,...
// not all implementors are guaranteed to handle all the properties of cmd.
// not all implementers are guaranteed to handle all the properties of cmd.
RunCmd(cmd *exec.Cmd) (*RunResult, error)

// StartCmd starts a cmd of exec.Cmd type.
// This func in non-blocking, use WaitCmd to block until complete.
// Not all implementors are guaranteed to handle all the properties of cmd.
// Not all implementers are guaranteed to handle all the properties of cmd.
StartCmd(cmd *exec.Cmd) (*StartedCmd, error)

// WaitCmd will prevent further execution until the started command has completed.
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/command/exec_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ type execRunner struct {
sudo bool
}

// NewExecRunner returns a kicRunner implementor of runner which runs cmds inside a container
// NewExecRunner returns a kicRunner implementer of runner which runs cmds inside a container
func NewExecRunner(sudo bool) Runner {
return &execRunner{sudo: sudo}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/command/kic_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ type kicRunner struct {
ociBin string
}

// NewKICRunner returns a kicRunner implementor of runner which runs cmds inside a container
// NewKICRunner returns a kicRunner implementer of runner which runs cmds inside a container
func NewKICRunner(containerNameOrID string, ociName string) Runner {
return &kicRunner{
nameOrID: containerNameOrID,
Expand Down
6 changes: 3 additions & 3 deletions pkg/minikube/download/preload.go
Original file line number Diff line number Diff line change
Expand Up @@ -294,11 +294,11 @@ func CleanUpOlderPreloads() {
}

for _, file := range files {
splited := strings.Split(file.Name(), "-")
if len(splited) < 4 {
split := strings.Split(file.Name(), "-")
if len(split) < 4 {
continue
}
ver := splited[3]
ver := split[3]
if ver != PreloadVersion {
fn := path.Join(targetDir(), file.Name())
klog.Infof("deleting older generation preload %s", fn)
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/kubeconfig/extension.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type Extension struct {
LastUpdate string `json:"last-update"`
}

// NewExtension returns a minikube formatted kubeconfig's extension block to idenity clusters and contexts
// NewExtension returns a minikube formatted kubeconfig's extension block to identity clusters and contexts
func NewExtension() *Extension {
return &Extension{
Provider: "minikube.sigs.k8s.io",
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/machine/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func StartHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) (*
func engineOptions(cfg config.ClusterConfig) *engine.Options {
// get docker env from user's proxy settings
dockerEnv := proxy.SetDockerEnv()
// get docker env from user specifiec config
// get docker env from user specific config
dockerEnv = append(dockerEnv, cfg.DockerEnv...)

uniqueEnvs := util.RemoveDuplicateStrings(dockerEnv)
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ func Name(index int) string {

// ID returns the appropriate node id from the node name.
// ID of first (primary control-plane) node (with empty name) is 1, so next one would be "m02", etc.
// Eg, "m05" should return "5", regardles if any preceded nodes were deleted.
// Eg, "m05" should return "5", regardless if any preceded nodes were deleted.
func ID(name string) (int, error) {
if name == "" {
return 1, nil
Expand Down
4 changes: 2 additions & 2 deletions pkg/minikube/node/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ func Start(starter Starter) (*kubeconfig.Settings, error) { // nolint:gocyclo
if err != nil {
return nil, err
}
// configure CoreDNS concurently from primary control-plane node only and only on first node start
// configure CoreDNS concurrently from primary control-plane node only and only on first node start
if !starter.PreExists {
wg.Add(1)
go func() {
Expand Down Expand Up @@ -393,7 +393,7 @@ func Provision(cc *config.ClusterConfig, n *config.Node, delOnFail bool) (comman
beginCacheKubernetesImages(&cacheGroup, cc.KubernetesConfig.ImageRepository, n.KubernetesVersion, cc.KubernetesConfig.ContainerRuntime, cc.Driver)
}

// Abstraction leakage alert: startHost requires the config to be saved, to satistfy pkg/provision/buildroot.
// Abstraction leakage alert: startHost requires the config to be saved, to satisfy pkg/provision/buildroot.
// Hence, SaveProfile must be called before startHost, and again afterwards when we know the IP.
if err := config.SaveProfile(viper.GetString(config.ProfileName), cc); err != nil {
return nil, false, nil, nil, errors.Wrap(err, "Failed to save config")
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/out/out_style.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func applyStyle(st style.Enum, useColor bool, format string) (string, bool, bool
format = translate.T(format)

s, ok := style.Config[st]
// becaue of https://github.com/kubernetes/minikube/issues/21148
// because of https://github.com/kubernetes/minikube/issues/21148
// will handle making new lines with spinner library itself
if !s.ShouldSpin {
format += "\n"
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/out/out_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func TestStep(t *testing.T) {
{style.Fatal, "Fatal: {{.error}}", V{"error": "ugh"}, "💣 Fatal: ugh\n", "X Fatal: ugh\n"},
{style.Issue, "http://i/{{.number}}", V{"number": 10000}, " ▪ http://i/10000\n", " - http://i/10000\n"},
{style.Usage, "raw: {{.one}} {{.two}}", V{"one": "'%'", "two": "%d"}, "💡 raw: '%' %d\n", "* raw: '%' %d\n"},
// spining steps do not support being unit tested with fake file writer, since passing the fake writer to the spininer library is not testable.
// spinning steps do not support being unit tested with fake file writer, since passing the fake writer to the spininer library is not testable.
{style.Provisioning, "Installing Kubernetes version {{.version}} ...", V{"version": "v1.13"}, "🌱 ... v1.13 تثبيت Kubernetes الإصدار\n", "* ... v1.13 تثبيت Kubernetes الإصدار\n"},
}
for _, tc := range testCases {
Expand Down
Loading
Loading