Skip to content

Commit

Permalink
Merge pull request #13652 from hakman/upgrade_cluster_k8s-version
Browse files Browse the repository at this point in the history
Allow overriding the kubernetes version when upgrading the cluster
  • Loading branch information
k8s-ci-robot committed May 18, 2022
2 parents 7a90131 + 90faa6b commit 19aafca
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
17 changes: 15 additions & 2 deletions cmd/kops/upgrade_cluster.go
Expand Up @@ -58,6 +58,8 @@ type UpgradeClusterOptions struct {
ClusterName string
Yes bool
Channel string
// KubernetesVersion is the k8s version to use for upgrade.
KubernetesVersion string
}

func NewCmdUpgradeCluster(f *util.Factory, out io.Writer) *cobra.Command {
Expand All @@ -80,6 +82,8 @@ func NewCmdUpgradeCluster(f *util.Factory, out io.Writer) *cobra.Command {
cmd.Flags().BoolVarP(&options.Yes, "yes", "y", false, "Apply update")
cmd.Flags().StringVar(&options.Channel, "channel", "", "Channel to use for upgrade")
cmd.RegisterFlagCompletionFunc("channel", completeChannel)
cmd.Flags().StringVar(&options.KubernetesVersion, "kubernetes-version", "", "Kubernetes version to use for upgrade")
cmd.RegisterFlagCompletionFunc("kubernetes-version", completeKubernetesVersion)

return cmd
}
Expand Down Expand Up @@ -149,12 +153,21 @@ func RunUpgradeCluster(ctx context.Context, f *util.Factory, out io.Writer, opti
}
}

proposedKubernetesVersion := kopsapi.RecommendedKubernetesVersion(channel, kops.Version)
var proposedKubernetesVersion *semver.Version
if options.KubernetesVersion != "" {
proposedKubernetesVersion, err = kopsutil.ParseKubernetesVersion(options.KubernetesVersion)
if err != nil {
klog.Warningf("error parsing KubernetesVersion %q", cluster.Spec.KubernetesVersion)
}
}
if proposedKubernetesVersion == nil {
proposedKubernetesVersion = kopsapi.RecommendedKubernetesVersion(channel, kops.Version)
}

// We won't propose a downgrade
// TODO: What if a kubernetes version is bad?
if currentKubernetesVersion != nil && proposedKubernetesVersion != nil && currentKubernetesVersion.GT(*proposedKubernetesVersion) {
klog.Warningf("cluster version %q is greater than recommended version %q", *currentKubernetesVersion, *proposedKubernetesVersion)
klog.Warningf("cluster version %q is greater than the desired version %q", *currentKubernetesVersion, *proposedKubernetesVersion)
proposedKubernetesVersion = currentKubernetesVersion
}

Expand Down
7 changes: 4 additions & 3 deletions docs/cli/kops_upgrade_cluster.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions docs/releases/1.24-NOTES.md
Expand Up @@ -25,6 +25,8 @@ kOps will directly manage the Karpenter Provisioner resources. Read more about h

* Adds support for Rocky Linux 8

* Adds support for overriding the Kubernetes version when upgrading a cluster by using the `--kubernetes-version` flag.

* The minimum version for the Terraform AWS Provider has been bumped to 4.0.0 to address the deprecation of the aws_s3_bucket_object resource and its replacement with the aws_s3_object resource. Such resources will be destroyed and recreated without downtime when applying the changes.

* ARM64 support for nvidia device driver. Nvidia nodes on ARM64 requires Ubuntu 22.04 AMIs.
Expand Down

0 comments on commit 19aafca

Please sign in to comment.