Threeport is Open Sourced
By Richard Lander, CTO | Dec 12, 2023
The source code for Threeport is now public. In its current form, the project has been under construction since March and, in earlier iterations, since early 2022. We're very excited about the features we've completed so far and are even more excited about making it available to the community for input, feedback and evaluation.
What Is Threeport For?
Threeport provides two primary things:
- For Developers: A simplified, curated experience for deploying containerized workloads to the cloud. Threeport manages the Kubernetes clusters, the deployment of the workloads, the provisioning of managed service dependencies such as RDS and S3 on AWS as well as the installation and configuration of containerized support services that run on Kubernetes such as network ingress routing, TLS termination and DNS record management. This is perfect for developers working on software that fits common deployment patterns.
- For Platform Engineers: The tools to extend Threeport and compose an enterprise grade application platform. For software that has grown in complexity to meet specialized requirements, teams need a way to build custom delivery solutions that can take advantage of the existing primitives and controllers in Threeport.
We achieve this using an extensible control plane that manages all of an application's dependencies, including the cloud infrastructure. The source code can be found on Github and, if you'd like to try it out or learn more about Threeport's architecture, visit our documentation.
Current State
With the current 0.3 release of Threeport you can:
- Install a Threeport control plane with a single command. Threeport is installed on Kubernetes and, today, you can install locally using kind or in AWS on an EKS cluster.
- Manage the Kubernetes clusters for your workloads. With the current release, we support managing any number of EKS clusters in any region supported by AWS.
- Deploy your workloads to Kubernetes. If you have a Kubernetes manifest for a workload, you can deploy any number of instances of that workload to any of the clusters managed by Threeport.
- Declare managed service dependencies. Today you can manage AWS RDS databases and S3 buckets as dependencies of your app. Simply declare those dependencies in your Threeport workload config and Threeport will provision them along with your app and connect them to your running containers.
- Declare support service dependencies. If your app needs ingress networking, TLS termination or a DNS record managed in Route53, declare those dependencies and Threeport will install the necessary components on your Kubernetes cluster and configure them for your workload.
- Manage Threeport control planes. If you have a need to provision distinct Threeport control planes for different purposes, you can do that with Threeport itself.
You can see a demo of the above features on our Introducing Threeport YouTube video.
What's Next
For version 0.4 we have two primary features on the roadmap.
- Observability: We are currently working on metrics collection, log aggregation and visibility so that develoers and operators have the insights they need to gain intelligence on their workloads. Some of this will also form the backbone for resource optimization controllers we add in the future.
- Threeport SDK: We have been using a tool we've built in Threeport called threeport-codegen to accelerate Threeport API and controller development. We will be releasing this as threeport-sdk to be available to the community to rapidly build their own extensions to Threeport.
If you have any questions or feedback for the maintainers, hit us up in Discord.