Skip to content

Commit 90fa760

Browse files
Make update kube-proxy not use minimal images for >= 1.34 (#8557)
1 parent 9284e4d commit 90fa760

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed

pkg/addons/default/kube_proxy.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818

1919
"github.com/weaveworks/eksctl/pkg/kubernetes"
2020
"github.com/weaveworks/eksctl/pkg/printers"
21+
eksctlversion "github.com/weaveworks/eksctl/pkg/utils/version"
2122
)
2223

2324
const (
@@ -157,22 +158,31 @@ func getLatestImageVersionFromEKS(ctx context.Context, addonDescriber AddonVersi
157158
return versions[j].LessThan(versions[i])
158159
})
159160

160-
return toMinimalVersion(versions[0]), nil
161+
return toMinimalVersion(versions[0], controlPlaneMajorMinor)
161162
}
162163

163-
func toMinimalVersion(v *version.Version) string {
164+
func toMinimalVersion(v *version.Version, controlPlaneMajorMinor string) (string, error) {
164165
preRelease := v.Prerelease()
165166
if preRelease == "" {
166-
return v.Original()
167+
return v.Original(), nil
167168
}
169+
// Kube-proxy stopped publishing minimal versions after 1.34+.
170+
supported, err := eksctlversion.IsMinVersion("1.34", controlPlaneMajorMinor)
171+
if err != nil {
172+
return "", err
173+
}
174+
if supported {
175+
return v.Original(), nil
176+
}
177+
168178
const versionPrefix = "v"
169179
var tagPrefix string
170180
if strings.HasPrefix(v.Original(), versionPrefix) {
171181
tagPrefix = versionPrefix
172182
}
173183

174184
minimalBuildTag := fmt.Sprintf("%s%s-minimal-%s", tagPrefix, v.Core(), preRelease)
175-
return minimalBuildTag
185+
return minimalBuildTag, nil
176186
}
177187

178188
func versionWithOnlyMajorAndMinor(v string) (string, error) {

pkg/addons/default/kube_proxy_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,44 @@ var _ = Describe("KubeProxy", func() {
251251
})
252252
})
253253

254+
When("version 1.34 and above is used", func() {
255+
BeforeEach(func() {
256+
mockProvider.MockEKS().On("DescribeAddonVersions", mock.Anything, &awseks.DescribeAddonVersionsInput{
257+
AddonName: aws.String("kube-proxy"),
258+
KubernetesVersion: aws.String("1.34"),
259+
}).Return(&awseks.DescribeAddonVersionsOutput{
260+
Addons: []ekstypes.AddonInfo{
261+
{
262+
AddonName: aws.String("kube-proxy"),
263+
AddonVersions: []ekstypes.AddonVersionInfo{
264+
{
265+
AddonVersion: aws.String("v1.34.0-eksbuild.1"),
266+
},
267+
{
268+
// Latest, unordered list to ensure we sort correctly
269+
AddonVersion: aws.String("v1.34.1-eksbuild.2"),
270+
},
271+
{
272+
AddonVersion: aws.String("v1.34.1-eksbuild.1"),
273+
},
274+
},
275+
},
276+
},
277+
}, nil)
278+
input.ControlPlaneVersion = "1.34.1"
279+
})
280+
281+
It("does not use minimal container image", func() {
282+
input134 := input
283+
input134.ControlPlaneVersion = "1.34.1"
284+
285+
_, err := da.UpdateKubeProxy(context.Background(), input, false)
286+
Expect(err).NotTo(HaveOccurred())
287+
image := kubeProxyImage(clientSet)
288+
Expect(image).To(Equal("602401143452.dkr.ecr.eu-west-1.amazonaws.com/eks/kube-proxy:v1.34.1-eksbuild.2"))
289+
Expect(kubeProxyNodeSelectorValues(clientSet)).To(ConsistOf("amd64", "arm64"))
290+
})
291+
})
254292
})
255293

256294
func kubeProxyImage(clientSet kubernetes.Interface) string {

0 commit comments

Comments
 (0)