Using the Marathon namer when applications are deployed with Spinnaker

I am currently looking into setting up LinkerD with our DC/OS deployment and ran into an issue with the built in namer for Marathon when applications are deployed with Spinnaker. Spinnaker versions an application and it does that through the application name within Marathon. The full app ID will be along the lines of /group/{{version}}-application-name. Spinnaker does this as it holds on to previous deployments so that they can be scaled up and fallen back to in the case of a failed deployment.

My questions is how have others handled this scenario? I would like to avoid creating a custom namer based off the Marathon namer if at all possible.

My first thought on getting around this was to using the HTTP API available with the use of NamerD. Spinnaker can use the API to update a dtab that correlates a static logical name like ‘/group/service-a’ to a versioned logical name ‘/spinnaker/045-service-a’ that can then be used by the default marathon namer. The only downside to this is large number of dtab entries needed to map all services within the cluster to the currently deployed application id.

I am new enough to LinkerD that I may be missing a better way to do this. As such I wanted to make sure this wasn’t something that others have encountered and solved or if this still a problem for those looking to combine both LinkerD and Spinnaker in their deployments within DC/OS.

The primary reason I landed on using the HTTP API was the fact that we could pretty quickly use the same strategy of using the API to introduce the ability to do canary deployments or other deployments strategies using the power of dtabs.

If anyone has any feedback or suggestions that would be greatly appreciated. If not I will be sure to post back here as I get this working so others can benefit from it.

I think the strategy you lay out here is a good one. Please let us know if you get stuck along the way and we’ll be happy to answer any questions. I’m excited to hear how this goes.