Merge pull request #13652 from hakman/upgrade_cluster_k8s-version

Allow overriding the kubernetes version when upgrading the cluster
This commit is contained in:
Kubernetes Prow Robot 2022-05-18 00:29:00 -07:00 committed by GitHub
commit 19aafca270
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 5 deletions

View File

@ -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 {
@ -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
}
@ -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
}

View File

@ -25,9 +25,10 @@ kops upgrade cluster [CLUSTER] [flags]
### Options
```
--channel string Channel to use for upgrade
-h, --help help for cluster
-y, --yes Apply update
--channel string Channel to use for upgrade
-h, --help help for cluster
--kubernetes-version string Kubernetes version to use for upgrade
-y, --yes Apply update
```
### Options inherited from parent commands

View File

@ -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.