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.
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
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. 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. 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
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. • We wrote a tool
• Simplified manifest
creation
• Made an attempt at
reusability
• Didn’t really improve
authoring
Artisanal Small Batch
Bundles
38. 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!
39. What’s next for Porter…
• Update to current spec
• Finish some core functionality
• We want to release a stable version this summer
• More mixins!
41. 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
42. 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