Slide 1

Slide 1 text

Introduction to Spinnaker Pipeline Templates Presented by Keisuke Yamashita Merpay SRE In team knowledge-share

Slide 2

Slide 2 text

About me Keisuke Yamashita(Slack:@keke) Hello. I'm from new grad Merpay SRE Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 3

Slide 3 text

Introducing Spinnaker Pipeline Template | KeisukeYamashita Outline TODAY'S TOPICS What's Spinnaker? Spinnaker Architecture and how it works Spinnaker Managed Pipeline Template(MPT) The pros/cons of MPT How to create Spinnaker Pipeline Template MPT Tips 1. 2. 3. 4. 5. 6.

Slide 4

Slide 4 text

What's Spinnaker? IT'S A MICROSERVICE

Slide 5

Slide 5 text

What's Spinnaker Spinnaker is an open-source, multi-cloud continuous delivery platform that helps you release software changes with high velocity and confidence. Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 6

Slide 6 text

Management VISUALIZE CLUSTER Two features Deployment CI/CD

Slide 7

Slide 7 text

Management VISUALIZE CLUSTER Two features Deployment CI/CD Today's topic

Slide 8

Slide 8 text

Spinnaker Architecture Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 9

Slide 9 text

Spinnaker Architecture spin-gate orca clouddriver echo igor front50 rosco fiat spin-deck Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 10

Slide 10 text

Spinnaker Architecture spin-gate orca clouddriver echo igor front50 rosco fiat spin-deck Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 11

Slide 11 text

Spinnaker Architecture spin-gate orca clouddriver echo igor front50 rosco fiat spin-deck Exposed to Internet Has Ingress Has Ingress Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 12

Slide 12 text

Spinnaker Architecture spin-gate orca clouddriver echo igor front50 rosco fiat spin-deck UI that the developer is using. Written in Angular + React. You can also extend the UI with a customize deck WEB UI Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 13

Slide 13 text

Spinnaker Architecture orca clouddriver echo igor front50 rosco fiat spin-gate spin-deck All requests are first handled to this API gateway. I has logics in here. Written by Java. API GATEWAY Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 14

Slide 14 text

Spinnaker Architecture clouddriver echo igor front50 rosco fiat spin-gate spin-deck orca Manages the pipeline execution's consistency even in distributed system like Spinnaker on Kubernetes. Written in JAVA. Stateless. ORCHESTRATION ENGINE Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 15

Slide 15 text

Spinnaker Architecture clouddriver echo igor front50 rosco fiat spin-gate spin-deck orca Echo handles the event for sending the events and handling the webhooks from Github MESSAGING BUS Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 16

Slide 16 text

echo front50 rosco fiat spin-gate orca igor Spinnaker Architecture clouddriver spin-deck Igor is in charge for handling trigger events from Travis or Jenkins TRIGGER PIPELINE Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 17

Slide 17 text

echo front50 rosco fiat spin-gate orca igor Spinnaker Architecture clouddriver spin-deck Clouddriver calls the cloud provider(e.g. Kubernetes, GCE) CALL CLOUD PROVIDER Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 18

Slide 18 text

Spinnaker Architecture clouddriver echo front50 rosco fiat spin-gate spin-deck orca igor Fiat is a authentication service. AUTHENTICATION

Slide 19

Slide 19 text

Spinnaker Architecture clouddriver echo front50 rosco fiat spin-gate spin-deck orca igor Creats artifacts BAKERY

Slide 20

Slide 20 text

echo front50 rosco fiat spin-gate orca igor Spinnaker Architecture clouddriver spin-deck Responsible for storing metadata & configs METADATA STORAGE

Slide 21

Slide 21 text

How it works Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 22

Slide 22 text

Save a pipeline How it works 1. Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 23

Slide 23 text

echo front50 rosco fiat spin-gate orca igor How it works clouddriver spin-deck Save the pipeline 1.

Slide 24

Slide 24 text

echo front50 rosco fiat spin-gate orca igor How it works clouddriver spin-deck Save the pipeline 1.

Slide 25

Slide 25 text

echo front50 rosco fiat spin-gate orca igor How it works clouddriver spin-deck Save the pipeline 1.

Slide 26

Slide 26 text

echo front50 rosco fiat spin-gate orca igor How it works clouddriver spin-deck 2. Execute the pipeline front50 Save application config

Slide 27

Slide 27 text

How it works 2. Execute a pipeline Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 28

Slide 28 text

