Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
38 changes: 22 additions & 16 deletions pkg/nodebootstrap/al2023_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,6 @@ var _ = DescribeTable("Unmanaged AL2023", func(e al2023Entry) {
ng := api.NewNodeGroup()
makeDefaultNPSettings(ng)

if e.overrideClusterSettings != nil {
e.overrideClusterSettings(cfg)
}

if e.overrideNodegroupSettings != nil {
e.overrideNodegroupSettings(ng)
}
Expand All @@ -54,14 +50,6 @@ var _ = DescribeTable("Unmanaged AL2023", func(e al2023Entry) {
Entry("default", al2023Entry{
expectedUserData: wrapMIMEParts(nodeConfig),
}),
Entry("ipv6", al2023Entry{
overrideClusterSettings: func(cc *api.ClusterConfig) {
cc.Status.KubernetesNetworkConfig.IPFamily = api.IPV6Family
cc.Status.KubernetesNetworkConfig.ServiceIPv6CIDR = "fd00:facc:76a1::/108"
cc.Status.KubernetesNetworkConfig.ServiceIPv4CIDR = ""
},
expectedUserData: wrapMIMEParts(nodeConfigIPv6),
}),
Entry("efa enabled", al2023Entry{
overrideNodegroupSettings: func(np api.NodePool) {
np.BaseNodeGroup().EFAEnabled = aws.Bool(true)
Expand All @@ -71,7 +59,13 @@ var _ = DescribeTable("Unmanaged AL2023", func(e al2023Entry) {
)

var _ = DescribeTable("Managed AL2023", func(e al2023Entry) {
cfg, dns := makeDefaultClusterSettings()
cfg, _ := makeDefaultClusterSettings()
if e.overrideClusterSettings != nil {
e.overrideClusterSettings(cfg)
}
dns, err := nodebootstrap.GetClusterDNS(cfg)
Expect(err).NotTo(HaveOccurred())

mng := api.NewManagedNodeGroup()
makeDefaultNPSettings(mng)
mng.Taints = append(mng.Taints, api.NodeGroupTaint{
Expand Down Expand Up @@ -101,6 +95,17 @@ var _ = DescribeTable("Managed AL2023", func(e al2023Entry) {
},
expectedUserData: wrapMIMEParts(managedNodeConfig),
}),
Entry("custom AMI IPv6", al2023Entry{
overrideClusterSettings: func(cc *api.ClusterConfig) {
cc.Status.KubernetesNetworkConfig.IPFamily = api.IPV6Family
cc.Status.KubernetesNetworkConfig.ServiceIPv6CIDR = "fd40:6404:f93b::/108"
cc.Status.KubernetesNetworkConfig.ServiceIPv4CIDR = ""
},
overrideNodegroupSettings: func(np api.NodePool) {
np.BaseNodeGroup().AMI = "ami-xxxx"
},
expectedUserData: wrapMIMEParts(managedNodeConfigIPv6),
}),
)

type al2023OverrideNodeConfigEntry struct {
Expand Down Expand Up @@ -400,7 +405,7 @@ spec:
- --node-labels=alpha.eksctl.io/nodegroup-name=al2023-mng-test

`
nodeConfigIPv6 = `--//
managedNodeConfigIPv6 = `--//
Content-Type: application/node.eks.aws

apiVersion: node.eks.aws/v1alpha1
Expand All @@ -411,17 +416,18 @@ spec:
cluster:
apiServerEndpoint: https://test.xxx.us-west-2.eks.amazonaws.com
certificateAuthority: dGVzdCBDQQ==
cidr: fd00:facc:76a1::/108
cidr: fd40:6404:f93b::/108
name: al2023-test
containerd: {}
instance:
localStorage: {}
kubelet:
config:
clusterDNS:
- 10.100.0.10
- fd40:6404:f93b::a
flags:
- --node-labels=alpha.eksctl.io/nodegroup-name=al2023-mng-test
- --register-with-taints=special=true:NoSchedule

`
managedNodeConfig = `--//
Expand Down
32 changes: 26 additions & 6 deletions pkg/nodebootstrap/userdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,17 +89,37 @@ func NewManagedBootstrapper(clusterConfig *api.ClusterConfig, ng *api.ManagedNod
// GetClusterDNS returns the DNS address to use
func GetClusterDNS(clusterConfig *api.ClusterConfig) (string, error) {
networkConfig := clusterConfig.Status.KubernetesNetworkConfig
if networkConfig == nil || networkConfig.ServiceIPv4CIDR == "" {
if networkConfig == nil {
return "", nil
}

ip, _, err := net.ParseCIDR(networkConfig.ServiceIPv4CIDR)
var (
serviceCIDR string
toClusterDNS func(net.IP) string
)

if networkConfig.ServiceIPv4CIDR != "" {
serviceCIDR = networkConfig.ServiceIPv4CIDR
toClusterDNS = func(parsedIP net.IP) string {
ip := parsedIP.To4()
ip[net.IPv4len-1] = 10
return ip.String()
}
}
if networkConfig.ServiceIPv6CIDR != "" {
serviceCIDR = networkConfig.ServiceIPv6CIDR
toClusterDNS = func(parsedIP net.IP) string {
ip := parsedIP.To16()
ip[net.IPv6len-1] = 10
return ip.String()
}
}

parsedIP, _, err := net.ParseCIDR(serviceCIDR)
if err != nil {
return "", errors.Wrapf(err, "unexpected error parsing kubernetesNetworkConfig.serviceIPv4CIDR: %q", networkConfig.ServiceIPv4CIDR)
return "", errors.Wrapf(err, "unexpected error parsing KubernetesNetworkConfig service CIDR: %q", networkConfig.ServiceIPv4CIDR)
}
ip = ip.To4()
ip[net.IPv4len-1] = 10
return ip.String(), nil
return toClusterDNS(parsedIP), nil
}

func linuxConfig(clusterConfig *api.ClusterConfig, bootScriptName, bootScriptContent, clusterDNS string, np api.NodePool, scripts ...script) (string, error) {
Expand Down
Loading