Porter: The Devil is in the Deployments
Carolyn Van Slyck
Talk about where deployments can be difficult still
Where we are trying to improve them
Overview
What is Porter
What problems it solves
When bundles may help
When they probably won't
Instead of teaching the technology first, let's figure out if it's relevant to you
What Problems Do Bundles Solve?
Package deployments into a versioned distributable artifact
Reduce complexity of deployments for the people running them
Provide tools and workflows for secure, tamper-proof deployments
* Not just one application. Suite. Infra. Deps. Tools. Scripts. Creds. Params.
* The orchestration of all of this that makes a sucessful, repeatable deployment
that anyone can run.
What is Porter?
porter.sh
Package your application, client tools, configuration, and deployment logic
into an installer that you can distribute and run with a single command 🎩✨
Using Porter as an example because it's one of the most popular OSS CNAB tools
in the CNCF that can demonstrate the full breadth of the CNAB spec
Bundles encapsulate the deployment logic
Example: Create and configure a new team cluster
Clone a repository? The app's or a devops one?
Set environment variables, and save config files to specific locations?
Call multiple helm and terraform commands?
Or a custom script?
Or a utility docker container with a bunch of flags?
Every deployment is a snowflake ❄️
May be copying values between tools, or running multiple scripts commands
$ porter install staging-app --tag myorg/myapp:v1.17.1 --cred staging
I only need the bundle tag
I don't need to be familar with the app or tooling
This is much less intimidating to learn 😅
all workflow, scripts... in the bundle
Always the same regardless of the stack, tools, team
* docker registry, credentials, parameters -> explain
Knowing that everything has been taken care of and is IN THE BUNDLE
makes me feel like less is riding on me
Distributed via OCI Registries
No new infra to support
Easy to find
Familiar 🐳
Bundle! Explain yourself
$ porter explain --tag myorg/myapp:v1.17.1
Name: myapp
Description: A really good application
Version: v1.17.1
Credentials:
Name Description Required
kubeconfig A kubeconfig with cluster admin true
No parameters defined
No outputs defined
Actions:
Name Description Modifies Installation Stateless
maintenance-mode Pauses the app and puts up a cute sign true false
Great for when I haven't deployed the bundle before, or it's been a while
Secret management that I can manage
Lots of solutions out there for secrets, and yet how many of us have
plaintext secrets in env vars on our latops RIGHT NOW?
We do what's easiest
Example: Create and configure a new team cluster
Read docs to know what credentials are required
Use local environment variables, files or if lucky a remote secret store
Specify credentials differently based on tools used
Cleanup local machine after deployment
* Varies widely based on your tooling and configuration
* I'm describing what's easiest and what I see devs do
porter credentials generate walks you through where to find credentials
porter install injects credentials just-in-time into the running bundle
Credentials are destroyed with the bundle when it is done
bundles execute in a container, the credentials are not exposed outside. The container is destroyed when the bundle completes.
I'm super excited about this because I'm actually using this on my dev machines and it's making
my life easier.
Why companies like bundles
Deploy across an airgap
Repeatable deployments
Supply chain security
Metadata for analysis and enforcement
Bundles can jump an airgap
Production network isn't connected network that has the deployment artifacts
$ porter archive myapp.tgz --tag staging/myapp:v1.17.1
# physically move myapp.tgz across airgap
$ porter publish --archive myapp.tgz --tag production/myapp:v1.17.1
everything goes into tgz
publish relocates everything on the other side
Porter in the Wild
Production
Azure Marketplace / ARC
Azure Trusted Research Environments
Azure Service Operator
F5
Ernst and Young
In Discussion
Microsoft 365 Security
Azure Customer Workload Validation
Price Waterhouse Cooper
HP Container Marketplace
Try it out @ getporter.org/quickstart
Try a quickstart
Watch a video to learn more
If you have ideas and want to shape how bundles work, nows the time
Thank you!
My Little Pony™️ belongs to Hasbro.