Good morning, I am having a hard time passing my ...
# general
f
Good morning, I am having a hard time passing my newly built subnet ids into my EKS cluster For example here is my subnet creation ( I actually create several of them in a loop)
Copy code
privateSubnet, err := ec2.NewSubnet(ctx, fmt.Sprintf("eks-subnet-private-%d", i), &ec2.SubnetArgs{
                VpcId:               vpc.ID(),
                CidrBlock:           pulumi.String(fmt.Sprintf("%s.1%d.0/24", netWork, i)),
                AvailabilityZone:    pulumi.String(zone),
                MapPublicIpOnLaunch: pulumi.Bool(true),
                Tags:                GetTags(ctx, fmt.Sprintf("eks-%s-subnet-private-%d", environment, i)),
            })
            if err != nil {
                return err
            }
however i haven't quite mastered what should be passed into my EKS. I was assuming a list of private subnets retrieved by using the Apply, but I can't quite put together what that should look like. for example
Copy code
eksCluster, err := eks.NewCluster(ctx, "eks-cluster", &eks.ClusterArgs{
    RoleArn: pulumi.StringInput(eksRole.Arn),
    VpcConfig: &eks.ClusterVpcConfigArgs{
        PublicAccessCidrs: pulumi.StringArray{
            pulumi.String("0.0.0.0/0"),
        },
        SecurityGroupIds: pulumi.StringArray{
            clusterSg.ID().ToStringOutput(),
        },
        SubnetIds: privateSubnets, << here is my issue
    },
})
if err != nil {
    return err
}
Any help most welcome! Thank you
b
From the subnet you created, you can do something like:
Copy code
privateSubnet.ID().ToStringOutput()
To get the subnet as a StringOutput, and then you can put it in an slice
[]pulumi.StringOutput
Once you have that slice, you can do something like:
Copy code
PrivateSubnetIds: pulumi.ToStringArrayOutput(yourSliceOfSubnets)
Hope this helps!
f
it does indeed!
thankyou very much
b
Excellent 🙂
f
my solution looks like this, very similar to your suggestion - I created a slice outside of the subnet creation loop
Copy code
var privateSubnets pulumi.StringArray
        for i, zone := range zones.Names {
                privateSubnet, err := ec2.NewSubnet(ctx, fmt.Sprintf("eks-subnet-private-%d", i), &ec2.SubnetArgs{
                VpcId:               vpc.ID(),
                CidrBlock:           pulumi.String(fmt.Sprintf("%s.1%d.0/24", netWork, i)),
                AvailabilityZone:    pulumi.String(zone),
                MapPublicIpOnLaunch: pulumi.Bool(true),
                Tags:                GetTags(ctx, fmt.Sprintf("eks-%s-subnet-private-%d", environment, i)),
            })
            if err != nil {
                return err
            }

            privateSubnets = append(privateSubnets, privateSubnet.ID().ToStringOutput())

            ...
Then I can pass this slice to my EKS creation Statement
Copy code
eksCluster, err := eks.NewCluster(ctx, "eks-cluster", &eks.ClusterArgs{
    RoleArn: pulumi.StringInput(eksRole.Arn),
    VpcConfig: &eks.ClusterVpcConfigArgs{
        PublicAccessCidrs: pulumi.StringArray{
            pulumi.String("0.0.0.0/0"),
        },
        SecurityGroupIds: pulumi.StringArray{
            clusterSg.ID().ToStringOutput(),
        },
        SubnetIds: privateSubnets, <<<
    },
})
thank you once again!
b
My code looks nearly identical - nice!
😀 1
f
I don't think i am used to all this freedom and choice pulumi gives us 🙂
b
It is a blessing and a curse.