-
Notifications
You must be signed in to change notification settings - Fork 24
Description
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.