Shifting Left With Cloud Native CI/CD QCon San Francisco 2019 @bobcatwilson @tektoncd
Christie Wilson MY CAT Lead Engineer @ Google Tekton Co-Creator ME @bobcatwilson @tektoncd
Make Mistakes! @bobcatwilson @tektoncd
Rockstars Heroes Ninjas ... Janitors @bobcatwilson @tektoncd
Can’t have success without failure @bobcatwilson @tektoncd
Cloud Native CI/CD can make failure easier and cheaper @bobcatwilson @tektoncd
Agenda ● What is Cloud Native? ● What is Cloud Native CI/CD? ● What is shifting left? ● What is Tekton? ● Demo! ● What’s next for Tekton? @bobcatwilson @tektoncd
What is Cloud Native? @bobcatwilson @tektoncd
What is Cloud Native? } Microservices in containers Images / Containers Optimized resource utilization } Dynamically orchestrated Kubernetes @bobcatwilson @tektoncd
wut? @bobcatwilson @tektoncd
Images/Containers ● A binary and all of its dependencies ● Containers share an OS ● Run as resource isolated processes Non-cloud native equivalent: @bobcatwilson @tektoncd
Kubernetes ● Platform for managing containers ● Abstracts away the underlying hardware ○ Computing ○ Networking ○ Storage Non-cloud native equivalent: ● People + wikis ● Build your own! ● Machine under your desk @bobcatwilson @tektoncd
A Few Kubernetes Concepts @bobcatwilson @tektoncd
Pod + Node ● Node = machine you run stuff on ○ Could be a physical machine or VM ● Pod = 1 or more containers ○ Run on the same pod Non-cloud native equivalent: ● Node -> Host machine ● Pod -> Bunch of stuff you run together ○ e.g. My python process + supervisord + some proxy service @bobcatwilson @tektoncd
Y et A nother M arkup L anguage @bobcatwilson @tektoncd
Moar complicated @bobcatwilson @tektoncd
2008 complexity @bobcatwilson @tektoncd
Cloud Native complexity @bobcatwilson @tektoncd
Cloud Native ● Start with a webserver complexity ● End up with Kubernetes + Istio + Knative + Helm + Spinnaker* There is a lot to grok here and it’s constantly changing! * Istio : Stuff for services to talk to each other Helm : Kubernetes package manager Knative : Serverless platform on Kubernetes Spinnaker : Control plane for deployment @bobcatwilson @tektoncd
Agenda ● What is Cloud Native? ● What is Cloud Native CI/CD? ● What is shifting left? ● What is Tekton? ● Demo! ● What’s next for Tekton? @bobcatwilson @tektoncd
What is CI/CD? @bobcatwilson @tektoncd
Literally integrating code together continually What is CI? Continuous Integration @bobcatwilson @tektoncd
Software ● How does my code get from Supply Chain source to running in prod? ● What pieces are involved? ● CI/CD = build, test + deploy @bobcatwilson @tektoncd
Cloud Native 1. Serverless 2. Specs and standards CI/CD 3. Reusable components 4. Infrastructure agnostic The Definitive* Definition 5. Config as code * aka defined by me @bobcatwilson @tektoncd
Cloud Native CI/CD 1. Serverless 2. Specs and standards 3. Reusable components 4. Infrastructure agnostic 5. Config as code @bobcatwilson @tektoncd
Serverless ● Scaling up and down resources as needed CI/CD ● You specify what you want to run, freed of the much of responsibility to manage the underlying resources @bobcatwilson @tektoncd
Serverless ● Don’t need to waste resources CI/CD ● No need for monolithic execution @bobcatwilson @tektoncd
Cloud Native CI/CD 1. Serverless 2. Specs and standards 3. Reusable components 4. Infrastructure agnostic 5. Config as code @bobcatwilson @tektoncd
Specs & ● Part of what makes k8s so cool Standards is that it’s a spec we can all agree on Doesn’t have to be perfect, just good enough & widely used @bobcatwilson @tektoncd
Specs & ● Any k8s resource can be manipulated (e.g. with Standards controllers, admission webhooks) ● Anything built on k8s can be Infinite extensibility! manipulated with k8s tools @bobcatwilson @tektoncd
Cloud Native CI/CD 1. Serverless 2. Specs and standards 3. Reusable components 4. Infrastructure agnostic 5. Config as code @bobcatwilson @tektoncd
Reusable ● Write it once, use it again and and again components ● Kubernetes is itself a building block, that enables the creation Do we need another Slack of more building blocks notification plugin? @bobcatwilson @tektoncd
Cloud Native CI/CD 1. Serverless 2. Specs and standards 3. Reusable components 4. Infrastructure agnostic 5. Config as code @bobcatwilson @tektoncd
Use your own ● A kubernetes pod is a kubernetes pod infra ● If you can deploy to prod kube, it should be possible to deploy to your kube Infrastructure agnostic ● Use the same config! @bobcatwilson @tektoncd
Use your own ● The sooner you fail the better! ● Perform testing earlier in your infra lifecycle ● Why not do it before the code Shift left is pushed! @bobcatwilson @tektoncd
Use your own ● Make the complexity of kubernetes worth it! infra ● Pre-kube, it was nearly impossible for me to setup a production like environment on Parity my own machine @bobcatwilson @tektoncd
Cloud Native CI/CD 1. Serverless 2. Specs and standards 3. Infrastructure agnostic 4. Reusable components 5. Config as code @bobcatwilson @tektoncd
Config as Code Even the YAML @bobcatwilson @tektoncd
Learning & ● As our systems get more complicated, we need to be Debugging able to learn faster ● We need to be able to look at Fail easily! what the system are doing @bobcatwilson @tektoncd
Debugging = Learning @bobcatwilson @tektoncd
The faster you can learn, the faster you can deliver value @bobcatwilson @tektoncd
@bobcatwilson @tektoncd
How do we ● By poking and prodding the thing debug? ● Looking at what it’s doing ● Changing it, seeing what happens @bobcatwilson @tektoncd
Agenda ● What is Cloud Native? ● What is Cloud Native CI/CD? ● What is shifting left? ● What is Tekton? ● Demo! ● What’s next for Tekton? @bobcatwilson @tektoncd
Shifting Left @bobcatwilson @tektoncd
Software development @bobcatwilson @tektoncd
Cost of defects @bobcatwilson @tektoncd
There WILL be defects Shift Left ● Test earlier! ● Catch failures earlier! Fail earlier! @bobcatwilson @tektoncd
Shift Left @bobcatwilson @tektoncd
Shifting Left with Cloud Native @bobcatwilson @tektoncd
Agenda ● What is Cloud Native? ● What is Cloud Native CI/CD? ● What is shifting left? ● What is Tekton? ● Demo! ● What’s next for Tekton? @bobcatwilson @tektoncd
@bobcatwilson @tektoncd
Tekton is Cloud Tekton is a Cloud Native Native CI/CD CI/CD building block! @bobcatwilson @tektoncd
The CDF @bobcatwilson @tektoncd
Contributors from: ● Google ● CloudBees ● Red Hat ● IBM ● Salesforce ● Puppet ● … and more! New contributor friendly! @bobcatwilson @tektoncd
Porcelain vs Plumbing Toilet vs. Plumbing Underneath @bobcatwilson @tektoncd
Who is Tekton for? Now! Now! Watch this Space Developers All users that End users that building CI/CD want a catalog of want DIY systems reusable CI/CD @bobcatwilson @tektoncd
● Extending kubernetes with custom types CRDs ● Controllers act on Resources ● = CI/CD platform on Custom Resource Definitions Kubernetes @bobcatwilson @tektoncd
Steps ● Is actually a container spec (k8s type) ● Container image + ○ Environment variables ○ Arguments ○ Volumes ○ etc. @bobcatwilson @tektoncd
Task CRD ● New CRD ● Sequence of steps ● Run in sequential order ● Run on the same k8s node @bobcatwilson @tektoncd
Pipeline CRD ● Express Tasks order ○ Sequentially ○ Concurrently ○ (Graph) ● Execute Tasks on different nodes ● Link inputs and outputs @bobcatwilson @tektoncd
Runtime CRDs ● Instances of Pipeline/Task: ○ PipelineRun ○ TaskRun ● PipelineResource ○ Runtime info like image registry, git repo, etc. @bobcatwilson @tektoncd
Tekton Pipeline CRDs @bobcatwilson @tektoncd
PipelineResources + Software Supply Chain ● Typed artifacts moving through your supply chain PipelineResources @bobcatwilson @tektoncd
But I want to make PipelineRun whenever I open a Pull Request? @bobcatwilson @tektoncd
Tekton Triggers CRDs @bobcatwilson @tektoncd
Cloud Native CI/CD Tekton Serverless Serverless execution Specs and standards Tekton API Infrastructure agnostic Containers are the building block Tasks, Pipelines, Reusable components PipelineResources, + TriggerTemplates, TriggerBindings, Config as Code EventListeners @bobcatwilson @tektoncd
Recommend
More recommend