pulumi

 avatar
unknown
golang
2 months ago
2.3 kB
5
Indexable
func CreateDefaultEksEndpoints(ctx *pulumi.Context, name string, args *DefaultEksEndpointArgs, opts ...pulumi.ResourceOption) (*DefaultEksEndpointComponent, error) {
	defaultEksEndpointComponent := &DefaultEksEndpointComponent{}

	componentURN := fmt.Sprintf("%s-default-eks-endpoints", name)

	err := ctx.RegisterComponentResource("tanium:pkg:aws:eks:DefaultEksEndpoints", componentURN, defaultEksEndpointComponent, opts...)
	if err != nil {
		return nil, helpers.Wrap(err, "CreateDefaultEksEndpoints")
	}

	r, err := aws.GetRegion(ctx, nil, nil)
	if err != nil {
		return nil, helpers.Wrap(err, "CreateDefaultEksEndpoints:GetRegion")
	}
	region := r.Name
	defaultEndpoints := []string{
		"s3", "elasticloadbalancing", "sts", "ec2", "ecr-api", "ecr-dkr", "autoscaling", "ssm", "ssmmessages", "ec2messages", "inspector2",
	}

	if args.ClusterType == "private" {
		defaultEndpoints = append(defaultEndpoints, "logs")
	}

	var dependencies []pulumi.Resource

	sg, err := CreateDefaultVpceSecurityGroup(ctx, name, args.VpcId, args.SubnetCidrs, map[string]string{})
	if err != nil {
		return nil, helpers.Wrap(err, "CreateDefaultEksEndpoints:CreateDefaultVpceSecurityGroup")
	}
	var sgIds pulumi.StringArray
	sgIds = append(sgIds, sg.ID())
	dependencies = append(dependencies, sg)

	for _, v := range defaultEndpoints {

		vpceURN := fmt.Sprint(name, "-vpce-", v)

		tags := PulumiTags(args.Tags)

		_, nameKeyExists := tags["Name"]
		if !nameKeyExists {
			tags["Name"] = vpceURN
		}
		enabled := true
		if v == "s3" {
			enabled = false
		}

		vpce, err := ec2.NewVpcEndpoint(ctx, vpceURN, &ec2.VpcEndpointArgs{
			ServiceName:       pulumi.String(fmt.Sprint("com.amazonaws.", region, ".", strings.ReplaceAll(v, "-", "."))),
			VpcId:             args.VpcId,
			VpcEndpointType:   pulumi.String("Interface"),
			PrivateDnsEnabled: pulumi.Bool(enabled),
			SecurityGroupIds:  sgIds,
			AutoAccept:        pulumi.Bool(true),
			SubnetIds:         args.SubnetIds,
			Tags:              pulumi.ToStringMap(tags),
		}, pulumi.Parent(defaultEksEndpointComponent), pulumi.DependsOn(dependencies))
		if err != nil {
			return nil, helpers.Wrap(err, "CreateDefaultEksEndpoints:NewVpcEndpoint")
		}
		defaultEksEndpointComponent.VpcEndpoints = append(defaultEksEndpointComponent.VpcEndpoints, vpce)
	}

	return defaultEksEndpointComponent, nil
}
Editor is loading...
Leave a Comment