From f4457649695274683b485ae9bdd69a9f01ee23e2 Mon Sep 17 00:00:00 2001 From: Paco Xu Date: Fri, 26 Aug 2022 19:18:42 +0800 Subject: [PATCH] fix a flag replace of container-runtime=remote --- cmd/kubeadm/app/phases/upgrade/postupgrade.go | 6 ++++-- .../app/phases/upgrade/postupgrade_test.go | 17 +++++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/cmd/kubeadm/app/phases/upgrade/postupgrade.go b/cmd/kubeadm/app/phases/upgrade/postupgrade.go index 313bcd1bf3e..8b03e18a063 100644 --- a/cmd/kubeadm/app/phases/upgrade/postupgrade.go +++ b/cmd/kubeadm/app/phases/upgrade/postupgrade.go @@ -279,7 +279,8 @@ func CleanupKubeletDynamicEnvFileContainerRuntime(dryRun bool) error { func cleanupKubeletDynamicEnvFileContainerRuntime(str string) string { const ( // `remote` is the only possible value - flag = "container-runtime" + containerRuntimeFlag = "container-runtime" + endpointFlag = "container-runtime-endpoint" ) // Trim the prefix str = strings.TrimLeft(str, fmt.Sprintf("%s=\"", kubeadmconstants.KubeletEnvFileVariableName)) @@ -289,7 +290,7 @@ func cleanupKubeletDynamicEnvFileContainerRuntime(str string) string { // its value to have the scheme prefix. split := strings.Split(str, " ") for i, s := range split { - if !strings.Contains(s, flag) { + if !(strings.Contains(s, containerRuntimeFlag) && !strings.Contains(s, endpointFlag)) { continue } keyValue := strings.Split(s, "=") @@ -309,6 +310,7 @@ func cleanupKubeletDynamicEnvFileContainerRuntime(str string) string { } continue } + // remove the flag and value in one split = append(split[:i], split[i+1:]...) } diff --git a/cmd/kubeadm/app/phases/upgrade/postupgrade_test.go b/cmd/kubeadm/app/phases/upgrade/postupgrade_test.go index f23fa7d8937..10ec6fe6d13 100644 --- a/cmd/kubeadm/app/phases/upgrade/postupgrade_test.go +++ b/cmd/kubeadm/app/phases/upgrade/postupgrade_test.go @@ -109,10 +109,15 @@ func TestCleanupKubeletDynamicEnvFileContainerRuntime(t *testing.T) { input string expected string }{ + { + name: "common flag", + input: fmt.Sprintf("%s=\"--container-runtime=remote --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --pod-infra-container-image=registry.k8s.io/pause:3.8\"", constants.KubeletEnvFileVariableName), + expected: fmt.Sprintf("%s=\"--container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --pod-infra-container-image=registry.k8s.io/pause:3.8\"", constants.KubeletEnvFileVariableName), + }, { name: "missing flag of interest", - input: fmt.Sprintf("%s=\"--foo=abc --bar=def\"", constants.KubeletEnvFileVariableName), - expected: fmt.Sprintf("%s=\"--foo=abc --bar=def\"", constants.KubeletEnvFileVariableName), + input: fmt.Sprintf("%s=\"--foo=abc --bar=def --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock\"", constants.KubeletEnvFileVariableName), + expected: fmt.Sprintf("%s=\"--foo=abc --bar=def --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock\"", constants.KubeletEnvFileVariableName), }, { name: "add missing URL scheme", @@ -121,13 +126,13 @@ func TestCleanupKubeletDynamicEnvFileContainerRuntime(t *testing.T) { }, { name: "add missing URL scheme if there is no '=' after the flag name", - input: fmt.Sprintf("%s=\"--foo=abc --container-runtime remote --bar=def\"", constants.KubeletEnvFileVariableName), - expected: fmt.Sprintf("%s=\"--foo=abc --bar=def\"", constants.KubeletEnvFileVariableName), + input: fmt.Sprintf("%s=\"--foo=abc --container-runtime remote --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --bar=def\"", constants.KubeletEnvFileVariableName), + expected: fmt.Sprintf("%s=\"--foo=abc --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --bar=def\"", constants.KubeletEnvFileVariableName), }, { name: "empty flag of interest value following '='", - input: fmt.Sprintf("%s=\"--foo=abc --container-runtime= --bar=def\"", constants.KubeletEnvFileVariableName), - expected: fmt.Sprintf("%s=\"--foo=abc --bar=def\"", constants.KubeletEnvFileVariableName), + input: fmt.Sprintf("%s=\"--foo=abc --container-runtime= --container-runtime-endpoint unix:///var/run/containerd/containerd.sock --bar=def\"", constants.KubeletEnvFileVariableName), + expected: fmt.Sprintf("%s=\"--foo=abc --container-runtime-endpoint unix:///var/run/containerd/containerd.sock --bar=def\"", constants.KubeletEnvFileVariableName), }, { name: "empty flag of interest value without '='",