-
Notifications
You must be signed in to change notification settings - Fork 179
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
provide support for private rack servers #214
Conversation
You guys think we can close this for the time being? |
I would love to keep this alive and get this feature added to Convox if possible. Are there any design changes you would like to see, or is this not something that you see being merged? @ddollar did mention refactoring the nat setup to use VPC Nat Gateways, however that would require a custom cloudformation resource at this time, something I haven't had time to tackle. |
ok yeah so this PR works, it just doesn't use NAT boxes? |
This is a really promising PR, I definitely see getting it into the project. +1 on the Nat Gateway too. Custom CloudFormation resource is the way to go there. I can help with that part. |
First tactical question... Can we split this up into smaller chunks to get through somehow? Some strawmen sub projects:
Ideally the smaller steps will have some value in their own. But even if they don't, smaller PRs are much easier to manage. |
Here's some WIP for the Nat Gateway Custom Handler: #338 I'd like some review first, but it'll be safe to get the custom handler bit into master and released first. |
The NAT handler is released. I tried to rebase this PR onto master and had some challenges / questions... One is around ELB public/private logic. Currently we use the manifest port mapping to decide if an ELB is public (80:80) or private (6379). In this mode should all ELBs be private or will there still be some way to make one public? I also had a general question around CF dependencies. Some resouces explcitly depend on the subnet or gateway to guarantee that we remove things in the correct order on uninstall. How does DependsOn work with conditional resources? |
In regards to ELBs, the intent was to make them all private, as our use case is a purely private rack using a VPN connection for access. I think the all of the resources that are depending on conditional resources are conditional themselves using the same condition logic, was there a specific resource you were referring to? |
FWIW in our environment we have a mix of public and private ELBs. Public ELBs for services we expose to the internet, like our website and public APIs, and private ELBs for internal services. |
Our intent is to run both a fully private rack and a fully public rack instead of sharing one rack for both, but perhaps convox should provide the flexibility for both approaches? |
I should also mention that the instances that back a public ELB are still in the private subnet, which gives us some peace of mind security-wise (the only things in the public subnet are ELBs). |
My use case is similar to @rgarcia's. |
I'm still learning about all the VPC options, but a picture is coming into focus. --private adds a 2nd network but retains the public network for internet-facing ELBs. Rack
Apps
Docs
|
@cleblanc87 can you use the existing app private port mapping option (single port 80, vs 80:80) to tell your apps to use the private network? If so we continue to use 80:80 to signify making public ELBs And would you be ok with the public network still being there? |
looks good, though maybe consider using |
The checklist looks perfect, and the public networking is required by the original PR for the NAT instances, so no concerns there :) The single port mapping will work great for us, and using the 80:80 syntax to denote public makes sense as well. |
Moved this to #350 so I can work off the convox private-resources branch. I am probably doing something not right on GitHub here, apologies. |
Proposal for private rack hosts, this PR adds the
--private-resources
to install, which when present will:--subnet0-private-cidr
--subnet0-private-cidr
--subnet0-private-cidr
example usage:
The smaller /28 public subnets will be used to host the nats for ecs hosts in the private /26 networks.
Still left todo: