Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DCSF19 Porter: an Opinionated CNAB Authoring Experience

90 views

Published on

Jeremy Rickard, Microsoft

When we deploy to the cloud, most of us aren't dealing with just a single cloud provider or even deployment tool. It seems like even the simplest of applications today need load balancers, persistent storage, databases, SSL certificates, and any number of other components. That's even before you get to your own application!

That is a lot to figure out! The Cloud Native Application Bundle specification was created to help solve this problem. CNAB is specifies lots of great things about a bundle and how it is run, but it actually gives you a good deal of freedom in how to actually build that bundle.

Porter, a cloud native package manager built on CNAB, adopts an opinionated approach to make bundle authoring straightforward and approachable.

In this talk, you will learn how Porter makes it easier to author CNAB bundles and manage cloud native applications in the messy imperfect hybrid cloud world that we all live in. You'll also learn some of the issues we encountered that led us to develop Porter, how we addressed them, how you can contribute to Porter's development and how you might build your own tooling on top of the CNAB spec.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

DCSF19 Porter: an Opinionated CNAB Authoring Experience

  1. 1. JEREMY RICKARD Senior Software Engineer, Microsoft Porter: An Opinionated CNAB Authoring Experience
  2. 2. …but what’s a CNAB
  3. 3. Let’s start with a story
  4. 4. You!
  5. 5. Your friend…
  6. 6. Your app….
  7. 7. Your fans…
  8. 8. You Built an App!
  9. 9. It runs happily in your cloud
  10. 10. Your friend wants to run it!
  11. 11. Documentation! 1. Install Kubernetes 2. Download Kubectl 3. Get McGuffin from GitHub 4. Install Node 5. Make sure you have gcc 6. Use npm to build McGuffin 7. Create a Dockerfile 8. Get the latest Docker 9. Push to a public registry 10. Get Helm 11. Start writing templates 12. Install Terraform 13. Use Terraform To Make Infra Part I of VI
  12. 12. http://vignette3.wikia.nocookie.net/spongebob/images/f/f0/Spongebob-patrick-crying.jpg/revision/latest?cb=20140713205315
  13. 13. So you work together….
  14. 14. Your friend is happy. So happy that he tells the internet!
  15. 15. McGuffin gets fans! And they all want to run it..
  16. 16. But nobody wants to do this 1. Install Kubernetes 2. Download Kubectl 3. Get McGuffin from GitHub 4. Install Node 5. Make sure you have gcc 6. Use npm to build McGuffin 7. Create a Dockerfile 8. Get the latest Docker 9. Push to a public registry 10. Get Helm 11. Start writing templates 12. Install Terraform 13. Use Terraform To Make Infra Part I of VI
  17. 17. Containers really helped with shipping your code… Production Environments Docker Trusted Registry Docker UCP Production Environments Version Control Docker UCP Non-Production EnvironmentsDeveloper Machine Datacenter 1 Datacenter 2 Docker Trusted Registry Docker for Docker UCP
  18. 18. But didn’t really solve… 1. Install Kubernetes 2. Download Kubectl 3. Get McGuffin from GitHub 4. Install Node 5. Make sure you have gcc 6. Use npm to build McGuffin 7. Create a Dockerfile 8. Get the latest Docker 9. Push to a public registry 10. Get Helm 11. Start writing templates 12. Install Terraform 13. Use Terraform To Make Infra Part I of VI
  19. 19. This is the problem CNAB wants to solve…
  20. 20. …OK…so..what’s a CNAB
  21. 21. Bundle Descriptor Invocation Image App Image(s)
  22. 22. Invocation Image Install Or Upgrade Params And Creds CNAB Tool Commands
  23. 23. Bundle Author Bundle Consumer Docker Registry
  24. 24. Authoring Bundles
  25. 25. Build ARM Helm Terraform Etc Invocation Image
  26. 26. Bundle Descriptor Write Invocation Image Other Images Parameters Credentials
  27. 27. 1. Write a bash script that understands CNAB verbs 2. Gather all the manifests/etc 3. Write a Dockerfile that installs all the tools needed and calls our script 4. Write the Bundle manifest! Artisanal Hand Crafted Bundles
  28. 28. • We wrote a tool • Simplified manifest creation • Made an attempt at reusability • Didn’t really improve authoring Artisanal Small Batch Bundles
  29. 29. Docker Apps Compose Metadata Parameters $ docker app init Compose $ docker app bundle
  30. 30. What else can we do……..A Wish List • Simplify Authoring • Declarative • General Purpose • Encourage Extensibility • Encourage Reusability
  31. 31. Composable Mixins Declarative Manifest Build Tool Runtime Components
  32. 32. DEMO…..
  33. 33. Bonus Round… • We could actually enable bundle dependencies • Easy to reason about param/creds/outputs • We can provide a vetted set of mixins • Mixins can provide schema • We were able to write a VS Code Extension!
  34. 34. What’s next for Porter… • Update to current spec • Finish some core functionality • We want to release a stable version this summer • More mixins!
  35. 35. So which tool?
  36. 36. Some Parting Thoughts • The ecosystem is getting good tooling • Porter is how we want to build bundles…room for more • Great time to join and help shape the spec • https://github.com/deislabs/cnab-spec
  37. 37. Would you like to know more? https://cnab.io/ https://github.com/deislabs/cnab-spec https://porter.sh https://github.com/deislabs/porter https://github.com/docker/app
  38. 38. Questions!Questions!

×