300 likes | 390 Views
Continuous Delivery with spinnaker and Openstack. Dan Woods Principal Engineer, Target @ danveloper. What is spinnaker?. Netflix Open Source Software Cross-organization initiative Netflix, Target, Veritas, Google, Microsoft, Pivotal. What is spinnaker?.
E N D
Continuous Delivery with spinnaker and Openstack Dan Woods Principal Engineer, Target @danveloper
What is spinnaker? • Netflix Open Source Software • Cross-organization initiative • Netflix, Target, Veritas, Google, Microsoft, Pivotal
What is spinnaker? • Global continuous delivery platform • Multi-cloud deployment capabilities • Cloud management at an application level • Release Engineering for scalable infrastructures
What is spinnaker? • Immutable pipelines to reliably and reproducibly deliver software continuously • Deployment strategies enable common opinions across multiple projects/teams • Zero-downtime and Canary deployments • Chaos Engineering
What spinnakeris not. • Spinnaker is not a Platform-As-A-Service • Spinnaker is not an abstraction for multiple cloud vendors • Spinnaker is not a replacement for the infrastructure layer
Spinnaker & Openstack • Integration developed in cross-organizational effort between Target and Veritas • Works with Openstack V3 APIs • Utilizes Openstack best practices to bring continuously delivery to the private cloud
Spinnaker’s cloud Data model • Account – represents an a credentialed target for deployments • Cluster – represent a grouping of different versioned server groups • Server Group – represent a grouping of homogenously versioned instances • Instance – represent an individual runtime instance of a version of an application • Load Balancer – a runtime resource for balancing load across multiple instances • Security Group – a definition of ingress/egress rules that pertain to runtime resources
Spinnaker data model -> openstack data model • Account – an openstack project • Cluster – no difference • Server Group – an openstack “stack” type (driven by a heat template) • Instance – an individual virtual machine, which is lifecycle managed by the stack • Load Balancer – an lbaas v2 object • Security Group – same as in openstack
Spinnaker components • Spinnaker is a microservice architecture • Optional components can be included or not as necessary • Individual components can be upgraded, scaled, and configured independently of one another • (likely very similar concepts for those who are familiar with openstack’s architecture)
Spinnaker’s central components • CloudDriver –manages all communication for enacting changes and observing state for every configured account • Orca – the central orchestration engine, responsible for coordinating calls to clouddriver and other services to fulfill an orchestration or pipeline execution • Front50 –storing and serving application metadata, including description, owner, configured accounts, as well as pipeline definitions that belong to an application
Spinnaker’s optional components • Echo –receiving and storing events, and triggering pipelines configured for a given event • Igor – polling of external resources and reporting observed state changes to echo as events • Rosco – The “bakery” (turns ospackages – rpm/deb – into ”baked” images) • Fiat – authentication and access control
Spinnaker’s front end components • Gate – API Gateway for which all capabilities to the underlying components are exposed • Deck – the Spinnaker UI
Basic delivery pipeline • Build – Jenkins to build your ospackage (jenkins is not req’d, but is out-of-the-box compatible) and publish to a yum/apt repository • Bake – after the Jenkins build finishes, the bakery stage takes over and installs the ospackage on the base image • Deploy – once the new image is available, it is deployed as a new server group
Delivery strategies • Provides a re-usable opinionated path for the best strategy to roll out a new deployment • This can include running scripts to create change ticket, for example • Provided as a mechanism to build a more-suitable roll out strategy than the out-of-the-box baked in solutions • Currently a WIP for OpenStack, but should be available in the near term