Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove faulty IPv6 example #1523

Merged
merged 2 commits into from
Dec 9, 2024
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
66 changes: 0 additions & 66 deletions examples/cluster-go/step1/main.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package main

import (
"fmt"
"strings"

"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
awseks "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks"
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
"github.com/pulumi/pulumi-eks/sdk/v3/go/eks"
Expand Down Expand Up @@ -82,75 +78,13 @@ func main() {
return err
}

//////////////////////////////////////////////////
/// Create an ipv6 enabled EKS cluster ///
//////////////////////////////////////////////////

// 1. Create a VPC with IPv6 CIDR block.
vpc, err := ec2.NewVpc(ctx, "ipv6-vpc", &ec2.VpcArgs{
AssignGeneratedIpv6CidrBlock: pulumi.Bool(true),
EnableDnsSupport: pulumi.Bool(true),
EnableDnsHostnames: pulumi.Bool(true),
CidrBlock: pulumi.String("10.100.0.0/16"),
})
if err != nil {
return err
}

// 2. Create two subnets with IPv6 CIDR block in two different availability zones.
// EKS requires at least two subnets in different availability zones.
var subnetIDs []pulumi.StringInput
for idx, az := range []string{"us-west-2a", "us-west-2b"} {
subnet, err := ec2.NewSubnet(ctx, fmt.Sprintf("ipv6-subnet-%d", idx), &ec2.SubnetArgs{
VpcId: vpc.ID().ToStringOutput(),
AssignIpv6AddressOnCreation: pulumi.Bool(true),
AvailabilityZone: pulumi.String(az),
CidrBlock: pulumi.String(fmt.Sprintf("10.100.%d.0/24", len(subnetIDs))),
Ipv6CidrBlock: calculateIPV6CidrBlock(vpc.Ipv6CidrBlock, idx),
})
if err != nil {
return err
}

subnetIDs = append(subnetIDs, subnet.ID().ToStringOutput())
}

// 3. Create an EKS cluster with IPv6 networking enabled.
cluster4, err := eks.NewCluster(ctx, "example-cluster-4", &eks.ClusterArgs{
IpFamily: pulumi.StringPtr("ipv6"),
VpcId: vpc.ID().ToStringOutput(),
SubnetIds: pulumi.StringArray(subnetIDs),
NodeGroupOptions: &eks.ClusterNodeGroupOptionsArgs{
DesiredCapacity: pulumi.IntPtr(2),
MinSize: pulumi.IntPtr(2),
MaxSize: pulumi.IntPtr(2),
},
})
if err != nil {
return err
}

//////////////////////////////////////////
/// Export cluster kubeconfigs ///
//////////////////////////////////////////

ctx.Export("kubeconfig1", cluster1.Kubeconfig)
ctx.Export("kubeconfig2", cluster2.Kubeconfig)
ctx.Export("kubeconfig3", cluster3.Kubeconfig)
ctx.Export("kubeconfig4", cluster4.Kubeconfig)
return nil
})
}

// calculateIPV6CidrBlock is a very simple function to calculate the ipv6 subnet cidr block for testing purpose.
// Usage for real workloads should implement a more robust function.
// Example: If the VPC ipv6 cidr block is 2600:1f13:e6:c000::/56, then the subnet ipv6 cidr block will be:
// 2600:1f13:e6:c005::/64, 2600:1f13:e6:c006::/64, 2600:1f13:e6:c007::/64, ...
func calculateIPV6CidrBlock(ipv6CidrBlock pulumi.StringOutput, subnetID int) pulumi.StringInput {
return ipv6CidrBlock.ApplyT(func(cidr string) (string, error) {
cidrStripped := strings.TrimSuffix(cidr, "::/56")
cidrStripped = cidrStripped[:len(cidrStripped)-1]
return fmt.Sprintf("%s%d::/64", cidrStripped, subnetID+5), nil

}).(pulumi.StringOutput)
}
67 changes: 0 additions & 67 deletions examples/cluster-go/step2/main.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
package main