echo front50 rosco fiat spin-gate orca igor How it works clouddriver spin-deck 2. Execute the pipeline ① Invoke a pipeline exection

Slide 29

Slide 29 text

front50 rosco fiat spin-gate orca How it works clouddriver spin-deck 2. Execute the pipeline ② Gets application config echo igor

Slide 30

Slide 30 text

front50 rosco fiat spin-gate orca How it works clouddriver spin-deck 2. Execute the pipeline ③ Trigger pipeline echo igor

Slide 31

Slide 31 text

front50 rosco fiat spin-gate orca How it works clouddriver spin-deck 2. Execute the pipeline ④ Request for k8s echo igor

Slide 32

Slide 32 text

front50 rosco fiat spin-gate orca ⑤ kubectl apply How it works clouddriver spin-deck 2. Execute the pipeline echo igor

Slide 33

Slide 33 text

Spinnaker Managed PipelineTemplate(MPT)?

Slide 34

Slide 34 text

Spinnaker Pipeline Spinnaker Pipeline defines a deployment pipeline Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 35

Slide 35 text

Spinnaker Pipeline(JSON) Spinnaker Pipeline is defined by JSON Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 36

Slide 36 text

Spinnaker Pipeline(JSON) Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 37

Slide 37 text

Spinnaker Pipeline Template Pipeline Template + Pipeline = { "service": "nginx" } Pipeline variables Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 38

Slide 38 text

+ Spinnaker Managed Pipeline Template Pipeline Template v1 Pipeline v1 = { "service": "nginx" } Pipeline variables Pipeline Template v1 Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 39

Slide 39 text

+ Spinnaker Managed Pipeline Template Pipeline Template v1 Pipeline v1 = { "service": "nginx" } Pipeline variables Pipeline Template v1 Pipeline v2 Automatically updates the pipelines Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 40

Slide 40 text

+ Spinnaker Managed Pipeline Template Pipeline Template v1 Pipeline v1 = { "service": "nginx" } Pipeline variables Pipeline Template v1 Pipeline v2 Automatically updates the pipelines Sync Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 41

Slide 41 text

Spinnaker Managed Pipeline Template In application dashboard(after enabling v2 UI) Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 42

Slide 42 text

Spinnaker Managed Pipeline Template Choose pipeline template Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 43

Slide 43 text

Spinnaker Managed Pipeline Template Configure pipeline variables Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 44

Slide 44 text

Spinnaker Managed Pipeline Template Pipeline make :) Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 45

Slide 45 text

How to create MPT

Slide 46

Slide 46 text

Spin, Spinnaker CLI tool Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 47

Slide 47 text

Spin, Spinnaker CLI tool Download Spinnaker Pipeline $ spin pipeline get \ --name \ --application Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 48

Slide 48 text

Spin, Spinnaker CLI tool Create Pipeline Template JSON { "schema": "v2", "application: "", "pipeline": , "triggers: "", "variables": [] } Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 49

Slide 49 text

Spin, Spinnaker CLI tool Upload Pipeline Template JSON $ spin pipeline-template save \ --file Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 50

Slide 50 text

Demo

Slide 51

Slide 51 text

Pros of MPT

Slide 52

Slide 52 text

Pros MPT Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 53

Slide 53 text

Pros MPT Reuseability Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 54

Slide 54 text

Pros REUSABILITY Pipeline Template Deploy Nginx Pipeline { "image": "nginx" } Pipeline variables { "image": "redis" } Pipeline variables { "image": "apache hive" } Pipeline variables Deploy Redis Pipeline Deploy Hive Pipeline

Slide 55

Slide 55 text

Pros MPT Reuseability Immutable Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 56

Slide 56 text

Pros IMMUTABLE Can't change anything :D Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 57

Slide 57 text

Pros MPT Reuseability Immutable Managed Introducing Spinnaker Pipeline Template | KeisukeYamashita

Slide 58

Slide 58 text

+ Pipeline Template v1 Pipeline v1 = { "service": "nginx" } Pipeline variables Pipeline Template v1 Pipeline v2 Automatically updates the pipelines Sync Pros MANAGED

Slide 59

Slide 59 text

Pros MANAGED https://blog.spinnaker.io/managed-delivery-evolving-continuous-delivery-at-netflix-eb74877fb33c

Slide 60

Slide 60 text

Thank you Have a nice journey with Spinnaker

Slide 61

Slide 61 text

All pictures are from Upslash https://unsplash.com/