Skip to content

Commit 6a3ab90

Browse files
Add support for new force parameter when updating cluster version
1 parent 1149e37 commit 6a3ab90

File tree

9 files changed

+52
-18
lines changed

9 files changed

+52
-18
lines changed

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,18 @@ require (
1313
github.com/aws/aws-sdk-go-v2/config v1.29.9
1414
github.com/aws/aws-sdk-go-v2/credentials v1.17.62
1515
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.52.1
16-
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.58.1
16+
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.59.0
1717
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.48.2
1818
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.47.1
1919
github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.51.3
2020
github.com/aws/aws-sdk-go-v2/service/ec2 v1.210.1
21-
github.com/aws/aws-sdk-go-v2/service/eks v1.60.1
21+
github.com/aws/aws-sdk-go-v2/service/eks v1.62.0
2222
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.29.1
2323
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.45.0
24-
github.com/aws/aws-sdk-go-v2/service/iam v1.40.2
24+
github.com/aws/aws-sdk-go-v2/service/iam v1.41.0
2525
github.com/aws/aws-sdk-go-v2/service/kms v1.38.1
2626
github.com/aws/aws-sdk-go-v2/service/outposts v1.49.1
27-
github.com/aws/aws-sdk-go-v2/service/ssm v1.57.2
27+
github.com/aws/aws-sdk-go-v2/service/ssm v1.58.0
2828
github.com/aws/aws-sdk-go-v2/service/sts v1.33.17
2929
github.com/aws/smithy-go v1.22.3
3030
github.com/awslabs/amazon-eks-ami/nodeadm v0.0.0-20250219002025-c3b5cd3d2fd9

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.33 h1:/frG8aV09yhCVSOEC2pzktflJJO
126126
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.33/go.mod h1:8vwASlAcV366M+qxZnjNzCjeastk1Rt1bpSRaGZanGU=
127127
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.52.1 h1:wj4AION3NjQvjOiI8wm+TVU8y+8EsTl7fSgJAzk9cgc=
128128
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.52.1/go.mod h1:CDqMoc3KRdZJ8qziW96J35lKH01Wq3B2aihtHj2JbRs=
129-
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.58.1 h1:Kk1jz6swm4FxpCjyhwQnvrEeODn08KhhvkSPFr82Tl0=
130-
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.58.1/go.mod h1:penaZKzGmqHGZId4EUCBIW/f9l4Y7hQ5NKd45yoCYuI=
129+
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.59.0 h1:5ToD3Yv6arXLYk3GZZHVjGX4rqWdfWldh3/CkPX6JPA=
130+
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.59.0/go.mod h1:penaZKzGmqHGZId4EUCBIW/f9l4Y7hQ5NKd45yoCYuI=
131131
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.48.2 h1:kkug2EBxwHbzlH9HeaAD2UsvZiOcelcJk4QNObUgsKg=
132132
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.48.2/go.mod h1:/BibEr5ksr34abqBTQN213GrNG6GCKCB6WG7CH4zH2w=
133133
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.47.1 h1:IKznEkCo7L8VHkQ3tC1e50F1eudenoQ7BTHJhMOswtE=
@@ -136,16 +136,16 @@ github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.51.3 h1:4U9dpQZT
136136
github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.51.3/go.mod h1:ygltZT++6Wn2uG4+tqE0NW1MkdEtb5W2O/CFc0xJX/g=
137137
github.com/aws/aws-sdk-go-v2/service/ec2 v1.210.1 h1:+4A9SDduLZFlDeXWRmfQ6r8kyEJZQfK6lcg+KwdvWrI=
138138
github.com/aws/aws-sdk-go-v2/service/ec2 v1.210.1/go.mod h1:ouvGEfHbLaIlWwpDpOVWPWR+YwO0HDv3vm5tYLq8ImY=
139-
github.com/aws/aws-sdk-go-v2/service/eks v1.60.1 h1:Q5YEz2N233+N2rKuPF5qO0OR0qp69BnukHRmrnMjV0c=
140-
github.com/aws/aws-sdk-go-v2/service/eks v1.60.1/go.mod h1:v1xXy6ea0PHtWkjFUvAUh6B/5wv7UF909Nru0dOIJDk=
139+
github.com/aws/aws-sdk-go-v2/service/eks v1.62.0 h1:C34T6802LL0PkMKAxHjVBavgDO299Eib/nMIYGU6938=
140+
github.com/aws/aws-sdk-go-v2/service/eks v1.62.0/go.mod h1:v1xXy6ea0PHtWkjFUvAUh6B/5wv7UF909Nru0dOIJDk=
141141
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.29.1 h1:HR2oZpKU1TDGGfLA0XgM3TGnapcjPKc5PEqAdMIinzU=
142142
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.29.1/go.mod h1:H232HdqVlSUoqy0cMJYW1TKjcxvGFGFZ20xQG8fOAPw=
143143
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.45.0 h1:RB7V8wT9ypjE/YJVBgKjoydTOh4IFoqceGiKxFH70mY=
144144
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.45.0/go.mod h1:xnCC3vFBfOKpU6PcsCKL2ktgBTZfOwTGxj6V8/X3IS4=
145145
github.com/aws/aws-sdk-go-v2/service/eventbridge v1.36.12 h1:uH6GOnGSvVN9MCk6o3+HvZFpdqL7AzJKNOTM/6l+3/s=
146146
github.com/aws/aws-sdk-go-v2/service/eventbridge v1.36.12/go.mod h1:6qtp53AQg7KEeYrsp430PNlmVVO9qK0Xw8nddE1y+ow=
147-
github.com/aws/aws-sdk-go-v2/service/iam v1.40.2 h1:F1hBvOiplp6lHg5clau/reqayZT+K5EBXkFRNrHF+To=
148-
github.com/aws/aws-sdk-go-v2/service/iam v1.40.2/go.mod h1:mPJkGQzeCoPs82ElNILor2JzZgYENr4UaSKUT8K27+c=
147+
github.com/aws/aws-sdk-go-v2/service/iam v1.41.0 h1:YvQjxKmA7fNnmphNBQ05PGGsYGYWBi9yWfuXBTKVdPs=
148+
github.com/aws/aws-sdk-go-v2/service/iam v1.41.0/go.mod h1:mPJkGQzeCoPs82ElNILor2JzZgYENr4UaSKUT8K27+c=
149149
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE=
150150
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA=
151151
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.1 h1:7SuukGpyIgF5EiAbf1dZRxP+xSnY1WjiHBjL08fjJeE=
@@ -166,8 +166,8 @@ github.com/aws/aws-sdk-go-v2/service/s3 v1.77.1 h1:5bI9tJL2Z0FGFtp/LPDv0eyliFBHC
166166
github.com/aws/aws-sdk-go-v2/service/s3 v1.77.1/go.mod h1:njj3tSJONkfdLt4y6X8pyqeM6sJLNZxmzctKKV+n1GM=
167167
github.com/aws/aws-sdk-go-v2/service/sqs v1.37.15 h1:KRXf9/NWjoRgj2WJbX13GNjBPQ1SxUYLnIfXTz08mWs=
168168
github.com/aws/aws-sdk-go-v2/service/sqs v1.37.15/go.mod h1:1CY54O4jz8BzgH2d6KyrzKWr2bAoqKsqUv2YZUGwMLE=
169-
github.com/aws/aws-sdk-go-v2/service/ssm v1.57.2 h1:3//q1r7gW/kpiWiPfFILw+N81rangyyMJV6vrznFyvw=
170-
github.com/aws/aws-sdk-go-v2/service/ssm v1.57.2/go.mod h1:PUWUl5MDiYNQkUHN9Pyd9kgtA/YhbxnSnHP+yQqzrM8=
169+
github.com/aws/aws-sdk-go-v2/service/ssm v1.58.0 h1:zQz6Q5uaC8s9734DV9UDAm2q1TEEfOvEejDBSulOapI=
170+
github.com/aws/aws-sdk-go-v2/service/ssm v1.58.0/go.mod h1:PUWUl5MDiYNQkUHN9Pyd9kgtA/YhbxnSnHP+yQqzrM8=
171171
github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 h1:8JdC7Gr9NROg1Rusk25IcZeTO59zLxsKgE0gkh5O6h0=
172172
github.com/aws/aws-sdk-go-v2/service/sso v1.25.1/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI=
173173
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 h1:KwuLovgQPcdjNMfFt9OhUd9a2OwcOKhxfvF4glTzLuA=

pkg/ami/ssm_resolver_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,9 @@ var _ = Describe("AMI Auto Resolution", func() {
715715
for _, amiType := range eksAMIType.Values() {
716716
if amiType == ekstypes.AMITypesCustom || strings.HasPrefix(string(amiType), "WINDOWS_") ||
717717
// TODO: remove this condition after adding support for AL2023 Nvidia and Neuron AMI types.
718-
amiType == ekstypes.AMITypesAl2023X8664Nvidia || amiType == ekstypes.AMITypesAl2023X8664Neuron {
718+
amiType == ekstypes.AMITypesAl2023X8664Nvidia || amiType == ekstypes.AMITypesAl2023X8664Neuron ||
719+
// TODO: remove this condition after support for Bottlerocket FIPS AMI types.
720+
amiType == ekstypes.AMITypesBottlerocketArm64Fips || amiType == ekstypes.AMITypesBottlerocketX8664Fips {
719721
continue
720722
}
721723
ssmParameterName := MakeManagedSSMParameterName(api.Version1_31, amiType)

pkg/apis/eksctl.io/v1alpha5/assets/schema.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,11 @@
805805
"x-intellij-html-description": "arbitrary metadata ignored by <code>eksctl</code>.",
806806
"default": "{}"
807807
},
808+
"forceUpdateVersion": {
809+
"type": "boolean",
810+
"description": "When updating cluster version, provide the force flag to override upgrade-blocking insights",
811+
"x-intellij-html-description": "When updating cluster version, provide the force flag to override upgrade-blocking insights"
812+
},
808813
"name": {
809814
"type": "string",
810815
"description": "of the cluster",
@@ -834,6 +839,7 @@
834839
"name",
835840
"region",
836841
"version",
842+
"forceUpdateVersion",
837843
"tags",
838844
"annotations"
839845
],

pkg/apis/eksctl.io/v1alpha5/types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -647,6 +647,9 @@ type ClusterMeta struct {
647647
// Version use `./eksctl utils describe-cluster-versions` to get the list of supported versions
648648
// +optional
649649
Version string `json:"version,omitempty"`
650+
// When updating cluster version, provide the force flag to override upgrade-blocking insights
651+
// +optional
652+
ForceUpdateVersion *bool `json:"forceUpdateVersion,omitempty"`
650653
// Tags are used to tag AWS resources created by eksctl
651654
// +optional
652655
Tags map[string]string `json:"tags,omitempty"`

pkg/awsapi/cloudformation.go

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/ctl/upgrade/cluster.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ func upgradeClusterWithRunFunc(cmd *cmdutils.Cmd, runFunc func(cmd *cmdutils.Cmd
3333

3434
cmdutils.AddCommonFlagsForAWS(cmd, &cmd.ProviderConfig, false)
3535

36+
var force bool
3637
cmd.FlagSetGroup.InFlagSet("General", func(fs *pflag.FlagSet) {
3738
fs.StringVarP(&cfg.Metadata.Name, "name", "n", "", "EKS cluster name")
3839
cmdutils.AddRegionFlag(fs, &cmd.ProviderConfig)
3940
cmdutils.AddVersionFlag(fs, cfg.Metadata, "")
41+
fs.BoolVar(&force, "force", false, "Override upgrade-blocking readiness checks")
4042
cmdutils.AddConfigFileFlag(fs, &cmd.ClusterConfigFile)
4143

4244
// cmdutils.AddVersionFlag(fs, cfg.Metadata, `"next" and "latest" can be used to automatically increment version by one, or force latest`)
@@ -52,6 +54,11 @@ func upgradeClusterWithRunFunc(cmd *cmdutils.Cmd, runFunc func(cmd *cmdutils.Cmd
5254
if err := cmdutils.NewMetadataLoader(cmd).Load(); err != nil {
5355
return err
5456
}
57+
// Override force from provided config file if cli flag is provided
58+
if force {
59+
cmd.ClusterConfig.Metadata.ForceUpdateVersion = &force
60+
}
61+
5562
return runFunc(cmd)
5663
}
5764
}

pkg/ctl/upgrade/cluster_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ var _ = Describe("upgrade cluster", func() {
4242
Expect(err).NotTo(HaveOccurred())
4343
})
4444

45+
It("should accept the --force flag", func() {
46+
cmd := newMockUpgradeClusterCmd("cluster", "--name", "clus-1", "--region", "eu-north-1", "--version", "1.16", "--force")
47+
_, err := cmd.Execute()
48+
Expect(err).NotTo(HaveOccurred())
49+
})
50+
4551
It("accepts --approve flag", func() {
4652
cmd := newMockUpgradeClusterCmd("cluster", "--name", "clus-1", "--approve")
4753
_, err := cmd.Execute()
@@ -102,6 +108,13 @@ var _ = Describe("upgrade cluster", func() {
102108
Expect(err).NotTo(HaveOccurred())
103109
})
104110

111+
It("accepts --force flag with the config file", func() {
112+
configFile = ctltest.CreateConfigFile(cfg)
113+
cmd := newMockUpgradeClusterCmd("cluster", "--config-file", configFile, "--force")
114+
_, err := cmd.Execute()
115+
Expect(err).NotTo(HaveOccurred())
116+
})
117+
105118
It("accepts --approve flag with the config file", func() {
106119
configFile = ctltest.CreateConfigFile(cfg)
107120
cmd := newMockUpgradeClusterCmd("cluster", "--config-file", configFile, "--approve")

pkg/eks/update.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,9 @@ func (c *ClusterProvider) UpdateClusterVersion(ctx context.Context, cfg *api.Clu
233233
Name: &cfg.Metadata.Name,
234234
Version: &cfg.Metadata.Version,
235235
}
236+
if cfg.Metadata.ForceUpdateVersion != nil {
237+
input.Force = *cfg.Metadata.ForceUpdateVersion
238+
}
236239
output, err := c.AWSProvider.EKS().UpdateClusterVersion(ctx, input)
237240
if err != nil {
238241
return nil, err

0 commit comments

Comments
 (0)