Skip to content

[Feature] Add support for more network configurations #572

@p8r-the-gr8

Description

@p8r-the-gr8

Hi,

It would be great if all of the following networking configurations could be supported by mapt:

  • airgapped (already supported)
  • private with NAT Gateways (already supported)
  • public
  • private with NAT Instances
  • user-configured

The new modes in a bit more details

Public

In this mode, only a public subnet is created with an Internet Gateway.
Security Group and other security features could/should still be used to secure the instance(s).

This approach could benefit workloads not requiring the level of isolation provided by private subnets.
Deployments would be faster.
Architecture would be simpler.
Costs would be greatly reduced.

Private with NAT Instances

This mode would work very similarly to the current "private with NAT Gateways" mode with one exception:
Instead of creating a NAT Gateway, an EC2 instance would be created and configured to perform the same role in the network stack.

The benefits of this approach is to keep the isolation level while greatly reducing costs associated with NAT Gateways.
This is ideal for dev/test/staging/etc workloads that don't require the same guarantees and performance as production deployments.

There are several open-source projects with the aim to reduce the downsides of this approach (failover support, healthchecking, etc) and automate the deployment and configuration.

One such project is the alterNAT Terraform module.
For information on the features and architecture of the project, see its project page.

I tested this project with both its native Terraform tool but also with Pulumi (using Pulumi's Terraform module compatibilty):
https://github.com/p8r-the-gr8/alternat-playground

User-configured

This mode would leave the network creation up to the user.
As such, the user could use any other tool (or even manual work) to create the desired networking setup, be that as complex or simple as necessary, and supply the VPC ID, subnet IDs and any other details to mapt.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions