mirror of https://github.com/kubernetes/kops.git
Merge pull request #13652 from hakman/upgrade_cluster_k8s-version
Allow overriding the kubernetes version when upgrading the cluster
This commit is contained in:
commit
19aafca270
|
|
@ -58,6 +58,8 @@ type UpgradeClusterOptions struct {
|
||||||
ClusterName string
|
ClusterName string
|
||||||
Yes bool
|
Yes bool
|
||||||
Channel string
|
Channel string
|
||||||
|
// KubernetesVersion is the k8s version to use for upgrade.
|
||||||
|
KubernetesVersion string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCmdUpgradeCluster(f *util.Factory, out io.Writer) *cobra.Command {
|
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().BoolVarP(&options.Yes, "yes", "y", false, "Apply update")
|
||||||
cmd.Flags().StringVar(&options.Channel, "channel", "", "Channel to use for upgrade")
|
cmd.Flags().StringVar(&options.Channel, "channel", "", "Channel to use for upgrade")
|
||||||
cmd.RegisterFlagCompletionFunc("channel", completeChannel)
|
cmd.RegisterFlagCompletionFunc("channel", completeChannel)
|
||||||
|
cmd.Flags().StringVar(&options.KubernetesVersion, "kubernetes-version", "", "Kubernetes version to use for upgrade")
|
||||||
|
cmd.RegisterFlagCompletionFunc("kubernetes-version", completeKubernetesVersion)
|
||||||
|
|
||||||
return cmd
|
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
|
// We won't propose a downgrade
|
||||||
// TODO: What if a kubernetes version is bad?
|
// TODO: What if a kubernetes version is bad?
|
||||||
if currentKubernetesVersion != nil && proposedKubernetesVersion != nil && currentKubernetesVersion.GT(*proposedKubernetesVersion) {
|
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
|
proposedKubernetesVersion = currentKubernetesVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ kops upgrade cluster [CLUSTER] [flags]
|
||||||
```
|
```
|
||||||
--channel string Channel to use for upgrade
|
--channel string Channel to use for upgrade
|
||||||
-h, --help help for cluster
|
-h, --help help for cluster
|
||||||
|
--kubernetes-version string Kubernetes version to use for upgrade
|
||||||
-y, --yes Apply update
|
-y, --yes Apply update
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 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.
|
* 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.
|
* ARM64 support for nvidia device driver. Nvidia nodes on ARM64 requires Ubuntu 22.04 AMIs.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue