Skip to content

Commit

Permalink
feat(platform): add label value for frontend (#946)
Browse files Browse the repository at this point in the history
  • Loading branch information
Leo Ryu committed Nov 27, 2020
1 parent 7dcd2c5 commit fc7c820
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 17 deletions.
24 changes: 16 additions & 8 deletions pkg/platform/provider/baremetal/cluster/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ import (
"github.com/thoas/go-funk"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/selection"
certutil "k8s.io/client-go/util/cert"
platformv1 "tkestack.io/tke/api/platform/v1"
"tkestack.io/tke/pkg/platform/provider/baremetal/constants"
Expand Down Expand Up @@ -141,8 +143,12 @@ func (p *Provider) EnsurePreClusterUpgradeHook(ctx context.Context, c *v1.Cluste

func (p *Provider) EnsureUpgradeControlPlaneNode(ctx context.Context, c *v1.Cluster) error {
// check all machines are upgraded before upgrade cluster
requirement, err := labels.NewRequirement(constants.LabelNodeNeedUpgrade, selection.Exists, []string{})
if err != nil {
return err
}
machines, err := p.platformClient.Machines().List(context.TODO(), metav1.ListOptions{
LabelSelector: fields.OneTermEqualSelector(constants.LabelNodeNeedUpgrade, "").String(),
LabelSelector: requirement.String(),
FieldSelector: fields.OneTermEqualSelector(platformv1.MachineClusterField, c.Name).String(),
})
if err != nil {
Expand Down Expand Up @@ -180,15 +186,17 @@ func (p *Provider) EnsureUpgradeControlPlaneNode(ctx context.Context, c *v1.Clus
}

if i == len(c.Spec.Machines)-1 && upgraded {
if err := kubeadm.AddNeedUpgradeLabel(p.platformClient, c.Name); err != nil {
var labelValue string
if c.Spec.Features.Upgrade.Mode == platformv1.UpgradeModeAuto {
// set willUpgrade value to all worker node when upgraded all master nodes and upgrade mode is auto.
labelValue = kubeadm.WillUpgrade
}
if err := kubeadm.AddNeedUpgradeLabel(p.platformClient, c.Name, labelValue); err != nil {
return err
}
// Label next node when upgraded all master nodes and upgrade mode is auto.
if c.Spec.Features.Upgrade.Mode == platformv1.UpgradeModeAuto {
err = kubeadm.MarkNextUpgradeWorkerNode(client, p.platformClient, option.Version, c.Name)
if err != nil {
return err
}
err = kubeadm.MarkNextUpgradeWorkerNode(client, p.platformClient, option.Version, c.Name)
if err != nil {
return err
}
}
}
Expand Down
9 changes: 3 additions & 6 deletions pkg/platform/provider/baremetal/machine/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,9 @@ func (p *Provider) EnsureUpgrade(ctx context.Context, machine *platformv1.Machin
return err
}

// Label next node when upgraded current nodes and upgrade mode is auto.
if cluster.Spec.Features.Upgrade.Mode == platformv1.UpgradeModeAuto {
err = kubeadm.MarkNextUpgradeWorkerNode(clientset, p.platformClient, option.Version, cluster.Name)
if err != nil {
return err
}
err = kubeadm.MarkNextUpgradeWorkerNode(clientset, p.platformClient, option.Version, cluster.Name)
if err != nil {
return err
}

return nil
Expand Down
9 changes: 6 additions & 3 deletions pkg/platform/provider/baremetal/phases/kubeadm/kubeadm.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ const (
initCmd = `kubeadm init phase {{.Phase}} --config={{.Config}}`
joinCmd = `kubeadm join phase {{.Phase}} --config={{.Config}}`
resetCmd = `kubeadm reset phase {{.Phase}}`
// WillUpgrade is value of label platform.tkestack.io/need-upgrade
// machines with this value will upgrade it's node automatically one by one
WillUpgrade = "willUpgrade"
)

var (
Expand Down Expand Up @@ -587,7 +590,7 @@ func uncordonNode(s ssh.Interface, nodeName string) error {
// markNextUpgradeWorkerNode marks next wokrer node to be upgraded.
func MarkNextUpgradeWorkerNode(client kubernetes.Interface, platformClient platformv1client.PlatformV1Interface, version, clusterName string) error {
machines, err := platformClient.Machines().List(context.TODO(), metav1.ListOptions{
LabelSelector: fields.OneTermEqualSelector(constants.LabelNodeNeedUpgrade, "").String(),
LabelSelector: fields.OneTermEqualSelector(constants.LabelNodeNeedUpgrade, WillUpgrade).String(),
FieldSelector: fields.OneTermEqualSelector(platformv1.MachineClusterField, clusterName).String(),
})
if err != nil {
Expand Down Expand Up @@ -628,7 +631,7 @@ func RemoveUpgradeLabel(platformClient platformv1client.PlatformV1Interface, mac
return err
}

func AddNeedUpgradeLabel(platformClient platformv1client.PlatformV1Interface, clusterName string) error {
func AddNeedUpgradeLabel(platformClient platformv1client.PlatformV1Interface, clusterName, labelValue string) error {
machines, err := platformClient.Machines().List(context.TODO(), metav1.ListOptions{
FieldSelector: fields.OneTermEqualSelector(platformv1.MachineClusterField, clusterName).String(),
})
Expand All @@ -640,7 +643,7 @@ func AddNeedUpgradeLabel(platformClient platformv1client.PlatformV1Interface, cl
if machine.Labels == nil {
machine.Labels = make(map[string]string)
}
machine.Labels[constants.LabelNodeNeedUpgrade] = ""
machine.Labels[constants.LabelNodeNeedUpgrade] = labelValue
})
if err != nil {
return err
Expand Down

0 comments on commit fc7c820

Please sign in to comment.