As Kenzan works with our clients to implement scalable and reliable systems in the cloud, we’ve often turned to the NetflixOSS stack for the myriad of tools and libraries it offers. A major component of our implementations has been Asgard, an instrumental tool that allows for the efficient automated deployment of applications. While Asgard has been a significant factor in the success of our implementations of the Netflix OSS stack, especially with its support for naming conventions, immutable infrastructure, application awareness and red-black deployments, it has been showing its age and has shortcomings in several areas, including a weak API and support that is limited to AWS.
Fortunately, Netflix has been working on a successor project to Asgard: Spinnaker (http://spinnaker.io/). Spinnaker represents the evolution of both Asgard and Mimir, another Netflix internal project which focuses on pipelines. Spinnaker takes a very different approach from Asgard, focusing much more narrowly on deployments, while offering a rich set of tools for creating pipelines to manage deployments across environments. In addition to being strongly API driven, another huge part of Spinnaker is the implementation of multiple back-end cloud drivers for different infrastructure providers. Spinnaker launched with support for AWS and GCP with follow up support coming from Azure and Pivotal.
When Kenzan first heard about Spinnaker, we jumped at the chance to work with it and also knew we wanted to contribute to this open source project. One tangible Kenzan contribution to the Spinnaker release was in the area of usability. Typically, projects like Spinnaker are released in such a way that they require significant effort just to install and start up, let alone do anything useful with. Our contribution for launch was to work with the Google team and, building on work they had already done, to come up with a straightforward, os-native install process for Spinnaker. Beyond this, we published, and continue to maintain a public image for Spinnaker on AWS.
Shortly after launch, we contributed to the documentation with a tutorial showing a complete continuous-delivery setup with simple sample application (http://spinnaker.io/documentation/hello-spinnaker.html). The tutorial goes through the complete process of setting up Jenkins, an Apt repository for baking, Spinnaker, jobs and pipelines to give a feel for what Spinnaker can really do when it is set up and integrated with a real project in Jenkins.
However, the tutorial is quite lengthy and there are a fair number of moving parts that are needed to get set up. This is understandable, since Spinnaker is a complex product trying to orchestrate the often complex details of cloud infrastructure. This leaves a high barrier for entry for people who want to see Spinnaker as it should be: with pipelines and code deployment, rather than just deploying OS images.
So, we set out to improve and reduce the barrier to entry. That’s where Terrfaform comes in. A Hashicorp product, Terraform allows you to describe and manage infrastructure. Using relative simple text configurations and back-ends for different cloud providers, it is possible to easily set up infrastructure from scratch. We decided to use Terraform to create an example Spinnaker install that gives a complete build-to-deploy experience with minimal set-up on the part of the user. The project (at https://github.com/kenzanlabs/spinnaker-terraform) takes advantage of Terraform to offer versions on both AWS and GCP. After running through the instructions, you get the following:
- Networking and security
- Bastion host
- Local Apt repo
- Jenkins Jobs
- Spinnaker Pipeline
Since it is an automated set-up, the configuration is slightly different from the tutorial since there isn’t a fork of the sample app. It would be very easy to modify the installation to match the tutorial after it is set up.
We’ll be adding more example pipelines to this demo to provide real-world, continuous delivery scenarios, including multiple pipelines with triggers and testing.
You love technology, and so do we. Join the team that’s helping to Make Next Possible.
Want to check out some of the other work we’ve been doing? Visit our page on GitHub: https://github.com/kenzanlabs