At NS1 we work with many of the most advanced companies on the internet, trailblazers who are pushing the boundaries of application architecture, automation, infrastructure elasticity, and performance optimization. One of the biggest shifts we’ve seen recently is huge uptake among our customers of various container technologies. Among these are container management systems, like Mesos, Kubernetes, Docker Swarm, and HashiCorp’s Nomad.
A key challenge that arises as you introduce container and cluster management into your architecture is service discovery. As application workloads and services are scheduled and move around your cluster dynamically, enabling other components in your application, and human users, to connect with those services becomes challenging. A typical approach has been to solve service discovery in a containerized environment by introducing simple DNS systems that map service domain names to the current hosts or other information needed to connect to your containerized services. Those DNS systems tie into your container management system’s API to stay up to date.
Most of the DNS systems used for this purpose aren’t built to be depended upon in highly available, production environments or to expose your services to the public internet. A number of our customers have asked us about tying their container management systems into NS1’s DNS and traffic management to address these challenges. So, we got to work and, starting with Mesos, one of the most popular container management systems among our customers, we built a connector that bridges a Mesos cluster with the NS1 API to enable service discovery. You can expose your Mesos domains either internally, through NS1’s Dedicated DNS, or to the internet, with our Managed DNS network.
The mesos2ns1 connector is simple — it just connects to your Mesos masters via API, and generates a DNS representation of your state, in a manner similar to the canonical Mesos-DNS — except that mesos2ns1 synchronizes that state with a zone within NS1, which can be served via NS1 Managed DNS or a Dedicated DNS networks. The project is experimental — we’d love your feedback, pull and feature requests, and other input.
For more details, check out the README and the rest of the project on Github.