Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The CI/CD Experience: Kubernetes Edition

The CI/CD Experience: Kubernetes Edition

With Kubernetes, everything from deployment to monitoring to scaling is more standardized and inherently easier to automate. This presents the possibility to achieve a more effective and comprehensive Continuous Integration (CI) and Continuous Delivery (CD) experience. We can incorporate the practice of infrastructure-as-code and take advantage of a flourishing ecosystem of tools to improve and fully automate our application deployment strategies. In this session, we'll tour the landscape of new Kubernetes-centric tooling, including Tekton, Kustomize, and ArgoCD. We'll also explore how GitOps can be leveraged for CI/CD.

On Day 2, bring your questions about the presentation and join us for an open, informal discussion. No slides, no demos—just a conversation.

Fbcb461e8c19ccc6727f13dbfcd58362?s=128

Andreas Evers

June 29, 2020
Tweet

More Decks by Andreas Evers

Other Decks in Technology

Transcript

  1. Confidential │ © 2020 VMware, Inc. The CI/CD Experience Kubernetes

    Edition SpringOne Tour 2020 Cora Iberkleid Developer Advocate Andreas Evers Senior Solutions Architect
  2. 2 Confidential │ © 2020 VMware, Inc. With Kubernetes, everything

    from deployment to monitoring to scaling is more standardized and inherently easier to automate. This presents the possibility to achieve a more effective and comprehensive Continuous Integration (CI) and Continuous Delivery (CD) experience. We can incorporate the practice of infrastructure-as-code and take advantage of a flourishing ecosystem of tools to improve and fully automate our application deployment strategies. In this session, we'll tour the landscape of new Kubernetes-centric tooling, including Tekton, Kustomize, and ArgoCD. We'll also explore how GitOps can be leveraged for CI/CD.
  3. Confidential │ © 2020 VMware, Inc. Agenda 3 Day 1

    9:00 AM–11:00 AM PDT Building Images Configuration Management GitOps & Continuous operations Automated image management Workflow automation ChatOps Integrated solutions & Opinionated pipelines Homework! Day 2 9:00 AM–10:00 AM PDT Fireside Chat with Lyle Murphy, Mark Fisher, Mark Pollack, and Paul Czarkowski
  4. 4 Confidential │ © 2020 VMware, Inc. Introduction

  5. Confidential │ © 2020 VMware, Inc. 5 change ? path

    to production prod code
  6. Confidential │ © 2020 VMware, Inc. 6 change ? path

    to production prod code path to prod the things you need to do to confidently deploy code to production
  7. Confidential │ © 2020 VMware, Inc. 7 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production deploy ?
  8. Confidential │ © 2020 VMware, Inc. 8 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test deploy
  9. Confidential │ © 2020 VMware, Inc. 9 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy
  10. Confidential │ © 2020 VMware, Inc. 10 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy test deploy
  11. Confidential │ © 2020 VMware, Inc. 11 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy test deploy promote
  12. Confidential │ © 2020 VMware, Inc. 12 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy test deploy promote reviews pull request feature branch
  13. Confidential │ © 2020 VMware, Inc. 13 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch
  14. Confidential │ © 2020 VMware, Inc. 14 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain
  15. 15 Confidential │ © 2020 VMware, Inc. Demo Preview

  16. Confidential │ © 2020 VMware, Inc. 16 change demo implementation

    prod code test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain
  17. Confidential │ © 2020 VMware, Inc. 17 change demo implementation

    prod code test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain kubernetes infrastructure as code self-healing extensible api
  18. Confidential │ © 2020 VMware, Inc. 18 change demo implementation

    prod code test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain git source of truth version control pull/merge request flows triggers
  19. Confidential │ © 2020 VMware, Inc. 19 change demo implementation

    prod code test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain gitops declarative desired state continuous operations
  20. Confidential │ © 2020 VMware, Inc. 20 test change prod

    code package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain demo implementation argo deploy to kubernetes detect/repair divergence
  21. Confidential │ © 2020 VMware, Inc. 21 test change prod

    code package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain demo implementation tekton pipelined workflows
  22. Confidential │ © 2020 VMware, Inc. 22 test change prod

    code package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain demo implementation kpack build images autonomous rebuilds patch OS at scale
  23. Confidential │ © 2020 VMware, Inc. 23 App Git Repo

    Code change Docker Hub Dockerfile docker build & push kubectl apply manifests baseline
  24. Confidential │ © 2020 VMware, Inc. 24 App Git Repo

    Code change Docker Hub Dockerfile docker build & push kubectl apply manifests deployment artifact Image artifact
  25. 25 Confidential │ © 2020 VMware, Inc. Image as the

    Artifact
  26. Confidential │ © 2020 VMware, Inc. + Libs/Packages + Runtime/Middleware

    + Container OS Libs/Packages + Runtime/Middleware + VM Guest OS Kubernetes + Host OS Build Deploy App Artifact Code context
  27. Confidential │ © 2020 VMware, Inc. Package dependencies with application.

    Standardize application packaging and runtime environment. HOW App and all dependencies Image Container build run deployment artifact runtime instance WHY Deploy & run software in a repeatable and reliable manner across computers. containerization
  28. 28 Confidential │ © 2020 VMware, Inc. Building Images Demo

  29. Confidential │ © 2020 VMware, Inc. Tool that makes buildpack

    functionality available to end-users. Simply stated: We interact with a platform in order to use buildpacks. Components that provide runtime support for applications. More generally: Modular way of adding arbitrary content and behavior into an image, while ensuring that it's manageable, auditable, repeatable, and reliable. Platform Buildpacks
  30. Confidential │ © 2020 VMware, Inc. 30 • CNCF Sandbox

    project initiated by Pivotal and Heroku in 2018 ◦ Contributors include Google, Microsoft, and others • Well-defined platform-to-buildpack contract to take source code and output OCI images • Focus on how to orchestrate builds, not how to run an app • Unified standard to enable ecosystem of platforms and modular buildpacks • Optimize for fast rebuilds, minimal data transfer, and efficient OS rebasing Cloud Native Buildpacks (CNB)
  31. Confidential │ © 2020 VMware, Inc. 31 App Git Repo

    Code change Docker Hub Image kubectl apply dev manifests deployment dev Deploy
  32. 32 Confidential │ © 2020 VMware, Inc. Deployment Demo

  33. 33 Confidential │ © 2020 VMware, Inc. Configuration Management

  34. Confidential │ © 2020 VMware, Inc. 34 App Git Repo

    Code change Docker Hub Image kubectl apply dev manifests code duplication dev
  35. Confidential │ © 2020 VMware, Inc. 35 App Git Repo

    Code change Docker Hub Image kubectl apply dev manifests manual build & deploy dev prod
  36. Confidential │ © 2020 VMware, Inc. 36 App Git Repo

    Code change Docker Hub Image kubectl apply dev manifests manual build & deploy dev prod prod manifests
  37. Confidential │ © 2020 VMware, Inc. 37 App Git Repo

    Code change Docker Hub Image kubectl apply dev manifests manual build & deploy dev prod prod manifests
  38. Confidential │ © 2020 VMware, Inc. 38 Does one thing

    well Cleanly separates static resources (fixed), the resource changes (overlay), and the config that combines them (kustomize) Kubernetes native configuration management Kustomize • ConfigMap lifecycle mgmt • Part of kubectl • Simplicity • Transformers • Not every part of the resources are “selectable” for changes
  39. Confidential │ © 2020 VMware, Inc. 39 App Git Repo

    Code change Docker Hub Image kubectl apply dev overlays configuration customization dev prod prod overlays base manifests
  40. 40 Confidential │ © 2020 VMware, Inc. Configuration Management Demo

  41. Confidential │ © 2020 VMware, Inc. 41 Primarily a Package

    Manager (Charts), used for configuration customization as well Parameterized kubernetes resources + values.yml files for different environments Lots of {{-if / else}} switches The Kubernetes Package Manager Helm • Excellent for deploying OTS software • Unreadable GoLang templating (example) • Mandatory semver • Not great for CD • Non-declarative by default
  42. Confidential │ © 2020 VMware, Inc. 42 App Git Repo

    Code change Docker Hub Image kubectl apply dev manifests manual build & deploy dev prod prod manifests
  43. Confidential │ © 2020 VMware, Inc. 43 App Git Repo

    Code change Docker Hub Image kubectl apply dev overlays declarative configuration dev prod prod overlays base manifests
  44. Confidential │ © 2020 VMware, Inc. 44 App Git Repo

    Code change Docker Hub Image kubectl apply dev overlays declarative configuration dev prod prod overlays base manifests Desired state
  45. 45 Confidential │ © 2020 VMware, Inc. GitOps

  46. Confidential │ © 2020 VMware, Inc. 46 #1. The entire

    system described declaratively. Kubernetes is just one example of many modern cloud native tools that are “declarative” and that can be treated as code. Declarative means that configuration is guaranteed by a set of facts instead of by a set of instructions. With your application’s declarations versioned in Git, you have a single source of truth. Your apps can then be easily deployed and rolled back to and from Kubernetes. And even more importantly, when disaster strikes, your cluster’s infrastructure can also be dependably and quickly reproduced. #2. The canonical desired system state versioned in Git. With the declaration of your system stored in a version control system, and serving as your canonical source of truth, you have a single place from which everything is derived and driven. This trivializes rollbacks; where you can use a `Git revert` to go back to your previous application state. With Git’s excellent security guarantees, you can also use your SSH key to sign commits that enforce strong security guarantees about the authorship and provenance of your code. #3. Approved changes that can be automatically applied to the system. Once you have the declared state kept in Git, the next step is to allow any changes to that state to be automatically applied to your system. What's significant about this is that you don't need cluster credentials to make a change to your system. With GitOps, there is a segregated environment of which the state definition lives outside. This allows you to separate what you do and how you're going to do it. #4. Software agents to ensure correctness and alert on divergence. Once the state of your system is declared and kept under version control, software agents can inform you whenever reality doesn’t match your expectations. The use of agents also ensures that your entire system is self-healing. And by self-healing, we don’t just mean when nodes or pods fail—those are handled by Kubernetes—but in a broader sense, like in the case of human error. In this case, software agents act as the feedback and control loop for your operations. Four Principles of GitOps GitOps
  47. Confidential │ © 2020 VMware, Inc. 47 INSTRUCTIONS 1. From

    city center, turn onto Route 4 north. 2. At the traffic circle, take the first exit 3. At the first light, turn right. 4. Take the first available right turn. 5. At the traffic circle, start in the left lane and take the third exit. 6. The library is the first building on that road. How to get to the library? Imperative vs. Declarative FACTS • The library is located at 10 Community Way East Greenbush, NY 12061 United States uninvolved instructor, smart engine can recover from any starting point smart instructor, dumb engine must begin at starting point
  48. Confidential │ © 2020 VMware, Inc. 48 IMPERATIVE • kubectl

    create … • kubectl run … • kubectl expose … • kubectl edit … • kubectl patch ... • kubectl label … • kubectl scale … • kubectl annotate … How to get to the desired state? Imperative vs. Declarative DECLARATIVE • kubectl apply … Controllers are the smart engines that converge running resources to desired state ✓ Great for creating reproducible deployments ✓ Great for creating yamls, troubleshooting, learning, experimentation
  49. Confidential │ © 2020 VMware, Inc. 49 #1. The entire

    system described declaratively. Kubernetes is just one example of many modern cloud native tools that are “declarative” and that can be treated as code. Declarative means that configuration is guaranteed by a set of facts instead of by a set of instructions. With your application’s declarations versioned in Git, you have a single source of truth. Your apps can then be easily deployed and rolled back to and from Kubernetes. And even more importantly, when disaster strikes, your cluster’s infrastructure can also be dependably and quickly reproduced. #2. The canonical desired system state versioned in Git. With the declaration of your system stored in a version control system, and serving as your canonical source of truth, you have a single place from which everything is derived and driven. This trivializes rollbacks; where you can use a `Git revert` to go back to your previous application state. With Git’s excellent security guarantees, you can also use your SSH key to sign commits that enforce strong security guarantees about the authorship and provenance of your code. #3. Approved changes that can be automatically applied to the system. Once you have the declared state kept in Git, the next step is to allow any changes to that state to be automatically applied to your system. What's significant about this is that you don't need cluster credentials to make a change to your system. With GitOps, there is a segregated environment of which the state definition lives outside. This allows you to separate what you do and how you're going to do it. #4. Software agents to ensure correctness and alert on divergence. Once the state of your system is declared and kept under version control, software agents can inform you whenever reality doesn’t match your expectations. The use of agents also ensures that your entire system is self-healing. And by self-healing, we don’t just mean when nodes or pods fail—those are handled by Kubernetes—but in a broader sense, like in the case of human error. In this case, software agents act as the feedback and control loop for your operations. Four Principles of GitOps GitOps
  50. Confidential │ © 2020 VMware, Inc. 50 ➔ Code vs

    configuration ➔ Separation of access, cleaner audit logs ➔ Enables modular pipelines (“elbow joints”) ➔ Trigger action based on different life cycles ➔ Makes sense for coupled deployments comprised out of multiple repositories Separate repositories
  51. Confidential │ © 2020 VMware, Inc. 51 #1. The entire

    system described declaratively. Kubernetes is just one example of many modern cloud native tools that are “declarative” and that can be treated as code. Declarative means that configuration is guaranteed by a set of facts instead of by a set of instructions. With your application’s declarations versioned in Git, you have a single source of truth. Your apps can then be easily deployed and rolled back to and from Kubernetes. And even more importantly, when disaster strikes, your cluster’s infrastructure can also be dependably and quickly reproduced. #2. The canonical desired system state versioned in Git. With the declaration of your system stored in a version control system, and serving as your canonical source of truth, you have a single place from which everything is derived and driven. This trivializes rollbacks; where you can use a `Git revert` to go back to your previous application state. With Git’s excellent security guarantees, you can also use your SSH key to sign commits that enforce strong security guarantees about the authorship and provenance of your code. #3. Approved changes that can be automatically applied to the system. Once you have the declared state kept in Git, the next step is to allow any changes to that state to be automatically applied to your system. What's significant about this is that you don't need cluster credentials to make a change to your system. With GitOps, there is a segregated environment of which the state definition lives outside. This allows you to separate what you do and how you're going to do it. #4. Software agents to ensure correctness and alert on divergence. Once the state of your system is declared and kept under version control, software agents can inform you whenever reality doesn’t match your expectations. The use of agents also ensures that your entire system is self-healing. And by self-healing, we don’t just mean when nodes or pods fail—those are handled by Kubernetes—but in a broader sense, like in the case of human error. In this case, software agents act as the feedback and control loop for your operations. Principles of GitOps GitOps
  52. Confidential │ © 2020 VMware, Inc. 52 #1. The entire

    system described declaratively. Kubernetes is just one example of many modern cloud native tools that are “declarative” and that can be treated as code. Declarative means that configuration is guaranteed by a set of facts instead of by a set of instructions. With your application’s declarations versioned in Git, you have a single source of truth. Your apps can then be easily deployed and rolled back to and from Kubernetes. And even more importantly, when disaster strikes, your cluster’s infrastructure can also be dependably and quickly reproduced. #2. The canonical desired system state versioned in Git. With the declaration of your system stored in a version control system, and serving as your canonical source of truth, you have a single place from which everything is derived and driven. This trivializes rollbacks; where you can use a `Git revert` to go back to your previous application state. With Git’s excellent security guarantees, you can also use your SSH key to sign commits that enforce strong security guarantees about the authorship and provenance of your code. #3. Approved changes that can be automatically applied to the system. Once you have the declared state kept in Git, the next step is to allow any changes to that state to be automatically applied to your system. What's significant about this is that you don't need cluster credentials to make a change to your system. With GitOps, there is a segregated environment of which the state definition lives outside. This allows you to separate what you do and how you're going to do it. #4. Software agents to ensure correctness and alert on divergence. Once the state of your system is declared and kept under version control, software agents can inform you whenever reality doesn’t match your expectations. The use of agents also ensures that your entire system is self-healing. And by self-healing, we don’t just mean when nodes or pods fail—those are handled by Kubernetes—but in a broader sense, like in the case of human error. In this case, software agents act as the feedback and control loop for your operations. Principles of GitOps GitOps
  53. Confidential │ © 2020 VMware, Inc. 53 #1. The entire

    system described declaratively. Kubernetes is just one example of many modern cloud native tools that are “declarative” and that can be treated as code. Declarative means that configuration is guaranteed by a set of facts instead of by a set of instructions. With your application’s declarations versioned in Git, you have a single source of truth. Your apps can then be easily deployed and rolled back to and from Kubernetes. And even more importantly, when disaster strikes, your cluster’s infrastructure can also be dependably and quickly reproduced. #2. The canonical desired system state versioned in Git. With the declaration of your system stored in a version control system, and serving as your canonical source of truth, you have a single place from which everything is derived and driven. This trivializes rollbacks; where you can use a `Git revert` to go back to your previous application state. With Git’s excellent security guarantees, you can also use your SSH key to sign commits that enforce strong security guarantees about the authorship and provenance of your code. #3. Approved changes that can be automatically applied to the system. Once you have the declared state kept in Git, the next step is to allow any changes to that state to be automatically applied to your system. What's significant about this is that you don't need cluster credentials to make a change to your system. With GitOps, there is a segregated environment of which the state definition lives outside. This allows you to separate what you do and how you're going to do it. #4. Software agents to ensure correctness and alert on divergence. Once the state of your system is declared and kept under version control, software agents can inform you whenever reality doesn’t match your expectations. The use of agents also ensures that your entire system is self-healing. And by self-healing, we don’t just mean when nodes or pods fail—those are handled by Kubernetes—but in a broader sense, like in the case of human error. In this case, software agents act as the feedback and control loop for your operations. Principles of GitOps GitOps
  54. Confidential │ © 2020 VMware, Inc. 54 App Git Repo

    Code change Docker Hub Image kubectl apply dev overlays dev prod prod overlays base manifests Desired state declarative configuration
  55. Confidential │ © 2020 VMware, Inc. 55 App Git Repo

    Code change Docker Hub Image kubectl apply dev overlays dev prod prod overlays base manifests Desired state Desired state assurance Argo CD state reconciliation
  56. 56 Confidential │ © 2020 VMware, Inc. GitOps Demo

  57. 57 Confidential │ © 2020 VMware, Inc. Continuous Operations Demo

  58. Confidential │ © 2020 VMware, Inc. 58 Concept of Application

    (set of Kubernetes resources) Uses CRDs to store this information Focused on enterprise application deployments Provides UI with enterprise authentication capabilities ArgoCD
  59. Confidential │ © 2020 VMware, Inc. 59 Doesn’t have the

    Application context, Flux is used primarily to bootstrap clusters where the application layer hasn’t necessarily been deployed yet Can scan image repositories for new versions and update the cluster automatically Intentionally doesn’t provide a UI Weave Flux
  60. Confidential │ © 2020 VMware, Inc. 60 Moving common components

    into a separate repository Both projects will start to depend on this repository internally Best of both worlds Argo Flux GitOps Engine First focus is Kubernetes integration logic, next up will be Git integrations Eventually one user-facing solution will emerge Will be part of the CNCF
  61. Confidential │ © 2020 VMware, Inc. 61 App Git Repo

    Code change Docker Hub Image dev overlays state reconciliation dev prod prod overlays base manifests Desired state Desired state assurance Argo CD
  62. Confidential │ © 2020 VMware, Inc. 62 kpack App Git

    Repo Code change dev overlays image management dev prod prod overlays base manifests Desired state Desired state assurance Argo CD Autonomous image management Image
  63. 63 Confidential │ © 2020 VMware, Inc. 5 min break

  64. Confidential │ © 2020 VMware, Inc. 64 kpack App Git

    Repo Code change dev overlays image management dev prod prod overlays base manifests Desired state Desired state assurance Argo CD Autonomous image management Image
  65. 65 Confidential │ © 2020 VMware, Inc. Automated Image Management

  66. Confidential │ © 2020 VMware, Inc. builder image buildpacks platform

    run image * Cloud Native Buildpacks
  67. Confidential │ © 2020 VMware, Inc. pack builder image buildpacks

    platform run image * Cloud Native Buildpacks
  68. Confidential │ © 2020 VMware, Inc. pack kpack Spring Boot

    Tekton Tanzu Build Service az acr pack Google Cloud Run Button builder image buildpacks platform run image * Platform Ecosystem Buildpacks Ecosystem Cloud Native Buildpacks
  69. Confidential │ © 2020 VMware, Inc. pack kpack Spring Boot

    Tekton Tanzu Build Service az acr pack Google Cloud Run Button builder image buildpacks platform run image * Platform Ecosystem Buildpacks Ecosystem Cloud Native Buildpacks
  70. Confidential │ © 2020 VMware, Inc. 70 kpack: Buildpacks as

    a Service • Automatically rebuild images based on changes in inputs • Efficiently rebase OS layers with a CVE hotfix (new run-image) • Consistent, repeatable, transparent and secure builds -- at scale Hosted, Centralized, Automated
  71. Confidential │ © 2020 VMware, Inc. run image run image

    new run image app/bp layers rebase id1 id2 Rebase - OS CVE Patches Platform
  72. 72 Confidential │ © 2020 VMware, Inc. kpack Demo

  73. Confidential │ © 2020 VMware, Inc. 73 kpack App Git

    Repo Code change dev overlays workflow automation dev prod prod overlays base manifests Argo CD Image ?
  74. Confidential │ © 2020 VMware, Inc. 74 kpack App Git

    Repo Code change dev overlays workflow automation dev prod prod overlays base manifests Argo CD Image Workflow automation Build Test Lint
  75. Confidential │ © 2020 VMware, Inc. 75 kpack App Git

    Repo Code change dev overlays workflow automation dev prod prod overlays base manifests Argo CD Image Workflow automation Build Test Lint ?
  76. Confidential │ © 2020 VMware, Inc. 76 kpack App Git

    Repo Code change dev overlays workflow automation dev prod prod overlays base manifests Argo CD Image Workflow automation Build Test Lint Promote
  77. 77 Confidential │ © 2020 VMware, Inc. Workflow Automation

  78. Confidential │ © 2020 VMware, Inc. 78 Jenkins Pipeline -

    Stage - Step Concourse Resource - Job - Task Spinnaker Stage - Step - Task CircleCI Workflow - Job - Step Workflow Automation GitLab CI Stage - Job Travis Stage - Job ⬤ ⬤ ⬤
  79. Confidential │ © 2020 VMware, Inc. 79 Jenkins Pipeline -

    Stage - Step Concourse Resource - Job - Task Spinnaker Stage - Step - Task CircleCI Workflow - Job - Step Workflow Automation GitLab CI Stage - Job Travis Stage - Job Tekton Pipeline - Task - Step ⬤ ⬤ ⬤
  80. Confidential │ © 2020 VMware, Inc. 80 Generic workflow engine

    utilizing CRDs, happens to be really good at CD with Kubernetes Standardization of pipelines native to Kubernetes Provides other building blocks than pipelines as well Kubernetes-native Workflow Engine Tekton
  81. Confidential │ © 2020 VMware, Inc. 81 Event Listener Trigger

    Template Pipeline Run Trigger Binding Pipeline Run Pipeline Pipeline Run Task Task ⬤ ⬤ ⬤ Task Task Run Task Run Task Run Task Run Task Run Task Run Tekton Pipelines Task Run Task Run Task Run ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ Step ⬤ ⬤ ⬤ Step Step ⬤ ⬤ ⬤ Step Step ⬤ ⬤ ⬤ Step Pipeline Resource Pipeline Resource Pipeline Resource ⬤ ⬤ ⬤ Icon: Mihail Zhukov
  82. Confidential │ © 2020 VMware, Inc. 82 App Git Repo

    Code change Tekton Build Event Listener Trigger Template Trigger Binding Pipeline Pipeline Run Golang Test Task Golang Lint Task Update Revision Task Git Clone Task Argo CD Golang Test Task Run Golang Lint Task Run Update Revision Task Run Git Clone Task Run Ops Git Repo Image App kpack Builder Image Build Docker Hub revision: cf362c7 Git Clone Task Run build
  83. Confidential │ © 2020 VMware, Inc. 83 Tekton Promote Event

    Listener Trigger Template Trigger Binding Pipeline Pipeline Run Ops Dev Task Run Git Clone Task Argo CD Git Clone Task Run Ops Dev Task Run Ops Git Repo Dev App newTag: x.y.z Docker Hub deploy
  84. 84 Confidential │ © 2020 VMware, Inc. Workflow Automation Demo

  85. Confidential │ © 2020 VMware, Inc. 85 App Git Repo

    Code change Tekton Build Event Listener Trigger Template Trigger Binding Pipeline Pipeline Run Golang Test Task Golang Lint Task Update Revision Task Git Clone Task Argo CD Golang Test Task Run Golang Lint Task Run Update Revision Task Run Git Clone Task Run Ops Git Repo Image App kpack Builder Image Build Docker Hub revision: cf362c7 Git Clone Task Run build You are here
  86. Confidential │ © 2020 VMware, Inc. 86 Tekton Promote Event

    Listener Trigger Template Trigger Binding Pipeline Pipeline Run Ops Dev Task Run Git Clone Task Argo CD Git Clone Task Run Ops Dev Task Run Ops Git Repo Dev App newTag: x.y.z Docker Hub deploy
  87. Confidential │ © 2020 VMware, Inc. 87 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain Collaboration
  88. 88 Confidential │ © 2020 VMware, Inc. ChatOps

  89. Confidential │ © 2020 VMware, Inc. 89 “A collaboration model

    that helps to connect people, process, tools, and automation into a transparent workflow.” - GitHub ChatOps
  90. Confidential │ © 2020 VMware, Inc. 90 Eventing engine Can

    receive webhook calls for e.g. PRs Can trigger Tekton pipelines and report back the status to the PRs Supports a wide range of ChatOps commands Can be complex to set up Only supports github.com Jenkins X’s Lighthouse is a fork with added support for GitHub Enterprise, GitLab and BitBucket Server, with a simpler setup and less moving parts Kubernetes-native eventing engine Prow
  91. 91 Confidential │ © 2020 VMware, Inc. Prow Demo

  92. 92 Confidential │ © 2020 VMware, Inc. Integrated Solutions

  93. Confidential │ © 2020 VMware, Inc. 93 App Git Repo

    Code change Tekton Argo CD Ops Git Repo kpack Docker Hub eventual demo path Ops Git Repo Tekton Argo CD
  94. Confidential │ © 2020 VMware, Inc. 94 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain
  95. Confidential │ © 2020 VMware, Inc. 95 Designed to run

    on and target Kubernetes Quickstarts & buildpacks Uses Prow (Lighthouse), Draft and Tekton internally Supports promotion flows with on-demand environments Hides Tekton’s complexity, but provides its flexibility Jenkins Kubernetes edition Jenkins X
  96. 96 Confidential │ © 2020 VMware, Inc. Jenkins X Demo

  97. Confidential │ © 2020 VMware, Inc. 97 Keep it simple,

    stupid People over Processes over Tools
  98. Confidential │ © 2020 VMware, Inc. 98 Keep it simple,

    stupid People over Processes over Tools
  99. Confidential │ © 2020 VMware, Inc. 99 Powerful turn-key multi-cloud

    deployment tool Advanced deployment strategies including automated canary analysis Keeps track of state of your deployments and uses it to drive pipelines Offers composite UI across clouds, clusters, regions and deployment platforms Complex to set up and a platform on its own to maintain Lacks declarative configuration of pipelines Deployment platform for fast and safe deployments Spinnaker
  100. Confidential │ © 2020 VMware, Inc. 100 GitLab is a

    comprehensive SDLC platform, containing a Git server, an image registry, issue tracker, application monitoring, security scanning, … The differentiating feature is Auto DevOps It automatically sets up the complete pipeline and necessary integrations • detects the language of the code automatically builds • tests and measures code quality • scans for potential vulnerabilities, security flaws and licensing issues • packages • instruments (for monitoring in real-time) and deploys the application It provides an opinionated pipeline out-of-the-box Jenkins Kubernetes edition GitLab CI
  101. 101 Confidential │ © 2020 VMware, Inc. Opinionated Pipelines

  102. Confidential │ © 2020 VMware, Inc. 102 Avoids boilerplate code

    which is the same for 80% of the projects by abstracting it. Examples of opinionated solutions: • Spring Boot provides an opinionated interpretation of the Spring framework abstracted in libraries • Cloud Native Buildpacks provide an opinionated way of building and containerizing your application • Spinnaker provides opinionated advanced deployment strategies • Jenkins X quickstart uses Draft packs to provide an opinionated way of bootstrapping your pipeline • GitLab’s Auto DevOps provides an opinionated full-featured end-to-end pipeline, including support for Cloud Native Buildpacks Characteristics Opinionated Pipelines
  103. Confidential │ © 2020 VMware, Inc. 103 change path to

    production prod code path to prod the things you need to do to confidently deploy code to production test package deploy test deploy promote rollback test strategic rollout reviews pull request feature branch declared state maintain
  104. 104 Confidential │ © 2020 VMware, Inc. Homework

  105. Confidential │ © 2020 VMware, Inc.

  106. Confidential │ © 2020 VMware, Inc.

  107. 107 Confidential │ © 2020 VMware, Inc. www.katacoda.com/ springone-tour-2020-cicd Free

    Self-guided Course gitter.im/pivotal-cf/s1t-2020-cicd
  108. 108 Confidential │ © 2020 VMware, Inc. www.katacoda.com/ springone-tour-2020-cicd Free

    Self-guided Course gitter.im/pivotal-cf/s1t-2020-cicd
  109. Confidential │ © 2020 VMware, Inc. Thank You See you

    tomorrow! Cora Iberkleid Developer Advocate Andreas Evers Senior Solutions Architect
  110. Paul Czarkowski Technical Advocate VMware Tanzu Lyle Murphy Product Manager,

    Tanzu Developer Ecosystem VMware Mark Fisher Sr. Staff Engineer Spring Mark Pollack Sr. Staff Engineer Spring