import (
"fmt"
"strings"

"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
awseks "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks"
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
"github.com/pulumi/pulumi-eks/sdk/v3/go/eks"
Expand Down Expand Up @@ -83,55 +79,6 @@ func main() {
return err
}

//////////////////////////////////////////////////
/// Create an ipv6 enabled EKS cluster ///
//////////////////////////////////////////////////

// 1. Create a VPC with IPv6 CIDR block.
vpc, err := ec2.NewVpc(ctx, "ipv6-vpc", &ec2.VpcArgs{
AssignGeneratedIpv6CidrBlock: pulumi.Bool(true),
EnableDnsSupport: pulumi.Bool(true),
EnableDnsHostnames: pulumi.Bool(true),
CidrBlock: pulumi.String("10.100.0.0/16"),
})
if err != nil {
return err
}

// 2. Create two subnets with IPv6 CIDR block in two different availability zones.
// EKS requires at least two subnets in different availability zones.
var subnetIDs []pulumi.StringInput
for idx, az := range []string{"us-west-2a", "us-west-2b"} {
subnet, err := ec2.NewSubnet(ctx, fmt.Sprintf("ipv6-subnet-%d", idx), &ec2.SubnetArgs{
VpcId: vpc.ID().ToStringOutput(),
AssignIpv6AddressOnCreation: pulumi.Bool(true),
AvailabilityZone: pulumi.String(az),
CidrBlock: pulumi.String(fmt.Sprintf("10.100.%d.0/24", len(subnetIDs))),
Ipv6CidrBlock: calculateIPV6CidrBlock(vpc.Ipv6CidrBlock, idx),
})
if err != nil {
return err
}

subnetIDs = append(subnetIDs, subnet.ID().ToStringOutput())
}

// 3. Create an EKS cluster with IPv6 networking enabled.
cluster4, err := eks.NewCluster(ctx, "example-cluster-4", &eks.ClusterArgs{
IpFamily: pulumi.StringPtr("ipv6"),
VpcId: vpc.ID().ToStringOutput(),
SubnetIds: pulumi.StringArray(subnetIDs),
UseDefaultVpcCni: func() *bool { t := true; return &t }(),
NodeGroupOptions: &eks.ClusterNodeGroupOptionsArgs{
DesiredCapacity: pulumi.IntPtr(2),
MinSize: pulumi.IntPtr(2),
MaxSize: pulumi.IntPtr(2),
},
})
if err != nil {
return err
}

////////////////////////////////////////////////
/// CreationRoleProvider should fail ///
////////////////////////////////////////////////
Expand Down Expand Up @@ -167,21 +114,7 @@ func main() {
ctx.Export("kubeconfig1", cluster1.Kubeconfig)
ctx.Export("kubeconfig2", cluster2.Kubeconfig)
ctx.Export("kubeconfig3", cluster3.Kubeconfig)
ctx.Export("kubeconfig4", cluster4.Kubeconfig)
ctx.Export("kubeconfig5", cluster5.Kubeconfig)
return nil
})
}

// calculateIPV6CidrBlock is a very simple function to calculate the ipv6 subnet cidr block for testing purpose.
// Usage for real workloads should implement a more robust function.
// Example: If the VPC ipv6 cidr block is 2600:1f13:e6:c000::/56, then the subnet ipv6 cidr block will be:
// 2600:1f13:e6:c005::/64, 2600:1f13:e6:c006::/64, 2600:1f13:e6:c007::/64, ...
func calculateIPV6CidrBlock(ipv6CidrBlock pulumi.StringOutput, subnetID int) pulumi.StringInput {
return ipv6CidrBlock.ApplyT(func(cidr string) (string, error) {
cidrStripped := strings.TrimSuffix(cidr, "::/56")
cidrStripped = cidrStripped[:len(cidrStripped)-1]
return fmt.Sprintf("%s%d::/64", cidrStripped, subnetID+5), nil

}).(pulumi.StringOutput)
}
Loading