Skip to content

Commit 8420b09

Browse files
committed
kubeadm: refactor upgrade to reduce duplication code
1 parent 8db2dd3 commit 8420b09

File tree

13 files changed

+102
-312
lines changed

13 files changed

+102
-312
lines changed

cmd/kubeadm/app/cmd/phases/upgrade/node/addons.go renamed to cmd/kubeadm/app/cmd/phases/upgrade/addons.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
// Package node implements phases of 'kubeadm upgrade node'.
18-
package node
17+
// Package upgrade holds the common phases for 'kubeadm upgrade'.
18+
package upgrade
1919

2020
import (
2121
"fmt"
@@ -28,7 +28,6 @@ import (
2828
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
2929
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
3030
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow"
31-
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
3231
dnsaddon "k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns"
3332
proxyaddon "k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/proxy"
3433
"k8s.io/kubernetes/cmd/kubeadm/app/phases/upgrade"
@@ -39,7 +38,6 @@ func NewAddonPhase() workflow.Phase {
3938
return workflow.Phase{
4039
Name: "addon",
4140
Short: "Upgrade the default kubeadm addons",
42-
Long: cmdutil.MacroCommandLongDescription,
4341
Phases: []workflow.Phase{
4442
{
4543
Name: "all",
@@ -98,7 +96,6 @@ func runCoreDNSAddon(c workflow.RunData) error {
9896
return nil
9997
}
10098

101-
// Upgrade CoreDNS
10299
if err := dnsaddon.EnsureDNSAddon(&cfg.ClusterConfiguration, client, patchesDir, out, dryRun); err != nil {
103100
return err
104101
}
@@ -121,7 +118,6 @@ func runKubeProxyAddon(c workflow.RunData) error {
121118
return nil
122119
}
123120

124-
// Upgrade kube-proxy
125121
if err := proxyaddon.EnsureProxyAddon(&cfg.ClusterConfiguration, &cfg.LocalAPIEndpoint, client, out, dryRun); err != nil {
126122
return err
127123
}

cmd/kubeadm/app/cmd/phases/upgrade/apply/addons.go

Lines changed: 0 additions & 144 deletions
This file was deleted.

cmd/kubeadm/app/cmd/phases/upgrade/apply/data.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,14 @@ limitations under the License.
1818
package apply
1919

2020
import (
21-
"io"
22-
23-
"k8s.io/apimachinery/pkg/util/sets"
24-
clientset "k8s.io/client-go/kubernetes"
25-
26-
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
21+
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/upgrade"
2722
)
2823

2924
// Data is the interface to use for kubeadm upgrade apply phases.
3025
// The "applyData" type from "cmd/upgrade/apply.go" must satisfy this interface.
3126
type Data interface {
32-
EtcdUpgrade() bool
33-
RenewCerts() bool
34-
DryRun() bool
35-
Cfg() *kubeadmapi.UpgradeConfiguration
36-
InitCfg() *kubeadmapi.InitConfiguration
37-
Client() clientset.Interface
38-
IgnorePreflightErrors() sets.Set[string]
39-
PatchesDir() string
40-
OutputWriter() io.Writer
27+
upgrade.Data
28+
4129
SessionIsInteractive() bool
4230
AllowExperimentalUpgrades() bool
4331
AllowRCUpgrades() bool

cmd/kubeadm/app/cmd/phases/upgrade/apply/uploadconfig.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
2929
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
3030
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow"
31-
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
3231
kubeletphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/kubelet"
3332
patchnodephase "k8s.io/kubernetes/cmd/kubeadm/app/phases/patchnode"
3433
"k8s.io/kubernetes/cmd/kubeadm/app/phases/uploadconfig"
@@ -40,7 +39,6 @@ func NewUploadConfigPhase() workflow.Phase {
4039
Name: "upload-config",
4140
Aliases: []string{"uploadconfig"},
4241
Short: "Upload the kubeadm and kubelet configurations to ConfigMaps",
43-
Long: cmdutil.MacroCommandLongDescription,
4442
Phases: []workflow.Phase{
4543
{
4644
Name: "all",
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
Copyright 2024 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
// Package upgrade holds the common phases for 'kubeadm upgrade'.
18+
package upgrade
19+
20+
import (
21+
"io"
22+
23+
"k8s.io/apimachinery/pkg/util/sets"
24+
clientset "k8s.io/client-go/kubernetes"
25+
26+
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
27+
)
28+
29+
// Data is the common interface to use for kubeadm upgrade phases.
30+
type Data interface {
31+
EtcdUpgrade() bool
32+
RenewCerts() bool
33+
DryRun() bool
34+
Cfg() *kubeadmapi.UpgradeConfiguration
35+
InitCfg() *kubeadmapi.InitConfiguration
36+
Client() clientset.Interface
37+
IgnorePreflightErrors() sets.Set[string]
38+
PatchesDir() string
39+
OutputWriter() io.Writer
40+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
Copyright 2024 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package upgrade
18+
19+
import (
20+
"io"
21+
22+
"k8s.io/apimachinery/pkg/util/sets"
23+
clientset "k8s.io/client-go/kubernetes"
24+
25+
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
26+
)
27+
28+
// a package local type for testing purposes.
29+
type testData struct{}
30+
31+
// testData must satisfy Data.
32+
var _ Data = &testData{}
33+
34+
func (t *testData) EtcdUpgrade() bool { return false }
35+
func (t *testData) RenewCerts() bool { return false }
36+
func (t *testData) DryRun() bool { return false }
37+
func (t *testData) Cfg() *kubeadmapi.UpgradeConfiguration { return nil }
38+
func (t *testData) InitCfg() *kubeadmapi.InitConfiguration { return nil }
39+
func (t *testData) Client() clientset.Interface { return nil }
40+
func (t *testData) IgnorePreflightErrors() sets.Set[string] { return nil }
41+
func (t *testData) PatchesDir() string { return "" }
42+
func (t *testData) OutputWriter() io.Writer { return nil }

cmd/kubeadm/app/cmd/phases/upgrade/apply/kubeletconfig.go renamed to cmd/kubeadm/app/cmd/phases/upgrade/kubeletconfig.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
// Package apply implements phases of 'kubeadm upgrade apply'.
18-
package apply
17+
// Package upgrade holds the common phases for 'kubeadm upgrade'.
18+
package upgrade
1919

2020
import (
2121
"fmt"

cmd/kubeadm/app/cmd/phases/upgrade/node/data.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,14 @@ limitations under the License.
1818
package node
1919

2020
import (
21-
"io"
22-
23-
"k8s.io/apimachinery/pkg/util/sets"
24-
clientset "k8s.io/client-go/kubernetes"
25-
26-
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
21+
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/upgrade"
2722
)
2823

2924
// Data is the interface to use for kubeadm upgrade node phases.
3025
// The "nodeData" type from "cmd/upgrade/node.go" must satisfy this interface.
3126
type Data interface {
32-
EtcdUpgrade() bool
33-
RenewCerts() bool
34-
DryRun() bool
35-
Cfg() *kubeadmapi.UpgradeConfiguration
36-
InitCfg() *kubeadmapi.InitConfiguration
27+
upgrade.Data
28+
3729
IsControlPlaneNode() bool
38-
Client() clientset.Interface
39-
IgnorePreflightErrors() sets.Set[string]
40-
PatchesDir() string
4130
KubeConfigPath() string
42-
OutputWriter() io.Writer
4331
}

0 commit comments

Comments
 (0)