From 5505504d89351038bacc0a97e9a999967b96dfed Mon Sep 17 00:00:00 2001 From: Artiom Diomin Date: Sat, 22 Jan 2022 18:31:38 +0200 Subject: [PATCH 1/3] Configure proxy in environment even on cluster updates Signed-off-by: Artiom Diomin --- pkg/scripts/kubeadm.go | 10 ++++++---- pkg/scripts/kubeadm_test.go | 15 ++++++++++++--- pkg/scripts/os.go | 1 - pkg/scripts/proxy.go | 26 ++++++++++---------------- pkg/scripts/proxy_test.go | 4 ++-- pkg/scripts/render.go | 11 ----------- pkg/tasks/kubeadm_upgrade.go | 13 +++++++++---- pkg/tasks/prerequisites.go | 22 ++++++++++++++++------ pkg/tasks/upgrade_follower.go | 6 +++++- pkg/tasks/upgrade_leader.go | 6 +++++- pkg/tasks/upgrade_static_workers.go | 4 ++++ 11 files changed, 69 insertions(+), 49 deletions(-) diff --git a/pkg/scripts/kubeadm.go b/pkg/scripts/kubeadm.go index 64eeb7a2f..26c88113a 100644 --- a/pkg/scripts/kubeadm.go +++ b/pkg/scripts/kubeadm.go @@ -57,8 +57,8 @@ var ( sudo rm -rf /etc/kubeone `) - kubeadmUpgradeLeaderScriptTemplate = heredoc.Doc(` - sudo {{ .KUBEADM_UPGRADE }} --config={{ .WORK_DIR }}/cfg/master_0.yaml + kubeadmUpgradeScriptTemplate = heredoc.Doc(` + sudo {{ .KUBEADM_UPGRADE }}{{ if .LEADER }} --config={{ .WORK_DIR }}/cfg/master_{{ .NODE_ID }}.yaml{{ end }} `) kubeadmPauseImageVersionScriptTemplate = heredoc.Doc(` @@ -110,10 +110,12 @@ func KubeadmReset(verboseFlag, workdir string) (string, error) { }) } -func KubeadmUpgradeLeader(kubeadmCmd, workdir string) (string, error) { - return Render(kubeadmUpgradeLeaderScriptTemplate, map[string]interface{}{ +func KubeadmUpgrade(kubeadmCmd, workdir string, leader bool, nodeID int) (string, error) { + return Render(kubeadmUpgradeScriptTemplate, map[string]interface{}{ "KUBEADM_UPGRADE": kubeadmCmd, "WORK_DIR": workdir, + "NODE_ID": nodeID, + "LEADER": leader, }) } diff --git a/pkg/scripts/kubeadm_test.go b/pkg/scripts/kubeadm_test.go index 4d73e857a..71a771148 100644 --- a/pkg/scripts/kubeadm_test.go +++ b/pkg/scripts/kubeadm_test.go @@ -245,12 +245,13 @@ func TestKubeadmReset(t *testing.T) { } } -func TestKubeadmUpgradeLeader(t *testing.T) { +func TestKubeadmUpgrade(t *testing.T) { t.Parallel() type args struct { kubeadmCmd string workdir string + leader bool } tests := []struct { name string @@ -261,7 +262,15 @@ func TestKubeadmUpgradeLeader(t *testing.T) { name: "v1beta2", args: args{ workdir: "test-wd", - kubeadmCmd: "kubeadm upgrade node --certificate-renewal=true", + kubeadmCmd: "kubeadm upgrade node", + }, + }, + { + name: "leader", + args: args{ + workdir: "some", + kubeadmCmd: "kubeadm upgrade apply -y --certificate-renewal=true v1.1.1", + leader: true, }, }, } @@ -269,7 +278,7 @@ func TestKubeadmUpgradeLeader(t *testing.T) { for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - got, err := KubeadmUpgradeLeader(tt.args.kubeadmCmd, tt.args.workdir) + got, err := KubeadmUpgrade(tt.args.kubeadmCmd, tt.args.workdir, tt.args.leader, 0) if err != tt.err { t.Errorf("KubeadmUpgradeLeader() error = %v, wantErr %v", err, tt.err) return diff --git a/pkg/scripts/os.go b/pkg/scripts/os.go index f417b30ad..961f053e4 100644 --- a/pkg/scripts/os.go +++ b/pkg/scripts/os.go @@ -34,7 +34,6 @@ var migrateToContainerdScriptTemplate = heredoc.Doc(` sudo docker ps -qa | xargs sudo docker rm || true {{ template "container-runtime-daemon-config" . }} - {{ template "containerd-systemd-environment" . }} {{ if .IS_FLATCAR -}} {{ template "flatcar-systemd-drop-in" . }} {{ end -}} diff --git a/pkg/scripts/proxy.go b/pkg/scripts/proxy.go index 507d74f3a..2b69860d0 100644 --- a/pkg/scripts/proxy.go +++ b/pkg/scripts/proxy.go @@ -21,22 +21,14 @@ import ( ) const ( - daemonsProxyScript = ` -sudo mkdir -p /etc/systemd/system/docker.service.d -cat </dev/null; then sudo systemctl restart docker; fi -if sudo systemctl status kubelet &>/dev/null; then sudo systemctl restart kubelet; fi +{{ end }} ` environmentFileCmd = ` @@ -77,6 +69,8 @@ func EnvironmentFile(cluster *kubeone.KubeOneCluster) (string, error) { }) } -func DaemonsProxy() (string, error) { - return Render(daemonsProxyScript, nil) +func DaemonsEnvironmentDropIn(daemons ...string) (string, error) { + return Render(daemonsEnvironmentScriptTemplate, Data{ + "SYSTEMD_SERVICES": daemons, + }) } diff --git a/pkg/scripts/proxy_test.go b/pkg/scripts/proxy_test.go index 3da357547..d960b0d27 100644 --- a/pkg/scripts/proxy_test.go +++ b/pkg/scripts/proxy_test.go @@ -81,10 +81,10 @@ func TestEnvironmentFile(t *testing.T) { } } -func TestDaemonsProxy(t *testing.T) { +func TestTestDaemonsProxy(t *testing.T) { t.Parallel() - got, err := DaemonsProxy() + got, err := DaemonsEnvironmentDropIn("docker", "containerd", "kubelet") if err != nil { t.Errorf("DaemonsProxy() error = %v", err) return diff --git a/pkg/scripts/render.go b/pkg/scripts/render.go index 8a9fbf3ee..8cf2938b4 100644 --- a/pkg/scripts/render.go +++ b/pkg/scripts/render.go @@ -44,17 +44,7 @@ var ( {{- end }} `), - "containerd-systemd-environment": heredoc.Doc(` - sudo mkdir -p /etc/systemd/system/containerd.service.d - cat < Date: Sat, 22 Jan 2022 18:33:20 +0200 Subject: [PATCH 2/3] Update fixtures Signed-off-by: Artiom Diomin --- .../testdata/TestKubeadmAmazonLinux-force.golden | 7 ------- ...estKubeadmAmazonLinux-overwrite_registry.golden | 7 ------- ...mAmazonLinux-overwrite_registry_insecure.golden | 7 ------- .../testdata/TestKubeadmAmazonLinux-proxy.golden | 7 ------- .../testdata/TestKubeadmAmazonLinux-simple.golden | 7 ------- .../testdata/TestKubeadmAmazonLinux-v1.16.1.golden | 7 ------- .../TestKubeadmAmazonLinux-with_containerd.golden | 7 ------- ...x-with_containerd_with_insecure_registry.golden | 7 ------- .../testdata/TestKubeadmCentOS-force.golden | 7 ------- .../TestKubeadmCentOS-overwrite_registry.golden | 7 ------- ...ubeadmCentOS-overwrite_registry_insecure.golden | 7 ------- .../testdata/TestKubeadmCentOS-proxy.golden | 7 ------- .../testdata/TestKubeadmCentOS-simple.golden | 7 ------- .../testdata/TestKubeadmCentOS-v1.16.1.golden | 7 ------- .../TestKubeadmCentOS-with_containerd.golden | 7 ------- ...S-with_containerd_with_insecure_registry.golden | 7 ------- .../TestKubeadmDebian-overwrite_registry.golden | 7 ------- ...ubeadmDebian-overwrite_registry_insecure.golden | 7 ------- .../testdata/TestKubeadmDebian-simple.golden | 7 ------- .../TestKubeadmDebian-with_containerd.golden | 7 ------- ...n-with_containerd_with_insecure_registry.golden | 7 ------- .../testdata/TestKubeadmFlatcar-force.golden | 7 ------- .../TestKubeadmFlatcar-overwrite_registry.golden | 7 ------- ...beadmFlatcar-overwrite_registry_insecure.golden | 7 ------- .../testdata/TestKubeadmFlatcar-simple.golden | 7 ------- .../TestKubeadmFlatcar-with_containerd.golden | 7 ------- .../testdata/TestKubeadmUpgrade-leader.golden | 3 +++ .../testdata/TestKubeadmUpgrade-v1beta2.golden | 3 +++ .../TestKubeadmUpgradeLeader-v1beta2.golden | 3 --- .../TestMigrateToContainerd-flatcar.golden | 14 -------------- ...TestMigrateToContainerd-insecureRegistry.golden | 14 -------------- .../testdata/TestMigrateToContainerd-simple.golden | 14 -------------- ...onsProxy.golden => TestTestDaemonsProxy.golden} | 13 ++++++++----- .../TestUpgradeKubeadmAndCNIAmazonLinux.golden | 7 ------- .../testdata/TestUpgradeKubeadmAndCNICentOS.golden | 7 ------- .../testdata/TestUpgradeKubeadmAndCNIDebian.golden | 7 ------- .../TestUpgradeKubeletAndKubectlAmazonLinux.golden | 7 ------- .../TestUpgradeKubeletAndKubectlCentOS.golden | 7 ------- .../TestUpgradeKubeletAndKubectlDebian.golden | 7 ------- 39 files changed, 14 insertions(+), 274 deletions(-) create mode 100644 pkg/scripts/testdata/TestKubeadmUpgrade-leader.golden create mode 100644 pkg/scripts/testdata/TestKubeadmUpgrade-v1beta2.golden delete mode 100644 pkg/scripts/testdata/TestKubeadmUpgradeLeader-v1beta2.golden rename pkg/scripts/testdata/{TestDaemonsProxy.golden => TestTestDaemonsProxy.golden} (55%) diff --git a/pkg/scripts/testdata/TestKubeadmAmazonLinux-force.golden b/pkg/scripts/testdata/TestKubeadmAmazonLinux-force.golden index 74bd5b150..7563ccc62 100644 --- a/pkg/scripts/testdata/TestKubeadmAmazonLinux-force.golden +++ b/pkg/scripts/testdata/TestKubeadmAmazonLinux-force.golden @@ -96,13 +96,6 @@ cat </dev/null; then sudo systemctl restart docker; fi -if sudo systemctl status kubelet &>/dev/null; then sudo systemctl restart kubelet; fi diff --git a/pkg/scripts/testdata/TestUpgradeKubeadmAndCNIAmazonLinux.golden b/pkg/scripts/testdata/TestUpgradeKubeadmAndCNIAmazonLinux.golden index 6ccc9dd6c..a534b93c1 100644 --- a/pkg/scripts/testdata/TestUpgradeKubeadmAndCNIAmazonLinux.golden +++ b/pkg/scripts/testdata/TestUpgradeKubeadmAndCNIAmazonLinux.golden @@ -96,13 +96,6 @@ cat < Date: Sat, 22 Jan 2022 19:21:37 +0200 Subject: [PATCH 3/3] Restart systemd services after changing their Environment Signed-off-by: Artiom Diomin --- pkg/scripts/proxy.go | 8 ++++++-- pkg/scripts/testdata/TestTestDaemonsProxy.golden | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/scripts/proxy.go b/pkg/scripts/proxy.go index 2b69860d0..2cdc31f88 100644 --- a/pkg/scripts/proxy.go +++ b/pkg/scripts/proxy.go @@ -29,9 +29,13 @@ cat </dev/null; then sudo systemctl restart {{ . }}; fi +{{- end }} ` - environmentFileCmd = ` + environmentFileScriptTemplate = ` sudo mkdir -p /etc/kubeone cat </dev/null; then sudo systemctl restart docker; fi +if sudo systemctl status containerd &>/dev/null; then sudo systemctl restart containerd; fi +if sudo systemctl status kubelet &>/dev/null; then sudo systemctl restart kubelet; fi