kubeadm: skip addons phase on worker node

This commit is contained in:
SataQiu 2024-09-11 14:28:09 +08:00
parent f836773540
commit 036e072e41
6 changed files with 24 additions and 6 deletions

View File

@ -73,21 +73,26 @@ func shouldUpgradeAddons(client clientset.Interface, cfg *kubeadmapi.InitConfigu
return true, nil
}
func getInitData(c workflow.RunData) (*kubeadmapi.InitConfiguration, clientset.Interface, string, io.Writer, bool, error) {
func getInitData(c workflow.RunData) (*kubeadmapi.InitConfiguration, clientset.Interface, string, io.Writer, bool, bool, error) {
data, ok := c.(Data)
if !ok {
return nil, nil, "", nil, false, errors.New("addon phase invoked with an invalid data struct")
return nil, nil, "", nil, false, false, errors.New("addon phase invoked with an invalid data struct")
}
return data.InitCfg(), data.Client(), data.PatchesDir(), data.OutputWriter(), data.DryRun(), nil
return data.InitCfg(), data.Client(), data.PatchesDir(), data.OutputWriter(), data.DryRun(), data.IsControlPlaneNode(), nil
}
// runCoreDNSAddon upgrades the CoreDNS addon.
func runCoreDNSAddon(c workflow.RunData) error {
cfg, client, patchesDir, out, dryRun, err := getInitData(c)
cfg, client, patchesDir, out, dryRun, isControlPlaneNode, err := getInitData(c)
if err != nil {
return err
}
if !isControlPlaneNode {
fmt.Println("[upgrade/addon] Skipping addon/coredns phase. Not a control plane node.")
return nil
}
shouldUpgradeAddons, err := shouldUpgradeAddons(client, cfg, out)
if err != nil {
return err
@ -105,11 +110,16 @@ func runCoreDNSAddon(c workflow.RunData) error {
// runKubeProxyAddon upgrades the kube-proxy addon.
func runKubeProxyAddon(c workflow.RunData) error {
cfg, client, _, out, dryRun, err := getInitData(c)
cfg, client, _, out, dryRun, isControlPlaneNode, err := getInitData(c)
if err != nil {
return err
}
if !isControlPlaneNode {
fmt.Println("[upgrade/addon] Skipping addon/kube-proxy phase. Not a control plane node.")
return nil
}
shouldUpgradeAddons, err := shouldUpgradeAddons(client, cfg, out)
if err != nil {
return err

View File

@ -36,6 +36,7 @@ func (t *testData) RenewCerts() bool { return false }
func (t *testData) DryRun() bool { return false }
func (t *testData) Cfg() *kubeadmapi.UpgradeConfiguration { return nil }
func (t *testData) InitCfg() *kubeadmapi.InitConfiguration { return nil }
func (t *testData) IsControlPlaneNode() bool { return false }
func (t *testData) Client() clientset.Interface { return nil }
func (t *testData) IgnorePreflightErrors() sets.Set[string] { return nil }
func (t *testData) PatchesDir() string { return "" }

View File

@ -33,6 +33,7 @@ type Data interface {
DryRun() bool
Cfg() *kubeadmapi.UpgradeConfiguration
InitCfg() *kubeadmapi.InitConfiguration
IsControlPlaneNode() bool
Client() clientset.Interface
IgnorePreflightErrors() sets.Set[string]
PatchesDir() string

View File

@ -36,6 +36,7 @@ func (t *testData) RenewCerts() bool { return false }
func (t *testData) DryRun() bool { return false }
func (t *testData) Cfg() *kubeadmapi.UpgradeConfiguration { return nil }
func (t *testData) InitCfg() *kubeadmapi.InitConfiguration { return nil }
func (t *testData) IsControlPlaneNode() bool { return false }
func (t *testData) Client() clientset.Interface { return nil }
func (t *testData) IgnorePreflightErrors() sets.Set[string] { return nil }
func (t *testData) PatchesDir() string { return "" }

View File

@ -26,6 +26,5 @@ import (
type Data interface {
upgrade.Data
IsControlPlaneNode() bool
KubeConfigPath() string
}

View File

@ -351,3 +351,9 @@ func (d *applyData) AllowRCUpgrades() bool {
func (d *applyData) ForceUpgrade() bool {
return d.force
}
// IsControlPlaneNode returns if the node is a control-plane node.
func (d *applyData) IsControlPlaneNode() bool {
// `kubeadm upgrade apply` should always be executed on a control-plane node
return true
}