{"id":21058,"date":"2022-12-13T06:49:26","date_gmt":"2022-12-13T06:49:26","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=21058"},"modified":"2022-12-23T05:44:34","modified_gmt":"2022-12-23T05:44:34","slug":"what-is-spinnaker-spinnaker-architecture-explained","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/what-is-spinnaker-spinnaker-architecture-explained\/","title":{"rendered":"What is Spinnaker &#038; Spinnaker Architecture explained?"},"content":{"rendered":"\n<p>Spinnaker is a free and open-source continuous delivery software platform originally developed by Netflix and extended by Google. It is designed to work with Kubernetes, Google Cloud Platform, AWS, Microsoft Azure and Oracle Cloud. It was released under the Apache License 2.0 on November 16, 2015.<\/p>\n\n\n\n<p>Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.<\/p>\n\n\n\n<p>Spinnaker microservices has been developed using Java, Groovy, Kotlin, Go and HTML. <a rel=\"noreferrer noopener\" href=\"https:\/\/devopsschool.com\/courses\/spinnaker\/\" data-type=\"URL\" data-id=\"https:\/\/devopsschool.com\/courses\/spinnaker\/\" target=\"_blank\">Spinnaker Training and certification<\/a> be be availed from DevOpsSchool.com.<\/p>\n\n\n\n<p>Created at Netflix, it has been battle-tested in production by hundreds of teams over millions of deployments. It combines a powerful and flexible pipeline management system with integrations to the major cloud providers.<\/p>\n\n\n\n<p><strong>Multi-Cloud Support<\/strong><br>Deploy across multiple cloud providers including AWS EC2, Kubernetes, Google Compute Engine, Google Kubernetes Engine, Google App Engine, Microsoft Azure, Openstack, Cloud Foundry, and Oracle Cloud Infrastructure, with DC\/OS coming soon.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"511\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-cloud-support.png\" alt=\"\" class=\"wp-image-21061\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-cloud-support.png 900w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-cloud-support-300x170.png 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-cloud-support-768x436.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p><strong>Automated Releases<\/strong><br>Create deployment pipelines that run integration and system tests, spin up and down server groups, and monitor your rollouts.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-pipeline-1024x1024.jpg\" alt=\"\" class=\"wp-image-21062\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-pipeline-1024x1024.jpg 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-pipeline-300x300.jpg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-pipeline-150x150.jpg 150w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-pipeline-768x768.jpg 768w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-pipeline-250x250.jpg 250w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-pipeline-80x80.jpg 80w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-pipeline.jpg 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Scheduling<\/strong><br>Trigger pipelines via git events, Jenkins, Travis CI, Docker, CRON, or other Spinnaker pipelines.<\/p>\n\n\n\n<p><strong>Built-in Deployment Best Practices<\/strong><br>Create and deploy immutable images for faster rollouts, easier rollbacks, and the elimination of hard to debug configuration drift issues. Leverage an immutable infrastructure in the cloud with built-in deployment strategies such as red\/black and canary deployments.<\/p>\n\n\n\n<p><strong>Active Community<\/strong><br>Community that includes Netflix, Google, Microsoft, Salesforce, Veritas, Target, Kenzan, Schibsted, and many others, actively working to maintain and improve Spinnaker.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">List of Features of Spinnaker?<\/h2>\n\n\n\n<p><strong>CI Integrations<\/strong><br>Listen to events, collect artifacts, and trigger pipelines from Jenkins or Travis CI. Triggers via git, cron, or a new image in a docker registry are also supported.<\/p>\n\n\n\n<p><strong>Monitoring Integrations<\/strong><br>Tie your releases to monitoring services Datadog, Prometheus, Stackdriver, SignalFx, or New Relic using their metrics for canary analysis.<\/p>\n\n\n\n<p><strong>CLI for Setup and Admin<\/strong><br>Install, configure, and update your Spinnaker instance with halyard, Spinnaker\u2019s CLI tool.<\/p>\n\n\n\n<p><strong>Deployment Strategies<\/strong><br>Configure pipelines with built-in deployment strategies such as highlander and red\/black, with rolling red\/black and canary in active development, or define your own custom strategy.<\/p>\n\n\n\n<p><strong>VM Bakery<\/strong><br>Bake immutable VM images via Packer, which comes packaged with Spinnaker and offers support for Chef and Puppet templates.<\/p>\n\n\n\n<p><strong>Notifications<\/strong><br>Set up event notifications for email, Slack, HipChat, or SMS (via Twilio).<\/p>\n\n\n\n<p><strong>Role-based Access Control<\/strong><br>Restrict access to projects or accounts by hooking into your internal authentication system using OAuth, SAML, LDAP, X.509 certs, Google Groups, Azure Groups, or GitHub Teams.<\/p>\n\n\n\n<p><strong>Manual Judgments<\/strong><br>Require a manual approval prior to releasing an update with a manual judgement stage.<\/p>\n\n\n\n<p><strong>Restricted Execution Windows<\/strong><br>Restrict the execution of stages to certain windows of time, making sure deployments happen during off-peak traffic or when the right people are on hand to monitor the roll-out.<\/p>\n\n\n\n<p><strong>Chaos Monkey Integration<br><\/strong>Test that your application can survive instance failures by terminating them on purpose.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">List of microservices of Spinnaker<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Deck<\/strong> is the browser-based UI.<\/li>\n\n\n\n<li><strong>Gate<\/strong> is the API gateway.<\/li>\n\n\n\n<li>The <strong>Spinnaker UI<\/strong> and all api callers communicate with Spinnaker via Gate.<\/li>\n\n\n\n<li><strong>Orca<\/strong> is the orchestration engine. It handles all ad-hoc operations and pipelines. Read more on the Orca Service Overview.<\/li>\n\n\n\n<li><strong>Clouddriver<\/strong> is responsible for all mutating calls to the cloud providers and for indexing\/caching all deployed resources.<\/li>\n\n\n\n<li><strong>Front50<\/strong> is used to persist the metadata of applications, pipelines, projects and notifications.<\/li>\n\n\n\n<li><strong>Rosco<\/strong> is the bakery. It produces immutable VM images (or image templates) for various cloud providers. It is used to produce machine images (for example GCE images, AWS AMIs, Azure VM images). It currently wraps packer, but will be expanded to support additional mechanisms for producing images.<\/li>\n\n\n\n<li><strong>Igor<\/strong> is used to trigger pipelines via continuous integration jobs in systems like Jenkins and Travis CI, and it allows Jenkins\/Travis stages to be used in pipelines.<\/li>\n\n\n\n<li><strong>Echo<\/strong> is Spinnaker\u2019s eventing bus. It supports sending notifications (e.g. Slack, email, SMS), and acts on incoming webhooks from services like Github.<\/li>\n\n\n\n<li><strong>Fiat<\/strong> is Spinnaker\u2019s authorization service. It is used to query a user\u2019s access permissions for accounts, applications and service accounts.<\/li>\n\n\n\n<li><strong>Kayenta<\/strong> provides automated canary analysis for Spinnaker.<\/li>\n\n\n\n<li><strong>Keel<\/strong> powers Managed Delivery.<\/li>\n\n\n\n<li><strong>Halyard<\/strong> is Spinnaker\u2019s configuration service.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Spinnaker Architecture Aka How Spinnaker Works?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"642\" height=\"628\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-architecture-1.jpg\" alt=\"\" class=\"wp-image-21059\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-architecture-1.jpg 642w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-architecture-1-300x293.jpg 300w\" sizes=\"auto, (max-width: 642px) 100vw, 642px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Spinnaker Microservices Dependency<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1321\" height=\"488\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-architecture-microservices-dependency.jpg\" alt=\"\" class=\"wp-image-21060\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-architecture-microservices-dependency.jpg 1321w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-architecture-microservices-dependency-300x111.jpg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-architecture-microservices-dependency-1024x378.jpg 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/04\/Spinnaker-architecture-microservices-dependency-768x284.jpg 768w\" sizes=\"auto, (max-width: 1321px) 100vw, 1321px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Spinnaker Microservices Port mappings<\/h2>\n\n\n\n<p>By default Spinnaker binds ports according to the following table<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Service<\/th><th>Port<\/th><\/tr><\/thead><tbody><tr><td>Clouddriver<\/td><td>7002<\/td><\/tr><tr><td>Deck<\/td><td>9000<\/td><\/tr><tr><td>Echo<\/td><td>8089<\/td><\/tr><tr><td>Fiat<\/td><td>7003<\/td><\/tr><tr><td>Front50<\/td><td>8080<\/td><\/tr><tr><td>Gate<\/td><td>8084<\/td><\/tr><tr><td>Halyard<\/td><td>8064<\/td><\/tr><tr><td>Igor<\/td><td>8088<\/td><\/tr><tr><td>Kayenta<\/td><td>8090<\/td><\/tr><tr><td>Orca<\/td><td>8083<\/td><\/tr><tr><td>Rosco<\/td><td>8087<\/td><\/tr><tr><td>Keel<\/td><td>8087<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Spinnaker Best Practices<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"505\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2022\/12\/image-17-1024x505.png\" alt=\"\" class=\"wp-image-32254\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2022\/12\/image-17-1024x505.png 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2022\/12\/image-17-300x148.png 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2022\/12\/image-17-768x379.png 768w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2022\/12\/image-17.png 1078w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Spinnaker is a free and open-source continuous delivery software platform originally developed by Netflix and extended by Google. It is designed to work with Kubernetes, Google Cloud Platform, AWS, Microsoft&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-21058","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/21058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=21058"}],"version-history":[{"count":3,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/21058\/revisions"}],"predecessor-version":[{"id":32255,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/21058\/revisions\/32255"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=21058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=21058"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=21058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}