Porter is a Kubernetes-powered PaaS system that runs in your own cloud provider. porter tries to bring the Heroku experience to your own AWS/GCP account while upgrading your infrastructure to Kubernetes.
A traditional PaaS like Heroku is great for minimizing unnecessary DevOps efforts, but it doesn’t provide enough flexibility as applications grow. Custom network rules, resource constraints, and cost are common reasons for developers to move their applications away from Heroku.
Porter brings the simplicity of traditional PaaS to your own cloud provider while retaining the configurability of Kubernetes. built on top of the popular Kubernetes package manager helm and compatible with standard Kubernetes management tools like kubectl, Porter is ready for mature DevOps efforts from the start ready for mature DevOps work from the start. Deploy your application to your cloud provider with just a few clicks, and Porter will configure and manage the underlying infrastructure for you - just point to your repository and Porter will handle the rest, from building your application to scaling it automatically.
At the bottom, Porter runs on top of Kubernetes. Porter configures and manages each cloud provider’s native Kubernetes product (EKS on AWS, GKE on GCP, and Digital Ocean Kubernetes) while abstracting away all the complexity.
You may find Porter too complex to run on top of Kubernetes, and Kubernetes can be a bit of a gateway for teams that don’t understand it. You don’t need to know anything about Kubernetes to use Porter beyond a few basic concepts, and Kubernetes happens to be the best underlying layer for delivering a PaaS experience. In fact, most PaaS actually runs on top of Kubernetes, although the details are hidden from end users. If your team is already familiar with Kubernetes, Porter can be an on-premise platform to simplify your existing operations.
- Ability to turn on Kubernetes clusters in your own cloud console with one click: AWS, GCP, Digital Ocean
- Easy deployment of any public or private Docker image
- CI/CD for non-containerized applications using buildpacks
- Heroku-like interface for monitoring application status, logs, and history
- Easy rollback of applications to previously deployed versions
- Zero-downtime deployments and health checks
- Monitor CPU, memory, and network usage for each deployment
- One-click plug-in marketplace (e.g. MongoDB, Redis, PostgreSQL)
For users familiar with Kubernetes and Helm.
- Ability to connect existing Kubernetes clusters directly to Porter for use
- Visualize, deploy and configure Helm Charts through the interface
- In-depth knowledge of releases, including revision history and component diagrams
- Rollback/update existing releases, including editing the original values.yaml file
The easiest way to sign up directly is to use the online cloud service provided by Porter at https://dashboard.getporter.dev/. Then create a project and configure the relevant credentials of your cloud provider and Porter will automatically configure the Kubernetes cluster in your cloud service.
If you don’t have a cloud provider you can also connect to an existing Kubernetes cluster by downloading the Porter CLI tool and connecting the kubeconfig of your existing Kubernetes cluster to Porter.
Once the Kubernetes cluster is configured, you can choose to deploy services that support Web services, Worker and Job tasks.
For example, if you choose a web service, you can choose to deploy a repository if you are connected to GitHub, or you can just specify a Docker image address.
If you are using Porter’s cloud service, a secondary domain name will be automatically added to your application after deployment and the deployed service will be accessible through that address.
If you have Prometheus installed in your cluster, you can also monitor the application.
And it can also be configured to automatically expand and contract the capacity.
If you need to do development testing locally, you can directly Clone the repository code.
Then execute the
make start-dev command to start the service locally, but you need to add the following two environment variables to the
docker/.env file, otherwise it will not work properly after the local start.
More information about Porter can be found in the official documentation at https://docs.porter.run for more information.