Hacker News new | ask | show | jobs
by mark242 2556 days ago
This is big for making services which rely on DNS much easier to roll out in a container environment (ECS, EKS, etc). Traditionally we've had to create custom AMI images, use CloudFormation to keep them running with EIPs, and then have those EIPs be part of runtime configuration for our services.
3 comments

One "downside" of AWS is we've rolled a lot of custom solutions like this, at significant time/expense, only to have them be made obsolete by eventual native feature support. So we get left with a mixture of legacy systems using the custom solution and newer ones using native support and it makes things more complicated. It's actually a good problem to have in many ways, and basically unavoidable in many circumstances, but an interesting dynamic nonetheless. Reminds me of interstellar wait calculation[0] - do we defer dependent features until there's native support, or forge ahead knowing there's a likelihood of being 'overtaken'?

[0] https://en.m.wikipedia.org/wiki/Interstellar_travel#Wait_cal...

Another way to look at it: customers like you, who build custom work arounds to some problem, influence our decision that a particular problem is important enough to be solved.
Yup, and that's overwhelmingly a good thing! The one thing I will say is that AWS does tend to lean on this attitude a bit too much, IMO, with a tendency to ignore common sense about what people will inevitably need, thus causing the kind of thrash I described when it could have been avoided. It is erring on the right side of delivering vs waiting generally, but the balance could stand to be fine tuned.
Nothing is forcing you to switch from your custom solution to the native support. If you don't switch, you are in the same situation as if they native solution was never invented.
Nothing except every new hire that complains having to learn it instead of the native solution.

It's just like the parent said very much a first world problem/ good problem to have, as it's a situation which only exists if you're in a very productive team

Can you elaborate a bit on your architecture? I'd love to understand what your use case is.

In most architectures I've seen where containers are involved, the rendezvous point between external clients and containerized services is an external proxy (i.e., a load balancer), and the only DNS lookup required by such clients is of the proxy itself, so no DNS UDP traffic needs to be sent into the cluster. In K8S we call this proxy an "ingress."

Is the situation that you want to expose the cluster's internal DNS to the outside world to avoid having to configure ingress? Or is it something else?

Containers that require custom DNS queries about incoming connections from a non-HTTP service (we're using the NLB for this), using a caching DNS server that isn't publicly accessible.
I could see an SRV record style of load balancing being done on containers optimizing that layer by reducing a hop
I wonder if the AWS Route53 VPC resolvers work in that same way for internal VPC DNS resolution.