Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions integration/tests/addons/addons_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ var _ = BeforeSuite(func() {
rawClient = getRawClient(context.Background(), params.ClusterName)
serverVersion, err := rawClient.ServerVersion()
Expect(err).NotTo(HaveOccurred())
Expect(serverVersion).To(HavePrefix(api.DefaultVersion))
Expect(serverVersion).To(HavePrefix(params.Version))

})

Expand Down Expand Up @@ -555,7 +555,7 @@ var _ = Describe("(Integration) [EKS Addons test]", func() {
cmd := params.EksctlUtilsCmd.
WithArgs(
"describe-addon-versions",
"--kubernetes-version", api.DefaultVersion,
"--kubernetes-version", params.Version,
)
Expect(cmd).To(RunSuccessfullyWithOutputStringLines(
ContainElement(ContainSubstring("vpc-cni")),
Expand All @@ -569,7 +569,7 @@ var _ = Describe("(Integration) [EKS Addons test]", func() {
By(fmt.Sprintf("listing available addon versions for %s", addonWithSchema))
output, err := eksAPI.DescribeAddonVersions(context.Background(), &awseks.DescribeAddonVersionsInput{
AddonName: aws.String(addonWithSchema),
KubernetesVersion: aws.String(api.DefaultVersion),
KubernetesVersion: aws.String(params.Version),
})
Expect(err).NotTo(HaveOccurred(), "error describing addon versions")
By(fmt.Sprintf("fetching the configuration schema for %s", addonWithSchema))
Expand All @@ -592,7 +592,7 @@ var _ = Describe("(Integration) [EKS Addons test]", func() {
cmd := params.EksctlUtilsCmd.
WithArgs(
"describe-addon-versions",
"--kubernetes-version", api.DefaultVersion,
"--kubernetes-version", params.Version,
"--types", "networking",
"--owners", "aws",
"--publishers", "eks",
Expand Down Expand Up @@ -625,7 +625,7 @@ var _ = Describe("(Integration) [EKS Addons test]", func() {
cmd := params.EksctlUtilsCmd.
WithArgs(
"describe-addon-versions",
"--kubernetes-version", api.DefaultVersion,
"--kubernetes-version", params.Version,
"--types", "networking, storage",
)
Expect(cmd).To(RunSuccessfullyWithOutputStringLines(
Expand Down Expand Up @@ -990,7 +990,7 @@ func getRawClient(ctx context.Context, clusterName string) *kubewrapper.RawClien
func getInitialClusterConfig() *api.ClusterConfig {
clusterConfig := api.NewClusterConfig()
clusterConfig.Metadata.Name = params.ClusterName
clusterConfig.Metadata.Version = api.DefaultVersion
clusterConfig.Metadata.Version = params.Version
clusterConfig.Metadata.Region = params.Region
clusterConfig.IAM.WithOIDC = api.Enabled()
clusterConfig.Addons = []*api.Addon{
Expand Down
2 changes: 1 addition & 1 deletion integration/tests/dry_run/dry_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func TestDryRun(t *testing.T) {
testutils.RegisterAndRun(t)
}

const eksVersion = api.DefaultVersion
const eksVersion = api.Version1_34

const defaultClusterConfig = `
apiVersion: eksctl.io/v1alpha5
Expand Down
2 changes: 1 addition & 1 deletion integration/tests/gitops/flux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ var _ = Describe("Enable GitOps", func() {
clusterConfig = &api.ClusterConfig{
TypeMeta: api.ClusterConfigTypeMeta(),
Metadata: &api.ClusterMeta{
Version: api.DefaultVersion,
Version: params.Version,
Name: params.ClusterName,
Region: params.Region,
},
Expand Down
2 changes: 1 addition & 1 deletion integration/tests/ipv6/ipv6_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ var _ = BeforeSuite(func() {

clusterConfig = api.NewClusterConfig()
clusterConfig.Metadata.Name = params.ClusterName
clusterConfig.Metadata.Version = api.DefaultVersion
clusterConfig.Metadata.Version = params.Version
clusterConfig.Metadata.Region = params.Region
clusterConfig.KubernetesNetworkConfig.IPFamily = "iPv6"
clusterConfig.VPC.NAT = nil
Expand Down
2 changes: 1 addition & 1 deletion integration/tests/karpenter/karpenter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ var _ = Describe("(Integration) Karpenter", func() {
Metadata: &api.ClusterMeta{
Name: clusterName,
Region: params.Region,
Version: api.DefaultVersion,
Version: params.Version,
Tags: map[string]string{
"karpenter.sh/discovery": clusterName,
},
Expand Down
25 changes: 24 additions & 1 deletion integration/tests/params.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ func NewParamsWithGivenClusterName(clusterNamePrefix string, givenName string) *

flag.StringVar(&params.EksctlPath, "eksctl.path", "../../../eksctl", "Path to eksctl")
flag.StringVar(&params.Region, "eksctl.region", api.DefaultRegion, "Region to use for the tests")
flag.StringVar(&params.Version, "eksctl.version", api.DefaultVersion, "Version of Kubernetes to test")
flag.StringVar(&params.Version, "eksctl.version", "", "Version of Kubernetes to test (default: the EKS default version)")
flag.StringVar(&params.TestDirectory, "eksctl.test.dir", defaultTestDirectory, "Test directory. Defaulted to: "+defaultTestDirectory)
// Flags to help with the development of the integration tests
flag.StringVar(&params.ClusterName, "eksctl.cluster", "", "Cluster name (default: generate one)")
Expand All @@ -223,6 +223,9 @@ func NewParamsWithGivenClusterName(clusterNamePrefix string, givenName string) *
// go1.13+ testing flags regression fix: https://github.com/golang/go/issues/31859
flag.Parse()

if params.Version == "" {
params.attemptSettingDefaultVersion()
}
params.attemptSettingUserID()
if params.ClusterName == "" {
params.ClusterName = params.newClusterName(clusterNamePrefix, givenName)
Expand Down Expand Up @@ -257,6 +260,26 @@ func (p *Params) LogStacksEventsOnFailureForCluster(clusterName string) bool {
})
}

func (p *Params) attemptSettingDefaultVersion() {
msg := "Warning: failed to resolve the EKS default Kubernetes version, proceeding without it. Error: %v"
clusterProvider, err := eks.New(context.TODO(), &api.ProviderConfig{Region: p.Region}, nil)
if err != nil {
fmt.Fprintf(GinkgoWriter, msg, err)
return
}
cvm, err := eks.NewClusterVersionsManager(clusterProvider.AWSProvider.EKS())
if err != nil {
fmt.Fprintf(GinkgoWriter, msg, err)
return
}
version, err := cvm.ResolveClusterVersion("")
if err != nil {
fmt.Fprintf(GinkgoWriter, msg, err)
return
}
p.Version = version
}

// attemptSettingUserID will attempt to fetch the first 4 characters of the userID running the
// integration tests to be used as a prefix for cluster names. It fails silently if an error occurs
func (p *Params) attemptSettingUserID() {
Expand Down
2 changes: 1 addition & 1 deletion integration/tests/windows/windows_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ var _ = Describe("(Integration) [Windows Nodegroups]", func() {
By("creating a new cluster with Windows nodegroups")
clusterConfig := api.NewClusterConfig()
clusterConfig.Metadata.Name = clusterName
clusterConfig.Metadata.Version = api.DefaultVersion
clusterConfig.Metadata.Version = params.Version
clusterConfig.Metadata.Region = api.DefaultRegion
clusterConfig.IAM.WithOIDC = &withOIDC

Expand Down
2 changes: 1 addition & 1 deletion integration/tests/windows_managed/windows_managed_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func TestWindowsManaged(t *testing.T) {
func makeClusterConfig() *api.ClusterConfig {
clusterConfig := api.NewClusterConfig()
clusterConfig.Metadata.Name = params.ClusterName
clusterConfig.Metadata.Version = api.DefaultVersion
clusterConfig.Metadata.Version = params.Version
clusterConfig.Metadata.Region = params.Region
return clusterConfig
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/actions/addon/create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ var _ = Describe("Create", func() {
RequiresIamPermissions: true,
Compatibilities: []ekstypes.Compatibility{
{
ClusterVersion: aws.String(api.DefaultVersion),
ClusterVersion: aws.String(api.Version1_34),
DefaultVersion: true,
},
},
Expand Down
4 changes: 2 additions & 2 deletions pkg/actions/addon/update_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,7 @@ var _ = Describe("Update", func() {
}, nil).Once()
mockProvider.MockEKS().On("DescribeAddonVersions", mock.Anything, &awseks.DescribeAddonVersionsInput{
AddonName: aws.String("vpc-cni"),
KubernetesVersion: aws.String(api.DefaultVersion),
KubernetesVersion: aws.String(api.Version1_34),
}).Return(&awseks.DescribeAddonVersionsOutput{
Addons: []ekstypes.AddonInfo{
{
Expand Down Expand Up @@ -741,7 +741,7 @@ var _ = Describe("Update", func() {

addonManager, err := addon.New(&api.ClusterConfig{
Metadata: &api.ClusterMeta{
Version: api.DefaultVersion,
Version: api.Version1_34,
Name: clusterName,
},
AddonsConfig: e.addonsConfig,
Expand Down
2 changes: 1 addition & 1 deletion pkg/actions/nodegroup/create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ func newClusterConfig() *api.ClusterConfig {
TypeMeta: api.ClusterConfigTypeMeta(),
Metadata: &api.ClusterMeta{
Name: "my-cluster",
Version: api.DefaultVersion,
Version: api.Version1_34,
},
Status: &api.ClusterStatus{
Endpoint: "https://localhost/",
Expand Down
2 changes: 1 addition & 1 deletion pkg/actions/nodegroup/upgrade_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ var _ = Describe("Upgrade", func() {
}}, nil)
})
It("returns an error if kubernetes version is specified", func() {
options.KubernetesVersion = api.DefaultVersion
options.KubernetesVersion = api.Version1_34
err := m.Upgrade(context.Background(), options)
Expect(err).To(MatchError(ContainSubstring("cannot specify kubernetes-version or release-version when using a custom AMI")))
})
Expand Down
2 changes: 1 addition & 1 deletion pkg/apis/eksctl.io/v1alpha5/instance_selector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ var _ = Describe("Instance Selector Validation", func() {
DescribeTable("Supported and unsupported field combinations", func(n *instanceSelectorCase) {
cfg := NewClusterConfig()

err := SetNodeGroupDefaults(n.ng, &ClusterMeta{Name: "cluster", Version: DefaultVersion}, cfg.IsControlPlaneOnOutposts())
err := SetNodeGroupDefaults(n.ng, &ClusterMeta{Name: "cluster", Version: Version1_34}, cfg.IsControlPlaneOnOutposts())
Expect(err).NotTo(HaveOccurred())

err = ValidateNodeGroup(0, n.ng, cfg)
Expand Down
9 changes: 2 additions & 7 deletions pkg/apis/eksctl.io/v1alpha5/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,6 @@ const (
AmazonLinux2EOLVersion = Version1_33
// EFABuiltInSupportVersion defines the minimum Kubernetes version that supports built-in EFA
EFABuiltInSupportVersion = Version1_33
//TODO: Remove this and replace with output from DescribeClusterVersions endpoint
// DefaultVersion (default)
DefaultVersion = Version1_34
)

const (
Expand Down Expand Up @@ -1307,10 +1304,8 @@ func ClusterConfigTypeMeta() metav1.TypeMeta {
func NewClusterConfig() *ClusterConfig {
cfg := &ClusterConfig{
TypeMeta: ClusterConfigTypeMeta(),
Metadata: &ClusterMeta{
Version: DefaultVersion,
},
IAM: NewClusterIAM(),
Metadata: &ClusterMeta{},
IAM: NewClusterIAM(),
KubernetesNetworkConfig: &KubernetesNetworkConfig{
IPFamily: DefaultIPFamily,
},
Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/eksctl.io/v1alpha5/validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -881,6 +881,7 @@ var _ = Describe("ClusterConfig validation", func() {

DescribeTable("AWS Local Zones", func(e localZonesEntry) {
clusterConfig := api.NewClusterConfig()
clusterConfig.Metadata.Version = api.Version1_34
e.updateClusterConfig(clusterConfig)
clusterConfig.LocalZones = []string{"us-west-2-lax-1a", "us-west-2-lax-1b"}

Expand Down Expand Up @@ -1013,6 +1014,7 @@ var _ = Describe("ClusterConfig validation", func() {
}
DescribeTable("RemoteNetworkConfig", func(e remoteNetworkConfigEntry) {
cfg := api.NewClusterConfig()
cfg.Metadata.Version = api.Version1_34
api.SetClusterConfigDefaults(cfg)
api.SetClusterEndpointAccessDefaults(cfg.VPC)
gatewayID := api.VPCGateway("tgw-1234")
Expand Down Expand Up @@ -1131,6 +1133,7 @@ var _ = Describe("ClusterConfig validation", func() {

BeforeEach(func() {
cfg = api.NewClusterConfig()
cfg.Metadata.Version = api.Version1_34
vpc = api.NewClusterVPC(false)
cfg.VPC = vpc
})
Expand Down
2 changes: 1 addition & 1 deletion pkg/cfn/builder/managed_nodegroup_ami_type_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ var _ = DescribeTable("Managed Nodegroup AMI type", func(e amiTypeEntry) {
if e.clusterVersion != "" {
clusterConfig.Metadata.Version = e.clusterVersion
} else {
clusterConfig.Metadata.Version = api.DefaultVersion
clusterConfig.Metadata.Version = api.Version1_34
}
err := api.SetManagedNodeGroupDefaults(e.nodeGroup, clusterConfig.Metadata, false)
Expect(err).NotTo(HaveOccurred())
Expand Down
18 changes: 14 additions & 4 deletions pkg/ctl/cmdutils/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,9 @@ func (c *Cmd) NewCtl() (*eks.ClusterProvider, error) {
return nil, err
}

version, err := cvm.ResolveClusterVersion(c.ClusterConfig.Metadata.Version)
if err != nil {
return nil, fmt.Errorf("resolving cluster version: %w", err)
if err := resolveClusterVersion(cvm, c.ClusterConfig.Metadata); err != nil {
return nil, err
}
c.ClusterConfig.Metadata.Version = version

if err := c.InitializeClusterConfig(); err != nil {
return nil, err
Expand All @@ -61,6 +59,18 @@ func (c *Cmd) NewCtl() (*eks.ClusterProvider, error) {
return ctl, nil
}

func resolveClusterVersion(cvm eks.ClusterVersionsManagerInterface, meta *api.ClusterMeta) error {
if meta.Version == "" && cvm.DefaultVersion() == "" {
return nil
}
version, err := cvm.ResolveClusterVersion(meta.Version)
if err != nil {
return fmt.Errorf("resolving cluster version: %w", err)
}
meta.Version = version
return nil
}

// InitializeClusterConfig validates and initializes the ClusterConfig.
func (c *Cmd) InitializeClusterConfig() error {
api.SetClusterConfigDefaults(c.ClusterConfig)
Expand Down
66 changes: 66 additions & 0 deletions pkg/ctl/cmdutils/cmd_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package cmdutils

import (
"github.com/aws/aws-sdk-go-v2/aws"
awseks "github.com/aws/aws-sdk-go-v2/service/eks"
ekstypes "github.com/aws/aws-sdk-go-v2/service/eks/types"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/stretchr/testify/mock"

api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
"github.com/weaveworks/eksctl/pkg/eks"
"github.com/weaveworks/eksctl/pkg/testutils/mockprovider"
)

var _ = Describe("resolveClusterVersion", func() {
type resolveClusterVersionEntry struct {
eksFlagsDefault bool
version string
expectedVersion string
expectedErr string
}

DescribeTable("resolves the cluster version", func(e resolveClusterVersionEntry) {
mockProvider := mockprovider.NewMockProvider()
mockProvider.MockEKS().On("DescribeClusterVersions", mock.Anything, &awseks.DescribeClusterVersionsInput{}).
Return(&awseks.DescribeClusterVersionsOutput{
ClusterVersions: []ekstypes.ClusterVersionInformation{
{
ClusterVersion: aws.String(api.Version1_34),
DefaultVersion: e.eksFlagsDefault,
},
{
ClusterVersion: aws.String(api.Version1_35),
},
},
}, nil)
cvm, err := eks.NewClusterVersionsManager(mockProvider.EKS())
Expect(err).NotTo(HaveOccurred())

meta := &api.ClusterMeta{Version: e.version}
err = resolveClusterVersion(cvm, meta)
if e.expectedErr != "" {
Expect(err).To(MatchError(ContainSubstring(e.expectedErr)))
return
}
Expect(err).NotTo(HaveOccurred())
Expect(meta.Version).To(Equal(e.expectedVersion))
},
Entry("uses the EKS default version when the version is not set", resolveClusterVersionEntry{
eksFlagsDefault: true,
expectedVersion: api.Version1_34,
}),
Entry("leaves the version unset when EKS does not flag a default", resolveClusterVersionEntry{
expectedVersion: "",
}),
Entry("uses the specified version when EKS does not flag a default", resolveClusterVersionEntry{
version: api.Version1_35,
expectedVersion: api.Version1_35,
}),
Entry("fails for auto when EKS does not flag a default", resolveClusterVersionEntry{
version: "auto",
expectedErr: "EKS did not report a default Kubernetes version",
}),
)
})
3 changes: 2 additions & 1 deletion pkg/ctl/cmdutils/filter/nodegroup_filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,7 @@ func newClusterConfig() *api.ClusterConfig {

cfg.Metadata.Name = "test-3x3-ngs"
cfg.Metadata.Region = "eu-central-1"
cfg.Metadata.Version = api.Version1_34

return cfg
}
Expand Down Expand Up @@ -657,7 +658,7 @@ var expected = fmt.Sprintf(`
}
]
}
`, api.DefaultVersion)
`, api.Version1_34)

type mockStackLister struct {
nodesResult []manager.NodeGroupStack
Expand Down
Loading
Loading